-
Notifications
You must be signed in to change notification settings - Fork 3.2k
/
generated.proto
1950 lines (1459 loc) · 69.4 KB
/
generated.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
// This file was autogenerated by go-to-protobuf. Do not edit it manually!
syntax = "proto2";
package github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1;
import "k8s.io/api/core/v1/generated.proto";
import "k8s.io/api/policy/v1beta1/generated.proto";
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
import "k8s.io/apimachinery/pkg/util/intstr/generated.proto";
// Package-wide variables from generator "generated".
option go_package = "v1alpha1";
// Amount represent a numeric amount.
// +kubebuilder:validation:Type=number
message Amount {
optional string value = 1;
}
// ArchiveStrategy describes how to archive files/directory when saving artifacts
message ArchiveStrategy {
optional TarStrategy tar = 1;
optional NoneStrategy none = 2;
optional ZipStrategy zip = 3;
}
// Arguments to a template
message Arguments {
// Parameters is the list of parameters to pass to the template or workflow
// +patchStrategy=merge
// +patchMergeKey=name
repeated Parameter parameters = 1;
// Artifacts is the list of artifacts to pass to the template or workflow
// +patchStrategy=merge
// +patchMergeKey=name
repeated Artifact artifacts = 2;
}
// Artifact indicates an artifact to place at a specified path
message Artifact {
// name of the artifact. must be unique within a template's inputs/outputs.
optional string name = 1;
// Path is the container path to the artifact
optional string path = 2;
// mode bits to use on this file, must be a value between 0 and 0777
// set when loading input artifacts.
optional int32 mode = 3;
// From allows an artifact to reference an artifact from a previous step
optional string from = 4;
// ArtifactLocation contains the location of the artifact
optional ArtifactLocation artifactLocation = 5;
// GlobalName exports an output artifact to the global scope, making it available as
// '{{workflow.outputs.artifacts.XXXX}} and in workflow.status.outputs.artifacts
optional string globalName = 6;
// Archive controls how the artifact will be saved to the artifact repository.
optional ArchiveStrategy archive = 7;
// Make Artifacts optional, if Artifacts doesn't generate or exist
optional bool optional = 8;
// SubPath allows an artifact to be sourced from a subpath within the specified source
optional string subPath = 9;
// If mode is set, apply the permission recursively into the artifact if it is a folder
optional bool recurseMode = 10;
// FromExpression, if defined, is evaluated to specify the value for the artifact
optional string fromExpression = 11;
}
// ArtifactLocation describes a location for a single or multiple artifacts.
// It is used as single artifact in the context of inputs/outputs (e.g. outputs.artifacts.artname).
// It is also used to describe the location of multiple artifacts such as the archive location
// of a single workflow step, which the executor will use as a default location to store its files.
message ArtifactLocation {
// ArchiveLogs indicates if the container logs should be archived
optional bool archiveLogs = 1;
// S3 contains S3 artifact location details
optional S3Artifact s3 = 2;
// Git contains git artifact location details
optional GitArtifact git = 3;
// HTTP contains HTTP artifact location details
optional HTTPArtifact http = 4;
// Artifactory contains artifactory artifact location details
optional ArtifactoryArtifact artifactory = 5;
// HDFS contains HDFS artifact location details
optional HDFSArtifact hdfs = 6;
// Raw contains raw artifact location details
optional RawArtifact raw = 7;
// OSS contains OSS artifact location details
optional OSSArtifact oss = 8;
// GCS contains GCS artifact location details
optional GCSArtifact gcs = 9;
}
// ArtifactPaths expands a step from a collection of artifacts
message ArtifactPaths {
// Artifact is the artifact location from which to source the artifacts, it can be a directory
optional Artifact artifact = 1;
}
// ArtifactRepository represents an artifact repository in which a controller will store its artifacts
message ArtifactRepository {
// ArchiveLogs enables log archiving
optional bool archiveLogs = 1;
// S3 stores artifact in a S3-compliant object store
optional S3ArtifactRepository s3 = 2;
// Artifactory stores artifacts to JFrog Artifactory
optional ArtifactoryArtifactRepository artifactory = 3;
// HDFS stores artifacts in HDFS
optional HDFSArtifactRepository hdfs = 4;
// OSS stores artifact in a OSS-compliant object store
optional OSSArtifactRepository oss = 5;
// GCS stores artifact in a GCS object store
optional GCSArtifactRepository gcs = 6;
}
// +protobuf.options.(gogoproto.goproto_stringer)=false
message ArtifactRepositoryRef {
// The name of the config map. Defaults to "artifact-repositories".
optional string configMap = 1;
// The config map key. Defaults to the value of the "workflows.argoproj.io/default-artifact-repository" annotation.
optional string key = 2;
}
// +protobuf.options.(gogoproto.goproto_stringer)=false
message ArtifactRepositoryRefStatus {
optional ArtifactRepositoryRef artifactRepositoryRef = 1;
// The namespace of the config map. Defaults to the workflow's namespace, or the controller's namespace (if found).
optional string namespace = 2;
// If this ref represents the default artifact repository, rather than a config map.
optional bool default = 3;
// The repository the workflow will use. This maybe empty before v3.1.
optional ArtifactRepository artifactRepository = 4;
}
// ArtifactoryArtifact is the location of an artifactory artifact
message ArtifactoryArtifact {
// URL of the artifact
optional string url = 1;
optional ArtifactoryAuth artifactoryAuth = 2;
}
// ArtifactoryArtifactRepository defines the controller configuration for an artifactory artifact repository
message ArtifactoryArtifactRepository {
optional ArtifactoryAuth artifactoryAuth = 1;
// RepoURL is the url for artifactory repo.
optional string repoURL = 2;
}
// ArtifactoryAuth describes the secret selectors required for authenticating to artifactory
message ArtifactoryAuth {
// UsernameSecret is the secret selector to the repository username
optional k8s.io.api.core.v1.SecretKeySelector usernameSecret = 1;
// PasswordSecret is the secret selector to the repository password
optional k8s.io.api.core.v1.SecretKeySelector passwordSecret = 2;
}
// Backoff is a backoff strategy to use within retryStrategy
message Backoff {
// Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h")
optional string duration = 1;
// Factor is a factor to multiply the base duration after each failed retry
optional k8s.io.apimachinery.pkg.util.intstr.IntOrString factor = 2;
// MaxDuration is the maximum amount of time allowed for the backoff strategy
optional string maxDuration = 3;
}
// Cache is the configuration for the type of cache to be used
message Cache {
// ConfigMap sets a ConfigMap-based cache
optional k8s.io.api.core.v1.ConfigMapKeySelector configMap = 1;
}
// ClusterWorkflowTemplate is the definition of a workflow template resource in cluster scope
// +genclient
// +genclient:noStatus
// +genclient:nonNamespaced
// +kubebuilder:resource:scope=Cluster,shortName=clusterwftmpl;cwft
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
message ClusterWorkflowTemplate {
optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
optional WorkflowSpec spec = 2;
}
// ClusterWorkflowTemplateList is list of ClusterWorkflowTemplate resources
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
message ClusterWorkflowTemplateList {
optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
repeated ClusterWorkflowTemplate items = 2;
}
message Condition {
// Type is the type of condition
optional string type = 1;
// Status is the status of the condition
optional string status = 2;
// Message is the condition message
optional string message = 3;
}
message ContainerNode {
optional k8s.io.api.core.v1.Container container = 1;
repeated string dependencies = 2;
}
message ContainerSetRetryStrategy {
// Duration is the time between each retry, examples values are "300ms", "1s" or "5m".
// Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
optional string duration = 1;
// Nbr of retries
optional k8s.io.apimachinery.pkg.util.intstr.IntOrString retries = 2;
}
message ContainerSetTemplate {
repeated ContainerNode containers = 4;
repeated k8s.io.api.core.v1.VolumeMount volumeMounts = 3;
// RetryStrategy describes how to retry a container nodes in the container set if it fails.
// Nbr of retries(default 0) and sleep duration between retries(default 0s, instant retry) can be set.
optional ContainerSetRetryStrategy retryStrategy = 5;
}
// ContinueOn defines if a workflow should continue even if a task or step fails/errors.
// It can be specified if the workflow should continue when the pod errors, fails or both.
message ContinueOn {
// +optional
optional bool error = 1;
// +optional
optional bool failed = 2;
}
// Counter is a Counter prometheus metric
message Counter {
// Value is the value of the metric
optional string value = 1;
}
// CreateS3BucketOptions options used to determine automatic automatic bucket-creation process
message CreateS3BucketOptions {
// ObjectLocking Enable object locking
optional bool objectLocking = 3;
}
// CronWorkflow is the definition of a scheduled workflow resource
// +genclient
// +genclient:noStatus
// +kubebuilder:resource:shortName=cwf;cronwf
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
message CronWorkflow {
optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
optional CronWorkflowSpec spec = 2;
optional CronWorkflowStatus status = 3;
}
// CronWorkflowList is list of CronWorkflow resources
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
message CronWorkflowList {
optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
repeated CronWorkflow items = 2;
}
// CronWorkflowSpec is the specification of a CronWorkflow
message CronWorkflowSpec {
// WorkflowSpec is the spec of the workflow to be run
optional WorkflowSpec workflowSpec = 1;
// Schedule is a schedule to run the Workflow in Cron format
optional string schedule = 2;
// ConcurrencyPolicy is the K8s-style concurrency policy that will be used
optional string concurrencyPolicy = 3;
// Suspend is a flag that will stop new CronWorkflows from running if set to true
optional bool suspend = 4;
// StartingDeadlineSeconds is the K8s-style deadline that will limit the time a CronWorkflow will be run after its
// original scheduled time if it is missed.
optional int64 startingDeadlineSeconds = 5;
// SuccessfulJobsHistoryLimit is the number of successful jobs to be kept at a time
optional int32 successfulJobsHistoryLimit = 6;
// FailedJobsHistoryLimit is the number of failed jobs to be kept at a time
optional int32 failedJobsHistoryLimit = 7;
// Timezone is the timezone against which the cron schedule will be calculated, e.g. "Asia/Tokyo". Default is machine's local time.
optional string timezone = 8;
// WorkflowMetadata contains some metadata of the workflow to be run
optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta workflowMeta = 9;
}
// CronWorkflowStatus is the status of a CronWorkflow
message CronWorkflowStatus {
// Active is a list of active workflows stemming from this CronWorkflow
repeated k8s.io.api.core.v1.ObjectReference active = 1;
// LastScheduleTime is the last time the CronWorkflow was scheduled
optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScheduledTime = 2;
// Conditions is a list of conditions the CronWorkflow may have
repeated Condition conditions = 3;
}
// DAGTask represents a node in the graph during DAG execution
message DAGTask {
// Name is the name of the target
optional string name = 1;
// Name of template to execute
optional string template = 2;
// Inline is the template. Template must be empty if this is declared (and vice-versa).
optional Template inline = 14;
// Arguments are the parameter and artifact arguments to the template
optional Arguments arguments = 3;
// TemplateRef is the reference to the template resource to execute.
optional TemplateRef templateRef = 4;
// Dependencies are name of other targets which this depends on
repeated string dependencies = 5;
// WithItems expands a task into multiple parallel tasks from the items in the list
repeated Item withItems = 6;
// WithParam expands a task into multiple parallel tasks from the value in the parameter,
// which is expected to be a JSON list.
optional string withParam = 7;
// WithSequence expands a task into a numeric sequence
optional Sequence withSequence = 8;
// When is an expression in which the task should conditionally execute
optional string when = 9;
// ContinueOn makes argo to proceed with the following step even if this step fails.
// Errors and Failed states can be specified
optional ContinueOn continueOn = 10;
// OnExit is a template reference which is invoked at the end of the
// template, irrespective of the success, failure, or error of the
// primary template.
// DEPRECATED: Use Hooks[exit].Template instead.
optional string onExit = 11;
// Depends are name of other targets which this depends on
optional string depends = 12;
// Hooks hold the lifecycle hook which is invoked at lifecycle of
// task, irrespective of the success, failure, or error status of the primary task
map<string, LifecycleHook> hooks = 13;
}
// DAGTemplate is a template subtype for directed acyclic graph templates
message DAGTemplate {
// Target are one or more names of targets to execute in a DAG
optional string target = 1;
// Tasks are a list of DAG tasks
// +patchStrategy=merge
// +patchMergeKey=name
repeated DAGTask tasks = 2;
// This flag is for DAG logic. The DAG logic has a built-in "fail fast" feature to stop scheduling new steps,
// as soon as it detects that one of the DAG nodes is failed. Then it waits until all DAG nodes are completed
// before failing the DAG itself.
// The FailFast flag default is true, if set to false, it will allow a DAG to run all branches of the DAG to
// completion (either success or failure), regardless of the failed outcomes of branches in the DAG.
// More info and example about this feature at https://github.com/argoproj/argo-workflows/issues/1442
optional bool failFast = 3;
}
// Data is a data template
message Data {
// Source sources external data into a data template
optional DataSource source = 1;
// Transformation applies a set of transformations
repeated TransformationStep transformation = 2;
}
// DataSource sources external data into a data template
message DataSource {
// ArtifactPaths is a data transformation that collects a list of artifact paths
optional ArtifactPaths artifactPaths = 1;
}
message Event {
// Selector (https://github.com/antonmedv/expr) that we must must match the event. E.g. `payload.message == "test"`
optional string selector = 1;
}
// ExecutorConfig holds configurations of an executor container.
message ExecutorConfig {
// ServiceAccountName specifies the service account name of the executor container.
optional string serviceAccountName = 1;
}
// GCSArtifact is the location of a GCS artifact
message GCSArtifact {
optional GCSBucket gCSBucket = 1;
// Key is the path in the bucket where the artifact resides
optional string key = 2;
}
// GCSArtifactRepository defines the controller configuration for a GCS artifact repository
message GCSArtifactRepository {
optional GCSBucket gCSBucket = 1;
// KeyFormat is defines the format of how to store keys. Can reference workflow variables
optional string keyFormat = 2;
}
// GCSBucket contains the access information for interfacring with a GCS bucket
message GCSBucket {
// Bucket is the name of the bucket
optional string bucket = 1;
// ServiceAccountKeySecret is the secret selector to the bucket's service account key
optional k8s.io.api.core.v1.SecretKeySelector serviceAccountKeySecret = 2;
}
// Gauge is a Gauge prometheus metric
message Gauge {
// Value is the value of the metric
optional string value = 1;
// Realtime emits this metric in real time if applicable
optional bool realtime = 2;
}
// GitArtifact is the location of an git artifact
message GitArtifact {
// Repo is the git repository
optional string repo = 1;
// Revision is the git commit, tag, branch to checkout
optional string revision = 2;
// Depth specifies clones/fetches should be shallow and include the given
// number of commits from the branch tip
optional uint64 depth = 3;
// Fetch specifies a number of refs that should be fetched before checkout
repeated string fetch = 4;
// UsernameSecret is the secret selector to the repository username
optional k8s.io.api.core.v1.SecretKeySelector usernameSecret = 5;
// PasswordSecret is the secret selector to the repository password
optional k8s.io.api.core.v1.SecretKeySelector passwordSecret = 6;
// SSHPrivateKeySecret is the secret selector to the repository ssh private key
optional k8s.io.api.core.v1.SecretKeySelector sshPrivateKeySecret = 7;
// InsecureIgnoreHostKey disables SSH strict host key checking during git clone
optional bool insecureIgnoreHostKey = 8;
// DisableSubmodules disables submodules during git clone
optional bool disableSubmodules = 9;
}
// HDFSArtifact is the location of an HDFS artifact
message HDFSArtifact {
optional HDFSConfig hDFSConfig = 1;
// Path is a file path in HDFS
optional string path = 2;
// Force copies a file forcibly even if it exists
optional bool force = 3;
}
// HDFSArtifactRepository defines the controller configuration for an HDFS artifact repository
message HDFSArtifactRepository {
optional HDFSConfig hDFSConfig = 1;
// PathFormat is defines the format of path to store a file. Can reference workflow variables
optional string pathFormat = 2;
// Force copies a file forcibly even if it exists
optional bool force = 3;
}
// HDFSConfig is configurations for HDFS
message HDFSConfig {
optional HDFSKrbConfig hDFSKrbConfig = 1;
// Addresses is accessible addresses of HDFS name nodes
repeated string addresses = 2;
// HDFSUser is the user to access HDFS file system.
// It is ignored if either ccache or keytab is used.
optional string hdfsUser = 3;
}
// HDFSKrbConfig is auth configurations for Kerberos
message HDFSKrbConfig {
// KrbCCacheSecret is the secret selector for Kerberos ccache
// Either ccache or keytab can be set to use Kerberos.
optional k8s.io.api.core.v1.SecretKeySelector krbCCacheSecret = 1;
// KrbKeytabSecret is the secret selector for Kerberos keytab
// Either ccache or keytab can be set to use Kerberos.
optional k8s.io.api.core.v1.SecretKeySelector krbKeytabSecret = 2;
// KrbUsername is the Kerberos username used with Kerberos keytab
// It must be set if keytab is used.
optional string krbUsername = 3;
// KrbRealm is the Kerberos realm used with Kerberos keytab
// It must be set if keytab is used.
optional string krbRealm = 4;
// KrbConfig is the configmap selector for Kerberos config as string
// It must be set if either ccache or keytab is used.
optional k8s.io.api.core.v1.ConfigMapKeySelector krbConfigConfigMap = 5;
// KrbServicePrincipalName is the principal name of Kerberos service
// It must be set if either ccache or keytab is used.
optional string krbServicePrincipalName = 6;
}
message HTTP {
// Method is HTTP methods for HTTP Request
optional string method = 1;
// URL of the HTTP Request
optional string url = 2;
// Headers are an optional list of headers to send with HTTP requests
repeated HTTPHeader headers = 3;
// TimeoutSeconds is request timeout for HTTP Request. Default is 30 seconds
optional int64 timeoutSeconds = 4;
// SuccessCondition is an expression if evaluated to true is considered successful
optional string successCondition = 6;
// Body is content of the HTTP Request
optional string body = 5;
// insecureSkipVerify is a bool when if set to true will skip TLS verification for the HTTP client
optional bool insecureSkipVerify = 7;
}
// HTTPArtifact allows an file served on HTTP to be placed as an input artifact in a container
message HTTPArtifact {
// URL of the artifact
optional string url = 1;
// Headers are an optional list of headers to send with HTTP requests for artifacts
repeated Header headers = 2;
}
message HTTPHeader {
optional string name = 1;
optional string value = 2;
optional HTTPHeaderSource valueFrom = 3;
}
message HTTPHeaderSource {
optional k8s.io.api.core.v1.SecretKeySelector secretKeyRef = 1;
}
// Header indicate a key-value request header to be used when fetching artifacts over HTTP
message Header {
// Name is the header name
optional string name = 1;
// Value is the literal value to use for the header
optional string value = 2;
}
// Histogram is a Histogram prometheus metric
message Histogram {
// Value is the value of the metric
optional string value = 3;
// Buckets is a list of bucket divisors for the histogram
repeated Amount buckets = 4;
}
// Inputs are the mechanism for passing parameters, artifacts, volumes from one template to another
message Inputs {
// Parameters are a list of parameters passed as inputs
// +patchStrategy=merge
// +patchMergeKey=name
repeated Parameter parameters = 1;
// Artifact are a list of artifacts passed as inputs
// +patchStrategy=merge
// +patchMergeKey=name
repeated Artifact artifacts = 2;
}
// Item expands a single workflow step into multiple parallel steps
// The value of Item can be a map, string, bool, or number
//
// +protobuf.options.(gogoproto.goproto_stringer)=false
// +kubebuilder:validation:Type=object
message Item {
optional bytes value = 1;
}
// LabelKeys is list of keys
message LabelKeys {
repeated string items = 1;
}
message LabelValueFrom {
optional string expression = 1;
}
// Labels is list of workflow labels
message LabelValues {
repeated string items = 1;
}
message LifecycleHook {
// Template is the name of the template to execute by the hook
optional string template = 1;
// Arguments hold arguments to the template
optional Arguments arguments = 2;
// TemplateRef is the reference to the template resource to execute by the hook
optional TemplateRef templateRef = 3;
// Expression is a condition expression for when a node will be retried. If it evaluates to false, the node will not
// be retried and the retry strategy will be ignored
optional string expression = 4;
}
// A link to another app.
// +patchStrategy=merge
// +patchMergeKey=name
message Link {
// The name of the link, E.g. "Workflow Logs" or "Pod Logs"
optional string name = 1;
// "workflow", "pod", "pod-logs", "event-source-logs", "sensor-logs" or "chat"
optional string scope = 2;
// The URL. Can contain "${metadata.namespace}", "${metadata.name}", "${status.startedAt}", "${status.finishedAt}" or any other element in workflow yaml, e.g. "${workflow.metadata.annotations.userDefinedKey}"
optional string url = 3;
}
// MemoizationStatus is the status of this memoized node
message MemoizationStatus {
// Hit indicates whether this node was created from a cache entry
optional bool hit = 1;
// Key is the name of the key used for this node's cache
optional string key = 2;
// Cache is the name of the cache that was used
optional string cacheName = 3;
}
// Memoization enables caching for the Outputs of the template
message Memoize {
// Key is the key to use as the caching key
optional string key = 1;
// Cache sets and configures the kind of cache
optional Cache cache = 2;
// MaxAge is the maximum age (e.g. "180s", "24h") of an entry that is still considered valid. If an entry is older
// than the MaxAge, it will be ignored.
optional string maxAge = 3;
}
// Pod metdata
message Metadata {
map<string, string> annotations = 1;
map<string, string> labels = 2;
}
// MetricLabel is a single label for a prometheus metric
message MetricLabel {
optional string key = 1;
optional string value = 2;
}
// Metrics are a list of metrics emitted from a Workflow/Template
message Metrics {
// Prometheus is a list of prometheus metrics to be emitted
repeated Prometheus prometheus = 1;
}
// Mutex holds Mutex configuration
message Mutex {
// name of the mutex
optional string name = 1;
}
// MutexHolding describes the mutex and the object which is holding it.
message MutexHolding {
// Reference for the mutex
// e.g: ${namespace}/mutex/${mutexName}
optional string mutex = 1;
// Holder is a reference to the object which holds the Mutex.
// Holding Scenario:
// 1. Current workflow's NodeID which is holding the lock.
// e.g: ${NodeID}
// Waiting Scenario:
// 1. Current workflow or other workflow NodeID which is holding the lock.
// e.g: ${WorkflowName}/${NodeID}
optional string holder = 2;
}
// MutexStatus contains which objects hold mutex locks, and which objects this workflow is waiting on to release locks.
message MutexStatus {
// Holding is a list of mutexes and their respective objects that are held by mutex lock for this workflow.
// +listType=atomic
repeated MutexHolding holding = 1;
// Waiting is a list of mutexes and their respective objects this workflow is waiting for.
// +listType=atomic
repeated MutexHolding waiting = 2;
}
message NodeResult {
optional string phase = 1;
optional string message = 2;
optional Outputs outputs = 3;
optional string progress = 4;
}
// NodeStatus contains status information about an individual node in the workflow
message NodeStatus {
// ID is a unique identifier of a node within the worklow
// It is implemented as a hash of the node name, which makes the ID deterministic
optional string id = 1;
// Name is unique name in the node tree used to generate the node ID
optional string name = 2;
// DisplayName is a human readable representation of the node. Unique within a template boundary
optional string displayName = 3;
// Type indicates type of node
optional string type = 4;
// TemplateName is the template name which this node corresponds to.
// Not applicable to virtual nodes (e.g. Retry, StepGroup)
optional string templateName = 5;
// TemplateRef is the reference to the template resource which this node corresponds to.
// Not applicable to virtual nodes (e.g. Retry, StepGroup)
optional TemplateRef templateRef = 6;
// TemplateScope is the template scope in which the template of this node was retrieved.
optional string templateScope = 20;
// Phase a simple, high-level summary of where the node is in its lifecycle.
// Can be used as a state machine.
optional string phase = 7;
// BoundaryID indicates the node ID of the associated template root node in which this node belongs to
optional string boundaryID = 8;
// A human readable message indicating details about why the node is in this condition.
optional string message = 9;
// Time at which this node started
optional k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 10;
// Time at which this node completed
optional k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 11;
// EstimatedDuration in seconds.
optional int64 estimatedDuration = 24;
// Progress to completion
optional string progress = 26;
// ResourcesDuration is indicative, but not accurate, resource duration. This is populated when the nodes completes.
map<string, int64> resourcesDuration = 21;
// PodIP captures the IP of the pod for daemoned steps
optional string podIP = 12;
// Daemoned tracks whether or not this node was daemoned and need to be terminated
optional bool daemoned = 13;
// Inputs captures input parameter values and artifact locations supplied to this template invocation
optional Inputs inputs = 14;
// Outputs captures output parameter values and artifact locations produced by this template invocation
optional Outputs outputs = 15;
// Children is a list of child node IDs
repeated string children = 16;
// OutboundNodes tracks the node IDs which are considered "outbound" nodes to a template invocation.
// For every invocation of a template, there are nodes which we considered as "outbound". Essentially,
// these are last nodes in the execution sequence to run, before the template is considered completed.
// These nodes are then connected as parents to a following step.
//
// In the case of single pod steps (i.e. container, script, resource templates), this list will be nil
// since the pod itself is already considered the "outbound" node.
// In the case of DAGs, outbound nodes are the "target" tasks (tasks with no children).
// In the case of steps, outbound nodes are all the containers involved in the last step group.
// NOTE: since templates are composable, the list of outbound nodes are carried upwards when
// a DAG/steps template invokes another DAG/steps template. In other words, the outbound nodes of
// a template, will be a superset of the outbound nodes of its last children.
repeated string outboundNodes = 17;
// HostNodeName name of the Kubernetes node on which the Pod is running, if applicable
optional string hostNodeName = 22;
// MemoizationStatus holds information about cached nodes
optional MemoizationStatus memoizationStatus = 23;
// SynchronizationStatus is the synchronization status of the node
optional NodeSynchronizationStatus synchronizationStatus = 25;
}
// NodeSynchronizationStatus stores the status of a node
message NodeSynchronizationStatus {
// Waiting is the name of the lock that this node is waiting for
optional string waiting = 1;
}
// NoneStrategy indicates to skip tar process and upload the files or directory tree as independent
// files. Note that if the artifact is a directory, the artifact driver must support the ability to
// save/load the directory appropriately.
message NoneStrategy {
}
// OSSArtifact is the location of an Alibaba Cloud OSS artifact
message OSSArtifact {
optional OSSBucket oSSBucket = 1;
// Key is the path in the bucket where the artifact resides
optional string key = 2;
}
// OSSArtifactRepository defines the controller configuration for an OSS artifact repository
message OSSArtifactRepository {
optional OSSBucket oSSBucket = 1;
// KeyFormat is defines the format of how to store keys. Can reference workflow variables
optional string keyFormat = 2;
}
// OSSBucket contains the access information required for interfacing with an Alibaba Cloud OSS bucket
message OSSBucket {
// Endpoint is the hostname of the bucket endpoint
optional string endpoint = 1;
// Bucket is the name of the bucket
optional string bucket = 2;
// AccessKeySecret is the secret selector to the bucket's access key
optional k8s.io.api.core.v1.SecretKeySelector accessKeySecret = 3;
// SecretKeySecret is the secret selector to the bucket's secret key
optional k8s.io.api.core.v1.SecretKeySelector secretKeySecret = 4;
// CreateBucketIfNotPresent tells the driver to attempt to create the OSS bucket for output artifacts, if it doesn't exist
optional bool createBucketIfNotPresent = 5;
// SecurityToken is the user's temporary security token. For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm
optional string securityToken = 6;
// LifecycleRule specifies how to manage bucket's lifecycle
optional OSSLifecycleRule lifecycleRule = 7;
}
// OSSLifecycleRule specifies how to manage bucket's lifecycle
message OSSLifecycleRule {
// MarkInfrequentAccessAfterDays is the number of days before we convert the objects in the bucket to Infrequent Access (IA) storage type
optional int32 markInfrequentAccessAfterDays = 1;
// MarkDeletionAfterDays is the number of days before we delete objects in the bucket
optional int32 markDeletionAfterDays = 2;
}
// +kubebuilder:validation:Type=object
message Object {
}
// Outputs hold parameters, artifacts, and results from a step
message Outputs {
// Parameters holds the list of output parameters produced by a step
// +patchStrategy=merge
// +patchMergeKey=name
repeated Parameter parameters = 1;
// Artifacts holds the list of output artifacts produced by a step
// +patchStrategy=merge
// +patchMergeKey=name
repeated Artifact artifacts = 2;
// Result holds the result (stdout) of a script template
optional string result = 3;
// ExitCode holds the exit code of a script template
optional string exitCode = 4;
}
// +kubebuilder:validation:Type=array
message ParallelSteps {
repeated WorkflowStep steps = 1;
}
// Parameter indicate a passed string parameter to a service template with an optional default value
message Parameter {
// Name is the parameter name
optional string name = 1;
// Default is the default value to use for an input parameter if a value was not supplied
optional string default = 2;
// Value is the literal value to use for the parameter.
// If specified in the context of an input parameter, the value takes precedence over any passed values
optional string value = 3;
// ValueFrom is the source for the output parameter's value
optional ValueFrom valueFrom = 4;
// GlobalName exports an output parameter to the global scope, making it available as
// '{{workflow.outputs.parameters.XXXX}} and in workflow.status.outputs.parameters
optional string globalName = 5;
// Enum holds a list of string values to choose from, for the actual value of the parameter
repeated string enum = 6;
// Description is the parameter description
optional string description = 7;
}
// Plugin is an Object with exactly one key
message Plugin {
optional Object object = 1;
}
// PodGC describes how to delete completed pods as they complete
message PodGC {