argo-cd

Форк
0
/
generated.proto 
2310 строк · 79.7 Кб
1

2
// This file was autogenerated by go-to-protobuf. Do not edit it manually!
3

4
syntax = "proto2";
5

6
package github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1;
7

8
import "k8s.io/api/core/v1/generated.proto";
9
import "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.proto";
10
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
11
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
12
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
13
import "k8s.io/apimachinery/pkg/util/intstr/generated.proto";
14

15
// Package-wide variables from generator "generated".
16
option go_package = "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1";
17

18
// AWSAuthConfig is an AWS IAM authentication configuration
19
message AWSAuthConfig {
20
  // ClusterName contains AWS cluster name
21
  optional string clusterName = 1;
22

23
  // RoleARN contains optional role ARN. If set then AWS IAM Authenticator assume a role to perform cluster operations instead of the default AWS credential provider chain.
24
  optional string roleARN = 2;
25

26
  // Profile contains optional role ARN. If set then AWS IAM Authenticator uses the profile to perform cluster operations instead of the default AWS credential provider chain.
27
  optional string profile = 3;
28
}
29

30
// AppProject provides a logical grouping of applications, providing controls for:
31
// * where the apps may deploy to (cluster whitelist)
32
// * what may be deployed (repository whitelist, resource whitelist/blacklist)
33
// * who can access these applications (roles, OIDC group claims bindings)
34
// * and what they can do (RBAC policies)
35
// * automation access to these roles (JWT tokens)
36
// +genclient
37
// +genclient:noStatus
38
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
39
// +kubebuilder:resource:path=appprojects,shortName=appproj;appprojs
40
message AppProject {
41
  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
42

43
  optional AppProjectSpec spec = 2;
44

45
  optional AppProjectStatus status = 3;
46
}
47

48
// AppProjectList is list of AppProject resources
49
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
50
message AppProjectList {
51
  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
52

53
  repeated AppProject items = 2;
54
}
55

56
// AppProjectSpec is the specification of an AppProject
57
message AppProjectSpec {
58
  // SourceRepos contains list of repository URLs which can be used for deployment
59
  repeated string sourceRepos = 1;
60

61
  // Destinations contains list of destinations available for deployment
62
  repeated ApplicationDestination destinations = 2;
63

64
  // Description contains optional project description
65
  optional string description = 3;
66

67
  // Roles are user defined RBAC roles associated with this project
68
  repeated ProjectRole roles = 4;
69

70
  // ClusterResourceWhitelist contains list of whitelisted cluster level resources
71
  repeated k8s.io.apimachinery.pkg.apis.meta.v1.GroupKind clusterResourceWhitelist = 5;
72

73
  // NamespaceResourceBlacklist contains list of blacklisted namespace level resources
74
  repeated k8s.io.apimachinery.pkg.apis.meta.v1.GroupKind namespaceResourceBlacklist = 6;
75

76
  // OrphanedResources specifies if controller should monitor orphaned resources of apps in this project
77
  optional OrphanedResourcesMonitorSettings orphanedResources = 7;
78

79
  // SyncWindows controls when syncs can be run for apps in this project
80
  repeated SyncWindow syncWindows = 8;
81

82
  // NamespaceResourceWhitelist contains list of whitelisted namespace level resources
83
  repeated k8s.io.apimachinery.pkg.apis.meta.v1.GroupKind namespaceResourceWhitelist = 9;
84

85
  // SignatureKeys contains a list of PGP key IDs that commits in Git must be signed with in order to be allowed for sync
86
  repeated SignatureKey signatureKeys = 10;
87

88
  // ClusterResourceBlacklist contains list of blacklisted cluster level resources
89
  repeated k8s.io.apimachinery.pkg.apis.meta.v1.GroupKind clusterResourceBlacklist = 11;
90

91
  // SourceNamespaces defines the namespaces application resources are allowed to be created in
92
  repeated string sourceNamespaces = 12;
93

94
  // PermitOnlyProjectScopedClusters determines whether destinations can only reference clusters which are project-scoped
95
  optional bool permitOnlyProjectScopedClusters = 13;
96
}
97

98
// AppProjectStatus contains status information for AppProject CRs
99
message AppProjectStatus {
100
  // JWTTokensByRole contains a list of JWT tokens issued for a given role
101
  map<string, JWTTokens> jwtTokensByRole = 1;
102
}
103

104
// Application is a definition of Application resource.
105
// +genclient
106
// +genclient:noStatus
107
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
108
// +kubebuilder:resource:path=applications,shortName=app;apps
109
// +kubebuilder:printcolumn:name="Sync Status",type=string,JSONPath=`.status.sync.status`
110
// +kubebuilder:printcolumn:name="Health Status",type=string,JSONPath=`.status.health.status`
111
// +kubebuilder:printcolumn:name="Revision",type=string,JSONPath=`.status.sync.revision`,priority=10
112
message Application {
113
  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
114

115
  optional ApplicationSpec spec = 2;
116

117
  optional ApplicationStatus status = 3;
118

119
  optional Operation operation = 4;
120
}
121

122
// ApplicationCondition contains details about an application condition, which is usually an error or warning
123
message ApplicationCondition {
124
  // Type is an application condition type
125
  optional string type = 1;
126

127
  // Message contains human-readable message indicating details about condition
128
  optional string message = 2;
129

130
  // LastTransitionTime is the time the condition was last observed
131
  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
132
}
133

134
// ApplicationDestination holds information about the application's destination
135
message ApplicationDestination {
136
  // Server specifies the URL of the target cluster's Kubernetes control plane API. This must be set if Name is not set.
137
  optional string server = 1;
138

139
  // Namespace specifies the target namespace for the application's resources.
140
  // The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace
141
  optional string namespace = 2;
142

143
  // Name is an alternate way of specifying the target cluster by its symbolic name. This must be set if Server is not set.
144
  optional string name = 3;
145
}
146

147
// ApplicationList is list of Application resources
148
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
149
message ApplicationList {
150
  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
151

152
  repeated Application items = 2;
153
}
154

155
message ApplicationMatchExpression {
156
  optional string key = 1;
157

158
  optional string operator = 2;
159

160
  repeated string values = 3;
161
}
162

163
message ApplicationPreservedFields {
164
  repeated string annotations = 1;
165

166
  repeated string labels = 2;
167
}
168

169
// ApplicationSet is a set of Application resources
170
// +genclient
171
// +genclient:noStatus
172
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
173
// +kubebuilder:resource:path=applicationsets,shortName=appset;appsets
174
// +kubebuilder:subresource:status
175
message ApplicationSet {
176
  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
177

178
  optional ApplicationSetSpec spec = 2;
179

180
  optional ApplicationSetStatus status = 3;
181
}
182

183
// ApplicationSetApplicationStatus contains details about each Application managed by the ApplicationSet
184
message ApplicationSetApplicationStatus {
185
  // Application contains the name of the Application resource
186
  optional string application = 1;
187

188
  // LastTransitionTime is the time the status was last updated
189
  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 2;
190

191
  // Message contains human-readable message indicating details about the status
192
  optional string message = 3;
193

194
  // Status contains the AppSet's perceived status of the managed Application resource: (Waiting, Pending, Progressing, Healthy)
195
  optional string status = 4;
196

197
  // Step tracks which step this Application should be updated in
198
  optional string step = 5;
199
}
200

201
// ApplicationSetCondition contains details about an applicationset condition, which is usally an error or warning
202
message ApplicationSetCondition {
203
  // Type is an applicationset condition type
204
  optional string type = 1;
205

206
  // Message contains human-readable message indicating details about condition
207
  optional string message = 2;
208

209
  // LastTransitionTime is the time the condition was last observed
210
  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
211

212
  // True/False/Unknown
213
  optional string status = 4;
214

215
  // Single word camelcase representing the reason for the status eg ErrorOccurred
216
  optional string reason = 5;
217
}
218

219
// ApplicationSetGenerator represents a generator at the top level of an ApplicationSet.
220
message ApplicationSetGenerator {
221
  optional ListGenerator list = 1;
222

223
  optional ClusterGenerator clusters = 2;
224

225
  optional GitGenerator git = 3;
226

227
  optional SCMProviderGenerator scmProvider = 4;
228

229
  optional DuckTypeGenerator clusterDecisionResource = 5;
230

231
  optional PullRequestGenerator pullRequest = 6;
232

233
  optional MatrixGenerator matrix = 7;
234

235
  optional MergeGenerator merge = 8;
236

237
  // Selector allows to post-filter all generator.
238
  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 9;
239

240
  optional PluginGenerator plugin = 10;
241
}
242

243
// ApplicationSetList contains a list of ApplicationSet
244
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
245
// +kubebuilder:object:root=true
246
message ApplicationSetList {
247
  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
248

249
  repeated ApplicationSet items = 2;
250
}
251

252
// ApplicationSetNestedGenerator represents a generator nested within a combination-type generator (MatrixGenerator or
253
// MergeGenerator).
254
message ApplicationSetNestedGenerator {
255
  optional ListGenerator list = 1;
256

257
  optional ClusterGenerator clusters = 2;
258

259
  optional GitGenerator git = 3;
260

261
  optional SCMProviderGenerator scmProvider = 4;
262

263
  optional DuckTypeGenerator clusterDecisionResource = 5;
264

265
  optional PullRequestGenerator pullRequest = 6;
266

267
  // Matrix should have the form of NestedMatrixGenerator
268
  optional k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1.JSON matrix = 7;
269

270
  // Merge should have the form of NestedMergeGenerator
271
  optional k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1.JSON merge = 8;
272

273
  // Selector allows to post-filter all generator.
274
  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 9;
275

276
  optional PluginGenerator plugin = 10;
277
}
278

279
// ApplicationSetResourceIgnoreDifferences configures how the ApplicationSet controller will ignore differences in live
280
// applications when applying changes from generated applications.
281
message ApplicationSetResourceIgnoreDifferences {
282
  // Name is the name of the application to ignore differences for. If not specified, the rule applies to all applications.
283
  optional string name = 1;
284

285
  // JSONPointers is a list of JSON pointers to fields to ignore differences for.
286
  repeated string jsonPointers = 2;
287

288
  // JQPathExpressions is a list of JQ path expressions to fields to ignore differences for.
289
  repeated string jqPathExpressions = 3;
290
}
291

292
message ApplicationSetRolloutStep {
293
  repeated ApplicationMatchExpression matchExpressions = 1;
294

295
  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUpdate = 2;
296
}
297

298
message ApplicationSetRolloutStrategy {
299
  repeated ApplicationSetRolloutStep steps = 1;
300
}
301

302
// ApplicationSetSpec represents a class of application set state.
303
message ApplicationSetSpec {
304
  optional bool goTemplate = 1;
305

306
  repeated ApplicationSetGenerator generators = 2;
307

308
  optional ApplicationSetTemplate template = 3;
309

310
  optional ApplicationSetSyncPolicy syncPolicy = 4;
311

312
  optional ApplicationSetStrategy strategy = 5;
313

314
  optional ApplicationPreservedFields preservedFields = 6;
315

316
  repeated string goTemplateOptions = 7;
317

318
  // ApplyNestedSelectors enables selectors defined within the generators of two level-nested matrix or merge generators
319
  optional bool applyNestedSelectors = 8;
320

321
  repeated ApplicationSetResourceIgnoreDifferences ignoreApplicationDifferences = 9;
322

323
  optional string templatePatch = 10;
324
}
325

326
// ApplicationSetStatus defines the observed state of ApplicationSet
327
message ApplicationSetStatus {
328
  // INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
329
  // Important: Run "make" to regenerate code after modifying this file
330
  repeated ApplicationSetCondition conditions = 1;
331

332
  repeated ApplicationSetApplicationStatus applicationStatus = 2;
333
}
334

335
// ApplicationSetStrategy configures how generated Applications are updated in sequence.
336
message ApplicationSetStrategy {
337
  optional string type = 1;
338

339
  optional ApplicationSetRolloutStrategy rollingSync = 2;
340
}
341

342
// ApplicationSetSyncPolicy configures how generated Applications will relate to their
343
// ApplicationSet.
344
message ApplicationSetSyncPolicy {
345
  // PreserveResourcesOnDeletion will preserve resources on deletion. If PreserveResourcesOnDeletion is set to true, these Applications will not be deleted.
346
  optional bool preserveResourcesOnDeletion = 1;
347

348
  // ApplicationsSync represents the policy applied on the generated applications. Possible values are create-only, create-update, create-delete, sync
349
  // +kubebuilder:validation:Optional
350
  // +kubebuilder:validation:Enum=create-only;create-update;create-delete;sync
351
  optional string applicationsSync = 2;
352
}
353

354
// ApplicationSetTemplate represents argocd ApplicationSpec
355
message ApplicationSetTemplate {
356
  optional ApplicationSetTemplateMeta metadata = 1;
357

358
  optional ApplicationSpec spec = 2;
359
}
360

361
// ApplicationSetTemplateMeta represents the Argo CD application fields that may
362
// be used for Applications generated from the ApplicationSet (based on metav1.ObjectMeta)
363
message ApplicationSetTemplateMeta {
364
  optional string name = 1;
365

366
  optional string namespace = 2;
367

368
  map<string, string> labels = 3;
369

370
  map<string, string> annotations = 4;
371

372
  repeated string finalizers = 5;
373
}
374

375
// ApplicationSetTerminalGenerator represents a generator nested within a nested generator (for example, a list within
376
// a merge within a matrix). A generator at this level may not be a combination-type generator (MatrixGenerator or
377
// MergeGenerator). ApplicationSet enforces this nesting depth limit because CRDs do not support recursive types.
378
// https://github.com/kubernetes-sigs/controller-tools/issues/477
379
message ApplicationSetTerminalGenerator {
380
  optional ListGenerator list = 1;
381

382
  optional ClusterGenerator clusters = 2;
383

384
  optional GitGenerator git = 3;
385

386
  optional SCMProviderGenerator scmProvider = 4;
387

388
  optional DuckTypeGenerator clusterDecisionResource = 5;
389

390
  optional PullRequestGenerator pullRequest = 6;
391

392
  optional PluginGenerator plugin = 7;
393

394
  // Selector allows to post-filter all generator.
395
  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 8;
396
}
397

398
// ApplicationSource contains all required information about the source of an application
399
message ApplicationSource {
400
  // RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
401
  optional string repoURL = 1;
402

403
  // Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
404
  optional string path = 2;
405

406
  // TargetRevision defines the revision of the source to sync the application to.
407
  // In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.
408
  // In case of Helm, this is a semver tag for the Chart's version.
409
  optional string targetRevision = 4;
410

411
  // Helm holds helm specific options
412
  optional ApplicationSourceHelm helm = 7;
413

414
  // Kustomize holds kustomize specific options
415
  optional ApplicationSourceKustomize kustomize = 8;
416

417
  // Directory holds path/directory specific options
418
  optional ApplicationSourceDirectory directory = 10;
419

420
  // Plugin holds config management plugin specific options
421
  optional ApplicationSourcePlugin plugin = 11;
422

423
  // Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
424
  optional string chart = 12;
425

426
  // Ref is reference to another source within sources field. This field will not be used if used with a `source` tag.
427
  optional string ref = 13;
428
}
429

430
// ApplicationSourceDirectory holds options for applications of type plain YAML or Jsonnet
431
message ApplicationSourceDirectory {
432
  // Recurse specifies whether to scan a directory recursively for manifests
433
  optional bool recurse = 1;
434

435
  // Jsonnet holds options specific to Jsonnet
436
  optional ApplicationSourceJsonnet jsonnet = 2;
437

438
  // Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
439
  optional string exclude = 3;
440

441
  // Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
442
  optional string include = 4;
443
}
444

445
// ApplicationSourceHelm holds helm specific options
446
message ApplicationSourceHelm {
447
  // ValuesFiles is a list of Helm value files to use when generating a template
448
  repeated string valueFiles = 1;
449

450
  // Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
451
  repeated HelmParameter parameters = 2;
452

453
  // ReleaseName is the Helm release name to use. If omitted it will use the application name
454
  optional string releaseName = 3;
455

456
  // Values specifies Helm values to be passed to helm template, typically defined as a block. ValuesObject takes precedence over Values, so use one or the other.
457
  // +patchStrategy=replace
458
  optional string values = 4;
459

460
  // FileParameters are file parameters to the helm template
461
  repeated HelmFileParameter fileParameters = 5;
462

463
  // Version is the Helm version to use for templating ("3")
464
  optional string version = 6;
465

466
  // PassCredentials pass credentials to all domains (Helm's --pass-credentials)
467
  optional bool passCredentials = 7;
468

469
  // IgnoreMissingValueFiles prevents helm template from failing when valueFiles do not exist locally by not appending them to helm template --values
470
  optional bool ignoreMissingValueFiles = 8;
471

472
  // SkipCrds skips custom resource definition installation step (Helm's --skip-crds)
473
  optional bool skipCrds = 9;
474

475
  // ValuesObject specifies Helm values to be passed to helm template, defined as a map. This takes precedence over Values.
476
  // +kubebuilder:pruning:PreserveUnknownFields
477
  optional k8s.io.apimachinery.pkg.runtime.RawExtension valuesObject = 10;
478
}
479

480
// ApplicationSourceJsonnet holds options specific to applications of type Jsonnet
481
message ApplicationSourceJsonnet {
482
  // ExtVars is a list of Jsonnet External Variables
483
  repeated JsonnetVar extVars = 1;
484

485
  // TLAS is a list of Jsonnet Top-level Arguments
486
  repeated JsonnetVar tlas = 2;
487

488
  // Additional library search dirs
489
  repeated string libs = 3;
490
}
491

492
// ApplicationSourceKustomize holds options specific to an Application source specific to Kustomize
493
message ApplicationSourceKustomize {
494
  // NamePrefix is a prefix appended to resources for Kustomize apps
495
  optional string namePrefix = 1;
496

497
  // NameSuffix is a suffix appended to resources for Kustomize apps
498
  optional string nameSuffix = 2;
499

500
  // Images is a list of Kustomize image override specifications
501
  repeated string images = 3;
502

503
  // CommonLabels is a list of additional labels to add to rendered manifests
504
  map<string, string> commonLabels = 4;
505

506
  // Version controls which version of Kustomize to use for rendering manifests
507
  optional string version = 5;
508

509
  // CommonAnnotations is a list of additional annotations to add to rendered manifests
510
  map<string, string> commonAnnotations = 6;
511

512
  // ForceCommonLabels specifies whether to force applying common labels to resources for Kustomize apps
513
  optional bool forceCommonLabels = 7;
514

515
  // ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps
516
  optional bool forceCommonAnnotations = 8;
517

518
  // Namespace sets the namespace that Kustomize adds to all resources
519
  optional string namespace = 9;
520

521
  // CommonAnnotationsEnvsubst specifies whether to apply env variables substitution for annotation values
522
  optional bool commonAnnotationsEnvsubst = 10;
523

524
  // Replicas is a list of Kustomize Replicas override specifications
525
  repeated KustomizeReplica replicas = 11;
526

527
  // Patches is a list of Kustomize patches
528
  repeated KustomizePatch patches = 12;
529

530
  // Components specifies a list of kustomize components to add to the kustomization before building
531
  repeated string components = 13;
532
}
533

534
// ApplicationSourcePlugin holds options specific to config management plugins
535
message ApplicationSourcePlugin {
536
  optional string name = 1;
537

538
  repeated EnvEntry env = 2;
539

540
  repeated ApplicationSourcePluginParameter parameters = 3;
541
}
542

543
message ApplicationSourcePluginParameter {
544
  // Name is the name identifying a parameter.
545
  optional string name = 1;
546

547
  // String_ is the value of a string type parameter.
548
  optional string string = 5;
549

550
  // Map is the value of a map type parameter.
551
  optional OptionalMap map = 3;
552

553
  // Array is the value of an array type parameter.
554
  optional OptionalArray array = 4;
555
}
556

557
// ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision.
558
message ApplicationSpec {
559
  // Source is a reference to the location of the application's manifests or chart
560
  optional ApplicationSource source = 1;
561

562
  // Destination is a reference to the target Kubernetes server and namespace
563
  optional ApplicationDestination destination = 2;
564

565
  // Project is a reference to the project this application belongs to.
566
  // The empty string means that application belongs to the 'default' project.
567
  optional string project = 3;
568

569
  // SyncPolicy controls when and how a sync will be performed
570
  optional SyncPolicy syncPolicy = 4;
571

572
  // IgnoreDifferences is a list of resources and their fields which should be ignored during comparison
573
  repeated ResourceIgnoreDifferences ignoreDifferences = 5;
574

575
  // Info contains a list of information (URLs, email addresses, and plain text) that relates to the application
576
  repeated Info info = 6;
577

578
  // RevisionHistoryLimit limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions.
579
  // This should only be changed in exceptional circumstances.
580
  // Setting to zero will store no history. This will reduce storage used.
581
  // Increasing will increase the space used to store the history, so we do not recommend increasing it.
582
  // Default is 10.
583
  optional int64 revisionHistoryLimit = 7;
584

585
  // Sources is a reference to the location of the application's manifests or chart
586
  repeated ApplicationSource sources = 8;
587
}
588

589
// ApplicationStatus contains status information for the application
590
message ApplicationStatus {
591
  // Resources is a list of Kubernetes resources managed by this application
592
  repeated ResourceStatus resources = 1;
593

594
  // Sync contains information about the application's current sync status
595
  optional SyncStatus sync = 2;
596

597
  // Health contains information about the application's current health status
598
  optional HealthStatus health = 3;
599

600
  // History contains information about the application's sync history
601
  repeated RevisionHistory history = 4;
602

603
  // Conditions is a list of currently observed application conditions
604
  repeated ApplicationCondition conditions = 5;
605

606
  // ReconciledAt indicates when the application state was reconciled using the latest git version
607
  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time reconciledAt = 6;
608

609
  // OperationState contains information about any ongoing operations, such as a sync
610
  optional OperationState operationState = 7;
611

612
  // ObservedAt indicates when the application state was updated without querying latest git state
613
  // Deprecated: controller no longer updates ObservedAt field
614
  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time observedAt = 8;
615

616
  // SourceType specifies the type of this application
617
  optional string sourceType = 9;
618

619
  // Summary contains a list of URLs and container images used by this application
620
  optional ApplicationSummary summary = 10;
621

622
  // ResourceHealthSource indicates where the resource health status is stored: inline if not set or appTree
623
  optional string resourceHealthSource = 11;
624

625
  // SourceTypes specifies the type of the sources included in the application
626
  repeated string sourceTypes = 12;
627

628
  // ControllerNamespace indicates the namespace in which the application controller is located
629
  optional string controllerNamespace = 13;
630
}
631

632
// ApplicationSummary contains information about URLs and container images used by an application
633
message ApplicationSummary {
634
  // ExternalURLs holds all external URLs of application child resources.
635
  repeated string externalURLs = 1;
636

637
  // Images holds all images of application child resources.
638
  repeated string images = 2;
639
}
640

641
// ApplicationTree holds nodes which belongs to the application
642
// TODO: describe purpose of this type
643
message ApplicationTree {
644
  // Nodes contains list of nodes which either directly managed by the application and children of directly managed nodes.
645
  repeated ResourceNode nodes = 1;
646

647
  // OrphanedNodes contains if or orphaned nodes: nodes which are not managed by the app but in the same namespace. List is populated only if orphaned resources enabled in app project.
648
  repeated ResourceNode orphanedNodes = 2;
649

650
  // Hosts holds list of Kubernetes nodes that run application related pods
651
  repeated HostInfo hosts = 3;
652
}
653

654
// ApplicationWatchEvent contains information about application change.
655
message ApplicationWatchEvent {
656
  optional string type = 1;
657

658
  // Application is:
659
  //  * If Type is Added or Modified: the new state of the object.
660
  //  * If Type is Deleted: the state of the object immediately before deletion.
661
  //  * If Type is Error: *api.Status is recommended; other types may make sense
662
  //    depending on context.
663
  optional Application application = 2;
664
}
665

666
// Backoff is the backoff strategy to use on subsequent retries for failing syncs
667
message Backoff {
668
  // Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h")
669
  optional string duration = 1;
670

671
  // Factor is a factor to multiply the base duration after each failed retry
672
  optional int64 factor = 2;
673

674
  // MaxDuration is the maximum amount of time allowed for the backoff strategy
675
  optional string maxDuration = 3;
676
}
677

678
// BasicAuthBitbucketServer defines the username/(password or personal access token) for Basic auth.
679
message BasicAuthBitbucketServer {
680
  // Username for Basic auth
681
  optional string username = 1;
682

683
  // Password (or personal access token) reference.
684
  optional SecretRef passwordRef = 2;
685
}
686

687
// BearerTokenBitbucketCloud defines the Bearer token for BitBucket AppToken auth.
688
message BearerTokenBitbucketCloud {
689
  // Password (or personal access token) reference.
690
  optional SecretRef tokenRef = 1;
691
}
692

693
// ChartDetails contains helm chart metadata for a specific version
694
message ChartDetails {
695
  optional string description = 1;
696

697
  // The URL of this projects home page, e.g. "http://example.com"
698
  optional string home = 2;
699

700
  // List of maintainer details, name and email, e.g. ["John Doe <john_doe@my-company.com>"]
701
  repeated string maintainers = 3;
702
}
703

704
// Cluster is the definition of a cluster resource
705
message Cluster {
706
  // Server is the API server URL of the Kubernetes cluster
707
  optional string server = 1;
708

709
  // Name of the cluster. If omitted, will use the server address
710
  optional string name = 2;
711

712
  // Config holds cluster information for connecting to a cluster
713
  optional ClusterConfig config = 3;
714

715
  // DEPRECATED: use Info.ConnectionState field instead.
716
  // ConnectionState contains information about cluster connection state
717
  optional ConnectionState connectionState = 4;
718

719
  // DEPRECATED: use Info.ServerVersion field instead.
720
  // The server version
721
  optional string serverVersion = 5;
722

723
  // Holds list of namespaces which are accessible in that cluster. Cluster level resources will be ignored if namespace list is not empty.
724
  repeated string namespaces = 6;
725

726
  // RefreshRequestedAt holds time when cluster cache refresh has been requested
727
  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time refreshRequestedAt = 7;
728

729
  // Info holds information about cluster cache and state
730
  optional ClusterInfo info = 8;
731

732
  // Shard contains optional shard number. Calculated on the fly by the application controller if not specified.
733
  optional int64 shard = 9;
734

735
  // Indicates if cluster level resources should be managed. This setting is used only if cluster is connected in a namespaced mode.
736
  optional bool clusterResources = 10;
737

738
  // Reference between project and cluster that allow you automatically to be added as item inside Destinations project entity
739
  optional string project = 11;
740

741
  // Labels for cluster secret metadata
742
  map<string, string> labels = 12;
743

744
  // Annotations for cluster secret metadata
745
  map<string, string> annotations = 13;
746
}
747

748
// ClusterCacheInfo contains information about the cluster cache
749
message ClusterCacheInfo {
750
  // ResourcesCount holds number of observed Kubernetes resources
751
  optional int64 resourcesCount = 1;
752

753
  // APIsCount holds number of observed Kubernetes API count
754
  optional int64 apisCount = 2;
755

756
  // LastCacheSyncTime holds time of most recent cache synchronization
757
  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCacheSyncTime = 3;
758
}
759

760
// ClusterConfig is the configuration attributes. This structure is subset of the go-client
761
// rest.Config with annotations added for marshalling.
762
message ClusterConfig {
763
  // Server requires Basic authentication
764
  optional string username = 1;
765

766
  optional string password = 2;
767

768
  // Server requires Bearer authentication. This client will not attempt to use
769
  // refresh tokens for an OAuth2 flow.
770
  // TODO: demonstrate an OAuth2 compatible client.
771
  optional string bearerToken = 3;
772

773
  // TLSClientConfig contains settings to enable transport layer security
774
  optional TLSClientConfig tlsClientConfig = 4;
775

776
  // AWSAuthConfig contains IAM authentication configuration
777
  optional AWSAuthConfig awsAuthConfig = 5;
778

779
  // ExecProviderConfig contains configuration for an exec provider
780
  optional ExecProviderConfig execProviderConfig = 6;
781
}
782

783
// ClusterGenerator defines a generator to match against clusters registered with ArgoCD.
784
message ClusterGenerator {
785
  // Selector defines a label selector to match against all clusters registered with ArgoCD.
786
  // Clusters today are stored as Kubernetes Secrets, thus the Secret labels will be used
787
  // for matching the selector.
788
  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 1;
789

790
  optional ApplicationSetTemplate template = 2;
791

792
  // Values contains key/value pairs which are passed directly as parameters to the template
793
  map<string, string> values = 3;
794
}
795

796
// ClusterInfo contains information about the cluster
797
message ClusterInfo {
798
  // ConnectionState contains information about the connection to the cluster
799
  optional ConnectionState connectionState = 1;
800

801
  // ServerVersion contains information about the Kubernetes version of the cluster
802
  optional string serverVersion = 2;
803

804
  // CacheInfo contains information about the cluster cache
805
  optional ClusterCacheInfo cacheInfo = 3;
806

807
  // ApplicationsCount is the number of applications managed by Argo CD on the cluster
808
  optional int64 applicationsCount = 4;
809

810
  // APIVersions contains list of API versions supported by the cluster
811
  repeated string apiVersions = 5;
812
}
813

814
// ClusterList is a collection of Clusters.
815
message ClusterList {
816
  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
817

818
  repeated Cluster items = 2;
819
}
820

821
// Command holds binary path and arguments list
822
message Command {
823
  repeated string command = 1;
824

825
  repeated string args = 2;
826
}
827

828
// ComparedTo contains application source and target which was used for resources comparison
829
message ComparedTo {
830
  // Source is a reference to the application's source used for comparison
831
  optional ApplicationSource source = 1;
832

833
  // Destination is a reference to the application's destination used for comparison
834
  optional ApplicationDestination destination = 2;
835

836
  // Sources is a reference to the application's multiple sources used for comparison
837
  repeated ApplicationSource sources = 3;
838

839
  // IgnoreDifferences is a reference to the application's ignored differences used for comparison
840
  repeated ResourceIgnoreDifferences ignoreDifferences = 4;
841
}
842

843
// ComponentParameter contains information about component parameter value
844
message ComponentParameter {
845
  optional string component = 1;
846

847
  optional string name = 2;
848

849
  optional string value = 3;
850
}
851

852
// ConfigManagementPlugin contains config management plugin configuration
853
message ConfigManagementPlugin {
854
  optional string name = 1;
855

856
  optional Command init = 2;
857

858
  optional Command generate = 3;
859

860
  optional bool lockRepo = 4;
861
}
862

863
// ConnectionState contains information about remote resource connection state, currently used for clusters and repositories
864
message ConnectionState {
865
  // Status contains the current status indicator for the connection
866
  optional string status = 1;
867

868
  // Message contains human readable information about the connection status
869
  optional string message = 2;
870

871
  // ModifiedAt contains the timestamp when this connection status has been determined
872
  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time attemptedAt = 3;
873
}
874

875
// DuckType defines a generator to match against clusters registered with ArgoCD.
876
message DuckTypeGenerator {
877
  // ConfigMapRef is a ConfigMap with the duck type definitions needed to retrieve the data
878
  //              this includes apiVersion(group/version), kind, matchKey and validation settings
879
  // Name is the resource name of the kind, group and version, defined in the ConfigMapRef
880
  // RequeueAfterSeconds is how long before the duckType will be rechecked for a change
881
  optional string configMapRef = 1;
882

883
  optional string name = 2;
884

885
  optional int64 requeueAfterSeconds = 3;
886

887
  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;
888

889
  optional ApplicationSetTemplate template = 5;
890

891
  // Values contains key/value pairs which are passed directly as parameters to the template
892
  map<string, string> values = 6;
893
}
894

895
// EnvEntry represents an entry in the application's environment
896
message EnvEntry {
897
  // Name is the name of the variable, usually expressed in uppercase
898
  optional string name = 1;
899

900
  // Value is the value of the variable
901
  optional string value = 2;
902
}
903

904
// ExecProviderConfig is config used to call an external command to perform cluster authentication
905
// See: https://godoc.org/k8s.io/client-go/tools/clientcmd/api#ExecConfig
906
message ExecProviderConfig {
907
  // Command to execute
908
  optional string command = 1;
909

910
  // Arguments to pass to the command when executing it
911
  repeated string args = 2;
912

913
  // Env defines additional environment variables to expose to the process
914
  map<string, string> env = 3;
915

916
  // Preferred input version of the ExecInfo
917
  optional string apiVersion = 4;
918

919
  // This text is shown to the user when the executable doesn't seem to be present
920
  optional string installHint = 5;
921
}
922

923
message GitDirectoryGeneratorItem {
924
  optional string path = 1;
925

926
  optional bool exclude = 2;
927
}
928

929
message GitFileGeneratorItem {
930
  optional string path = 1;
931
}
932

933
message GitGenerator {
934
  optional string repoURL = 1;
935

936
  repeated GitDirectoryGeneratorItem directories = 2;
937

938
  repeated GitFileGeneratorItem files = 3;
939

940
  optional string revision = 4;
941

942
  optional int64 requeueAfterSeconds = 5;
943

944
  optional ApplicationSetTemplate template = 6;
945

946
  optional string pathParamPrefix = 7;
947

948
  // Values contains key/value pairs which are passed directly as parameters to the template
949
  map<string, string> values = 8;
950
}
951

952
// GnuPGPublicKey is a representation of a GnuPG public key
953
message GnuPGPublicKey {
954
  // KeyID specifies the key ID, in hexadecimal string format
955
  optional string keyID = 1;
956

957
  // Fingerprint is the fingerprint of the key
958
  optional string fingerprint = 2;
959

960
  // Owner holds the owner identification, e.g. a name and e-mail address
961
  optional string owner = 3;
962

963
  // Trust holds the level of trust assigned to this key
964
  optional string trust = 4;
965

966
  // SubType holds the key's sub type (e.g. rsa4096)
967
  optional string subType = 5;
968

969
  // KeyData holds the raw key data, in base64 encoded format
970
  optional string keyData = 6;
971
}
972

973
// GnuPGPublicKeyList is a collection of GnuPGPublicKey objects
974
message GnuPGPublicKeyList {
975
  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
976

977
  repeated GnuPGPublicKey items = 2;
978
}
979

980
// HealthStatus contains information about the currently observed health state of an application or resource
981
message HealthStatus {
982
  // Status holds the status code of the application or resource
983
  optional string status = 1;
984

985
  // Message is a human-readable informational message describing the health status
986
  optional string message = 2;
987
}
988

989
// HelmFileParameter is a file parameter that's passed to helm template during manifest generation
990
message HelmFileParameter {
991
  // Name is the name of the Helm parameter
992
  optional string name = 1;
993

994
  // Path is the path to the file containing the values for the Helm parameter
995
  optional string path = 2;
996
}
997

998
// HelmOptions holds helm options
999
message HelmOptions {
1000
  repeated string valuesFileSchemes = 1;
1001
}
1002

1003
// HelmParameter is a parameter that's passed to helm template during manifest generation
1004
message HelmParameter {
1005
  // Name is the name of the Helm parameter
1006
  optional string name = 1;
1007

1008
  // Value is the value for the Helm parameter
1009
  optional string value = 2;
1010

1011
  // ForceString determines whether to tell Helm to interpret booleans and numbers as strings
1012
  optional bool forceString = 3;
1013
}
1014

1015
// HostInfo holds host name and resources metrics
1016
// TODO: describe purpose of this type
1017
// TODO: describe members of this type
1018
message HostInfo {
1019
  optional string name = 1;
1020

1021
  repeated HostResourceInfo resourcesInfo = 2;
1022

1023
  optional k8s.io.api.core.v1.NodeSystemInfo systemInfo = 3;
1024
}
1025

1026
// TODO: describe this type
1027
message HostResourceInfo {
1028
  optional string resourceName = 1;
1029

1030
  optional int64 requestedByApp = 2;
1031

1032
  optional int64 requestedByNeighbors = 3;
1033

1034
  optional int64 capacity = 4;
1035
}
1036

1037
message Info {
1038
  optional string name = 1;
1039

1040
  optional string value = 2;
1041
}
1042

1043
// InfoItem contains arbitrary, human readable information about an application
1044
message InfoItem {
1045
  // Name is a human readable title for this piece of information.
1046
  optional string name = 1;
1047

1048
  // Value is human readable content.
1049
  optional string value = 2;
1050
}
1051

1052
// JWTToken holds the issuedAt and expiresAt values of a token
1053
message JWTToken {
1054
  optional int64 iat = 1;
1055

1056
  optional int64 exp = 2;
1057

1058
  optional string id = 3;
1059
}
1060

1061
// JWTTokens represents a list of JWT tokens
1062
message JWTTokens {
1063
  repeated JWTToken items = 1;
1064
}
1065

1066
// JsonnetVar represents a variable to be passed to jsonnet during manifest generation
1067
message JsonnetVar {
1068
  optional string name = 1;
1069

1070
  optional string value = 2;
1071

1072
  optional bool code = 3;
1073
}
1074

1075
// KnownTypeField contains mapping between CRD field and known Kubernetes type.
1076
// This is mainly used for unit conversion in unknown resources (e.g. 0.1 == 100mi)
1077
// TODO: Describe the members of this type
1078
message KnownTypeField {
1079
  optional string field = 1;
1080

1081
  optional string type = 2;
1082
}
1083

1084
message KustomizeGvk {
1085
  optional string group = 1;
1086

1087
  optional string version = 2;
1088

1089
  optional string kind = 3;
1090
}
1091

1092
// KustomizeOptions are options for kustomize to use when building manifests
1093
message KustomizeOptions {
1094
  // BuildOptions is a string of build parameters to use when calling `kustomize build`
1095
  optional string buildOptions = 1;
1096

1097
  // BinaryPath holds optional path to kustomize binary
1098
  optional string binaryPath = 2;
1099
}
1100

1101
message KustomizePatch {
1102
  optional string path = 1;
1103

1104
  optional string patch = 2;
1105

1106
  optional KustomizeSelector target = 3;
1107

1108
  map<string, bool> options = 4;
1109
}
1110

1111
message KustomizeReplica {
1112
  // Name of Deployment or StatefulSet
1113
  optional string name = 1;
1114

1115
  // Number of replicas
1116
  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString count = 2;
1117
}
1118

1119
message KustomizeResId {
1120
  optional KustomizeGvk gvk = 1;
1121

1122
  optional string name = 2;
1123

1124
  optional string namespace = 3;
1125
}
1126

1127
message KustomizeSelector {
1128
  optional KustomizeResId resId = 1;
1129

1130
  optional string annotationSelector = 2;
1131

1132
  optional string labelSelector = 3;
1133
}
1134

1135
// ListGenerator include items info
1136
message ListGenerator {
1137
  repeated k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1.JSON elements = 1;
1138

1139
  optional ApplicationSetTemplate template = 2;
1140

1141
  optional string elementsYaml = 3;
1142
}
1143

1144
message ManagedNamespaceMetadata {
1145
  map<string, string> labels = 1;
1146

1147
  map<string, string> annotations = 2;
1148
}
1149

1150
// MatrixGenerator generates the cartesian product of two sets of parameters. The parameters are defined by two nested
1151
// generators.
1152
message MatrixGenerator {
1153
  repeated ApplicationSetNestedGenerator generators = 1;
1154

1155
  optional ApplicationSetTemplate template = 2;
1156
}
1157

1158
// MergeGenerator merges the output of two or more generators. Where the values for all specified merge keys are equal
1159
// between two sets of generated parameters, the parameter sets will be merged with the parameters from the latter
1160
// generator taking precedence. Parameter sets with merge keys not present in the base generator's params will be
1161
// ignored.
1162
// For example, if the first generator produced [{a: '1', b: '2'}, {c: '1', d: '1'}] and the second generator produced
1163
// [{'a': 'override'}], the united parameters for merge keys = ['a'] would be
1164
// [{a: 'override', b: '1'}, {c: '1', d: '1'}].
1165
//
1166
// MergeGenerator supports template overriding. If a MergeGenerator is one of multiple top-level generators, its
1167
// template will be merged with the top-level generator before the parameters are applied.
1168
message MergeGenerator {
1169
  repeated ApplicationSetNestedGenerator generators = 1;
1170

1171
  repeated string mergeKeys = 2;
1172

1173
  optional ApplicationSetTemplate template = 3;
1174
}
1175

1176
// NestedMatrixGenerator is a MatrixGenerator nested under another combination-type generator (MatrixGenerator or
1177
// MergeGenerator). NestedMatrixGenerator does not have an override template, because template overriding has no meaning
1178
// within the constituent generators of combination-type generators.
1179
//
1180
// NOTE: Nested matrix generator is not included directly in the CRD struct, instead it is included
1181
// as a generic 'apiextensionsv1.JSON' object, and then marshalled into a NestedMatrixGenerator
1182
// when processed.
1183
message NestedMatrixGenerator {
1184
  repeated ApplicationSetTerminalGenerator generators = 1;
1185
}
1186

1187
// NestedMergeGenerator is a MergeGenerator nested under another combination-type generator (MatrixGenerator or
1188
// MergeGenerator). NestedMergeGenerator does not have an override template, because template overriding has no meaning
1189
// within the constituent generators of combination-type generators.
1190
//
1191
// NOTE: Nested merge generator is not included directly in the CRD struct, instead it is included
1192
// as a generic 'apiextensionsv1.JSON' object, and then marshalled into a NestedMergeGenerator
1193
// when processed.
1194
message NestedMergeGenerator {
1195
  repeated ApplicationSetTerminalGenerator generators = 1;
1196

1197
  repeated string mergeKeys = 2;
1198
}
1199

1200
// Operation contains information about a requested or running operation
1201
message Operation {
1202
  // Sync contains parameters for the operation
1203
  optional SyncOperation sync = 1;
1204

1205
  // InitiatedBy contains information about who initiated the operations
1206
  optional OperationInitiator initiatedBy = 2;
1207

1208
  // Info is a list of informational items for this operation
1209
  repeated Info info = 3;
1210

1211
  // Retry controls the strategy to apply if a sync fails
1212
  optional RetryStrategy retry = 4;
1213
}
1214

1215
// OperationInitiator contains information about the initiator of an operation
1216
message OperationInitiator {
1217
  // Username contains the name of a user who started operation
1218
  optional string username = 1;
1219

1220
  // Automated is set to true if operation was initiated automatically by the application controller.
1221
  optional bool automated = 2;
1222
}
1223

1224
// OperationState contains information about state of a running operation
1225
message OperationState {
1226
  // Operation is the original requested operation
1227
  optional Operation operation = 1;
1228

1229
  // Phase is the current phase of the operation
1230
  optional string phase = 2;
1231

1232
  // Message holds any pertinent messages when attempting to perform operation (typically errors).
1233
  optional string message = 3;
1234

1235
  // SyncResult is the result of a Sync operation
1236
  optional SyncOperationResult syncResult = 4;
1237

1238
  // StartedAt contains time of operation start
1239
  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 6;
1240

1241
  // FinishedAt contains time of operation completion
1242
  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 7;
1243

1244
  // RetryCount contains time of operation retries
1245
  optional int64 retryCount = 8;
1246
}
1247

1248
message OptionalArray {
1249
  // Array is the value of an array type parameter.
1250
  // +optional
1251
  repeated string array = 1;
1252
}
1253

1254
message OptionalMap {
1255
  // Map is the value of a map type parameter.
1256
  // +optional
1257
  map<string, string> map = 1;
1258
}
1259

1260
// OrphanedResourceKey is a reference to a resource to be ignored from
1261
message OrphanedResourceKey {
1262
  optional string group = 1;
1263

1264
  optional string kind = 2;
1265

1266
  optional string name = 3;
1267
}
1268

1269
// OrphanedResourcesMonitorSettings holds settings of orphaned resources monitoring
1270
message OrphanedResourcesMonitorSettings {
1271
  // Warn indicates if warning condition should be created for apps which have orphaned resources
1272
  optional bool warn = 1;
1273

1274
  // Ignore contains a list of resources that are to be excluded from orphaned resources monitoring
1275
  repeated OrphanedResourceKey ignore = 2;
1276
}
1277

1278
// OverrideIgnoreDiff contains configurations about how fields should be ignored during diffs between
1279
// the desired state and live state
1280
message OverrideIgnoreDiff {
1281
  // JSONPointers is a JSON path list following the format defined in RFC4627 (https://datatracker.ietf.org/doc/html/rfc6902#section-3)
1282
  repeated string jSONPointers = 1;
1283

1284
  // JQPathExpressions is a JQ path list that will be evaludated during the diff process
1285
  repeated string jqPathExpressions = 2;
1286

1287
  // ManagedFieldsManagers is a list of trusted managers. Fields mutated by those managers will take precedence over the
1288
  // desired state defined in the SCM and won't be displayed in diffs
1289
  repeated string managedFieldsManagers = 3;
1290
}
1291

1292
message PluginConfigMapRef {
1293
  // Name of the ConfigMap
1294
  optional string name = 1;
1295
}
1296

1297
// PluginGenerator defines connection info specific to Plugin.
1298
message PluginGenerator {
1299
  optional PluginConfigMapRef configMapRef = 1;
1300

1301
  optional PluginInput input = 2;
1302

1303
  // RequeueAfterSeconds determines how long the ApplicationSet controller will wait before reconciling the ApplicationSet again.
1304
  optional int64 requeueAfterSeconds = 3;
1305

1306
  optional ApplicationSetTemplate template = 4;
1307

1308
  // Values contains key/value pairs which are passed directly as parameters to the template. These values will not be
1309
  // sent as parameters to the plugin.
1310
  map<string, string> values = 5;
1311
}
1312

1313
message PluginInput {
1314
  // Parameters contains the information to pass to the plugin. It is a map. The keys must be strings, and the
1315
  // values can be any type.
1316
  map<string, k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1.JSON> parameters = 1;
1317
}
1318

1319
// ProjectRole represents a role that has access to a project
1320
message ProjectRole {
1321
  // Name is a name for this role
1322
  optional string name = 1;
1323

1324
  // Description is a description of the role
1325
  optional string description = 2;
1326

1327
  // Policies Stores a list of casbin formatted strings that define access policies for the role in the project
1328
  repeated string policies = 3;
1329

1330
  // JWTTokens are a list of generated JWT tokens bound to this role
1331
  repeated JWTToken jwtTokens = 4;
1332

1333
  // Groups are a list of OIDC group claims bound to this role
1334
  repeated string groups = 5;
1335
}
1336

1337
// PullRequestGenerator defines a generator that scrapes a PullRequest API to find candidate pull requests.
1338
message PullRequestGenerator {
1339
  // Which provider to use and config for it.
1340
  optional PullRequestGeneratorGithub github = 1;
1341

1342
  optional PullRequestGeneratorGitLab gitlab = 2;
1343

1344
  optional PullRequestGeneratorGitea gitea = 3;
1345

1346
  optional PullRequestGeneratorBitbucketServer bitbucketServer = 4;
1347

1348
  // Filters for which pull requests should be considered.
1349
  repeated PullRequestGeneratorFilter filters = 5;
1350

1351
  // Standard parameters.
1352
  optional int64 requeueAfterSeconds = 6;
1353

1354
  optional ApplicationSetTemplate template = 7;
1355

1356
  optional PullRequestGeneratorBitbucket bitbucket = 8;
1357

1358
  // Additional provider to use and config for it.
1359
  optional PullRequestGeneratorAzureDevOps azuredevops = 9;
1360
}
1361

1362
// PullRequestGeneratorAzureDevOps defines connection info specific to AzureDevOps.
1363
message PullRequestGeneratorAzureDevOps {
1364
  // Azure DevOps org to scan. Required.
1365
  optional string organization = 1;
1366

1367
  // Azure DevOps project name to scan. Required.
1368
  optional string project = 2;
1369

1370
  // Azure DevOps repo name to scan. Required.
1371
  optional string repo = 3;
1372

1373
  // The Azure DevOps API URL to talk to. If blank, use https://dev.azure.com/.
1374
  optional string api = 4;
1375

1376
  // Authentication token reference.
1377
  optional SecretRef tokenRef = 5;
1378

1379
  // Labels is used to filter the PRs that you want to target
1380
  repeated string labels = 6;
1381
}
1382

1383
// PullRequestGeneratorBitbucket defines connection info specific to Bitbucket.
1384
message PullRequestGeneratorBitbucket {
1385
  // Workspace to scan. Required.
1386
  optional string owner = 1;
1387

1388
  // Repo name to scan. Required.
1389
  optional string repo = 2;
1390

1391
  // The Bitbucket REST API URL to talk to. If blank, uses https://api.bitbucket.org/2.0.
1392
  optional string api = 3;
1393

1394
  // Credentials for Basic auth
1395
  optional BasicAuthBitbucketServer basicAuth = 4;
1396

1397
  // Credentials for AppToken (Bearer auth)
1398
  optional BearerTokenBitbucketCloud bearerToken = 5;
1399
}
1400

1401
// PullRequestGeneratorBitbucketServer defines connection info specific to BitbucketServer.
1402
message PullRequestGeneratorBitbucketServer {
1403
  // Project to scan. Required.
1404
  optional string project = 1;
1405

1406
  // Repo name to scan. Required.
1407
  optional string repo = 2;
1408

1409
  // The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest Required.
1410
  optional string api = 3;
1411

1412
  // Credentials for Basic auth
1413
  optional BasicAuthBitbucketServer basicAuth = 4;
1414
}
1415

1416
// PullRequestGeneratorFilter is a single pull request filter.
1417
// If multiple filter types are set on a single struct, they will be AND'd together. All filters must
1418
// pass for a pull request to be included.
1419
message PullRequestGeneratorFilter {
1420
  optional string branchMatch = 1;
1421

1422
  optional string targetBranchMatch = 2;
1423
}
1424

1425
// PullRequestGeneratorGitLab defines connection info specific to GitLab.
1426
message PullRequestGeneratorGitLab {
1427
  // GitLab project to scan. Required.
1428
  optional string project = 1;
1429

1430
  // The GitLab API URL to talk to. If blank, uses https://gitlab.com/.
1431
  optional string api = 2;
1432

1433
  // Authentication token reference.
1434
  optional SecretRef tokenRef = 3;
1435

1436
  // Labels is used to filter the MRs that you want to target
1437
  repeated string labels = 4;
1438

1439
  // PullRequestState is an additional MRs filter to get only those with a certain state. Default: "" (all states)
1440
  optional string pullRequestState = 5;
1441

1442
  // Skips validating the SCM provider's TLS certificate - useful for self-signed certificates.; default: false
1443
  optional bool insecure = 6;
1444
}
1445

1446
// PullRequestGeneratorGitea defines connection info specific to Gitea.
1447
message PullRequestGeneratorGitea {
1448
  // Gitea org or user to scan. Required.
1449
  optional string owner = 1;
1450

1451
  // Gitea repo name to scan. Required.
1452
  optional string repo = 2;
1453

1454
  // The Gitea API URL to talk to. Required
1455
  optional string api = 3;
1456

1457
  // Authentication token reference.
1458
  optional SecretRef tokenRef = 4;
1459

1460
  // Allow insecure tls, for self-signed certificates; default: false.
1461
  optional bool insecure = 5;
1462
}
1463

1464
// PullRequestGenerator defines connection info specific to GitHub.
1465
message PullRequestGeneratorGithub {
1466
  // GitHub org or user to scan. Required.
1467
  optional string owner = 1;
1468

1469
  // GitHub repo name to scan. Required.
1470
  optional string repo = 2;
1471

1472
  // The GitHub API URL to talk to. If blank, use https://api.github.com/.
1473
  optional string api = 3;
1474

1475
  // Authentication token reference.
1476
  optional SecretRef tokenRef = 4;
1477

1478
  // AppSecretName is a reference to a GitHub App repo-creds secret with permission to access pull requests.
1479
  optional string appSecretName = 5;
1480

1481
  // Labels is used to filter the PRs that you want to target
1482
  repeated string labels = 6;
1483
}
1484

1485
message RefTarget {
1486
  optional Repository repo = 1;
1487

1488
  optional string targetRevision = 2;
1489

1490
  optional string chart = 3;
1491
}
1492

1493
// RepoCreds holds the definition for repository credentials
1494
message RepoCreds {
1495
  // URL is the URL that this credentials matches to
1496
  optional string url = 1;
1497

1498
  // Username for authenticating at the repo server
1499
  optional string username = 2;
1500

1501
  // Password for authenticating at the repo server
1502
  optional string password = 3;
1503

1504
  // SSHPrivateKey contains the private key data for authenticating at the repo server using SSH (only Git repos)
1505
  optional string sshPrivateKey = 4;
1506

1507
  // TLSClientCertData specifies the TLS client cert data for authenticating at the repo server
1508
  optional string tlsClientCertData = 5;
1509

1510
  // TLSClientCertKey specifies the TLS client cert key for authenticating at the repo server
1511
  optional string tlsClientCertKey = 6;
1512

1513
  // GithubAppPrivateKey specifies the private key PEM data for authentication via GitHub app
1514
  optional string githubAppPrivateKey = 7;
1515

1516
  // GithubAppId specifies the Github App ID of the app used to access the repo for GitHub app authentication
1517
  optional int64 githubAppID = 8;
1518

1519
  // GithubAppInstallationId specifies the ID of the installed GitHub App for GitHub app authentication
1520
  optional int64 githubAppInstallationID = 9;
1521

1522
  // GithubAppEnterpriseBaseURL specifies the GitHub API URL for GitHub app authentication. If empty will default to https://api.github.com
1523
  optional string githubAppEnterpriseBaseUrl = 10;
1524

1525
  // EnableOCI specifies whether helm-oci support should be enabled for this repo
1526
  optional bool enableOCI = 11;
1527

1528
  // Type specifies the type of the repoCreds. Can be either "git" or "helm. "git" is assumed if empty or absent.
1529
  optional string type = 12;
1530

1531
  // GCPServiceAccountKey specifies the service account key in JSON format to be used for getting credentials to Google Cloud Source repos
1532
  optional string gcpServiceAccountKey = 13;
1533

1534
  // Proxy specifies the HTTP/HTTPS proxy used to access repos at the repo server
1535
  optional string proxy = 19;
1536

1537
  // ForceHttpBasicAuth specifies whether Argo CD should attempt to force basic auth for HTTP connections
1538
  optional bool forceHttpBasicAuth = 20;
1539
}
1540

1541
// RepositoryList is a collection of Repositories.
1542
message RepoCredsList {
1543
  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
1544

1545
  repeated RepoCreds items = 2;
1546
}
1547

1548
// Repository is a repository holding application configurations
1549
message Repository {
1550
  // Repo contains the URL to the remote repository
1551
  optional string repo = 1;
1552

1553
  // Username contains the user name used for authenticating at the remote repository
1554
  optional string username = 2;
1555

1556
  // Password contains the password or PAT used for authenticating at the remote repository
1557
  optional string password = 3;
1558

1559
  // SSHPrivateKey contains the PEM data for authenticating at the repo server. Only used with Git repos.
1560
  optional string sshPrivateKey = 4;
1561

1562
  // ConnectionState contains information about the current state of connection to the repository server
1563
  optional ConnectionState connectionState = 5;
1564

1565
  // InsecureIgnoreHostKey should not be used anymore, Insecure is favoured
1566
  // Used only for Git repos
1567
  optional bool insecureIgnoreHostKey = 6;
1568

1569
  // Insecure specifies whether the connection to the repository ignores any errors when verifying TLS certificates or SSH host keys
1570
  optional bool insecure = 7;
1571

1572
  // EnableLFS specifies whether git-lfs support should be enabled for this repo. Only valid for Git repositories.
1573
  optional bool enableLfs = 8;
1574

1575
  // TLSClientCertData contains a certificate in PEM format for authenticating at the repo server
1576
  optional string tlsClientCertData = 9;
1577

1578
  // TLSClientCertKey contains a private key in PEM format for authenticating at the repo server
1579
  optional string tlsClientCertKey = 10;
1580

1581
  // Type specifies the type of the repo. Can be either "git" or "helm. "git" is assumed if empty or absent.
1582
  optional string type = 11;
1583

1584
  // Name specifies a name to be used for this repo. Only used with Helm repos
1585
  optional string name = 12;
1586

1587
  // Whether credentials were inherited from a credential set
1588
  optional bool inheritedCreds = 13;
1589

1590
  // EnableOCI specifies whether helm-oci support should be enabled for this repo
1591
  optional bool enableOCI = 14;
1592

1593
  // Github App Private Key PEM data
1594
  optional string githubAppPrivateKey = 15;
1595

1596
  // GithubAppId specifies the ID of the GitHub app used to access the repo
1597
  optional int64 githubAppID = 16;
1598

1599
  // GithubAppInstallationId specifies the installation ID of the GitHub App used to access the repo
1600
  optional int64 githubAppInstallationID = 17;
1601

1602
  // GithubAppEnterpriseBaseURL specifies the base URL of GitHub Enterprise installation. If empty will default to https://api.github.com
1603
  optional string githubAppEnterpriseBaseUrl = 18;
1604

1605
  // Proxy specifies the HTTP/HTTPS proxy used to access the repo
1606
  optional string proxy = 19;
1607

1608
  // Reference between project and repository that allow you automatically to be added as item inside SourceRepos project entity
1609
  optional string project = 20;
1610

1611
  // GCPServiceAccountKey specifies the service account key in JSON format to be used for getting credentials to Google Cloud Source repos
1612
  optional string gcpServiceAccountKey = 21;
1613

1614
  // ForceHttpBasicAuth specifies whether Argo CD should attempt to force basic auth for HTTP connections
1615
  optional bool forceHttpBasicAuth = 22;
1616
}
1617

1618
// A RepositoryCertificate is either SSH known hosts entry or TLS certificate
1619
message RepositoryCertificate {
1620
  // ServerName specifies the DNS name of the server this certificate is intended for
1621
  optional string serverName = 1;
1622

1623
  // CertType specifies the type of the certificate - currently one of "https" or "ssh"
1624
  optional string certType = 2;
1625

1626
  // CertSubType specifies the sub type of the cert, i.e. "ssh-rsa"
1627
  optional string certSubType = 3;
1628

1629
  // CertData contains the actual certificate data, dependent on the certificate type
1630
  optional bytes certData = 4;
1631

1632
  // CertInfo will hold additional certificate info, depdendent on the certificate type (e.g. SSH fingerprint, X509 CommonName)
1633
  optional string certInfo = 5;
1634
}
1635

1636
// RepositoryCertificateList is a collection of RepositoryCertificates
1637
message RepositoryCertificateList {
1638
  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
1639

1640
  // List of certificates to be processed
1641
  repeated RepositoryCertificate items = 2;
1642
}
1643

1644
// RepositoryList is a collection of Repositories.
1645
message RepositoryList {
1646
  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
1647

1648
  repeated Repository items = 2;
1649
}
1650

1651
// TODO: describe this type
1652
// TODO: describe members of this type
1653
message ResourceAction {
1654
  optional string name = 1;
1655

1656
  repeated ResourceActionParam params = 2;
1657

1658
  optional bool disabled = 3;
1659

1660
  optional string iconClass = 4;
1661

1662
  optional string displayName = 5;
1663
}
1664

1665
// TODO: describe this type
1666
// TODO: describe members of this type
1667
message ResourceActionDefinition {
1668
  optional string name = 1;
1669

1670
  optional string actionLua = 2;
1671
}
1672

1673
// TODO: describe this type
1674
// TODO: describe members of this type
1675
message ResourceActionParam {
1676
  optional string name = 1;
1677

1678
  optional string value = 2;
1679

1680
  optional string type = 3;
1681

1682
  optional string default = 4;
1683
}
1684

1685
// TODO: describe this type
1686
// TODO: describe members of this type
1687
message ResourceActions {
1688
  optional string actionDiscoveryLua = 1;
1689

1690
  repeated ResourceActionDefinition definitions = 2;
1691
}
1692

1693
// ResourceDiff holds the diff of a live and target resource object
1694
// TODO: describe members of this type
1695
message ResourceDiff {
1696
  optional string group = 1;
1697

1698
  optional string kind = 2;
1699

1700
  optional string namespace = 3;
1701

1702
  optional string name = 4;
1703

1704
  // TargetState contains the JSON serialized resource manifest defined in the Git/Helm
1705
  optional string targetState = 5;
1706

1707
  // TargetState contains the JSON live resource manifest
1708
  optional string liveState = 6;
1709

1710
  // Diff contains the JSON patch between target and live resource
1711
  // Deprecated: use NormalizedLiveState and PredictedLiveState to render the difference
1712
  optional string diff = 7;
1713

1714
  optional bool hook = 8;
1715

1716
  // NormalizedLiveState contains JSON serialized live resource state with applied normalizations
1717
  optional string normalizedLiveState = 9;
1718

1719
  // PredictedLiveState contains JSON serialized resource state that is calculated based on normalized and target resource state
1720
  optional string predictedLiveState = 10;
1721

1722
  optional string resourceVersion = 11;
1723

1724
  optional bool modified = 12;
1725
}
1726

1727
// ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state.
1728
message ResourceIgnoreDifferences {
1729
  optional string group = 1;
1730

1731
  optional string kind = 2;
1732

1733
  optional string name = 3;
1734

1735
  optional string namespace = 4;
1736

1737
  repeated string jsonPointers = 5;
1738

1739
  repeated string jqPathExpressions = 6;
1740

1741
  // ManagedFieldsManagers is a list of trusted managers. Fields mutated by those managers will take precedence over the
1742
  // desired state defined in the SCM and won't be displayed in diffs
1743
  repeated string managedFieldsManagers = 7;
1744
}
1745

1746
// ResourceNetworkingInfo holds networking resource related information
1747
// TODO: describe members of this type
1748
message ResourceNetworkingInfo {
1749
  map<string, string> targetLabels = 1;
1750

1751
  repeated ResourceRef targetRefs = 2;
1752

1753
  map<string, string> labels = 3;
1754

1755
  repeated k8s.io.api.core.v1.LoadBalancerIngress ingress = 4;
1756

1757
  // ExternalURLs holds list of URLs which should be available externally. List is populated for ingress resources using rules hostnames.
1758
  repeated string externalURLs = 5;
1759
}
1760

1761
// ResourceNode contains information about live resource and its children
1762
// TODO: describe members of this type
1763
message ResourceNode {
1764
  optional ResourceRef resourceRef = 1;
1765

1766
  repeated ResourceRef parentRefs = 2;
1767

1768
  repeated InfoItem info = 3;
1769

1770
  optional ResourceNetworkingInfo networkingInfo = 4;
1771

1772
  optional string resourceVersion = 5;
1773

1774
  repeated string images = 6;
1775

1776
  optional HealthStatus health = 7;
1777

1778
  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time createdAt = 8;
1779
}
1780

1781
// ResourceOverride holds configuration to customize resource diffing and health assessment
1782
// TODO: describe the members of this type
1783
message ResourceOverride {
1784
  optional string healthLua = 1;
1785

1786
  optional bool useOpenLibs = 5;
1787

1788
  optional string actions = 3;
1789

1790
  optional OverrideIgnoreDiff ignoreDifferences = 2;
1791

1792
  optional OverrideIgnoreDiff ignoreResourceUpdates = 6;
1793

1794
  repeated KnownTypeField knownTypeFields = 4;
1795
}
1796

1797
// ResourceRef includes fields which uniquely identify a resource
1798
message ResourceRef {
1799
  optional string group = 1;
1800

1801
  optional string version = 2;
1802

1803
  optional string kind = 3;
1804

1805
  optional string namespace = 4;
1806

1807
  optional string name = 5;
1808

1809
  optional string uid = 6;
1810
}
1811

1812
// ResourceResult holds the operation result details of a specific resource
1813
message ResourceResult {
1814
  // Group specifies the API group of the resource
1815
  optional string group = 1;
1816

1817
  // Version specifies the API version of the resource
1818
  optional string version = 2;
1819

1820
  // Kind specifies the API kind of the resource
1821
  optional string kind = 3;
1822

1823
  // Namespace specifies the target namespace of the resource
1824
  optional string namespace = 4;
1825

1826
  // Name specifies the name of the resource
1827
  optional string name = 5;
1828

1829
  // Status holds the final result of the sync. Will be empty if the resources is yet to be applied/pruned and is always zero-value for hooks
1830
  optional string status = 6;
1831

1832
  // Message contains an informational or error message for the last sync OR operation
1833
  optional string message = 7;
1834

1835
  // HookType specifies the type of the hook. Empty for non-hook resources
1836
  optional string hookType = 8;
1837

1838
  // HookPhase contains the state of any operation associated with this resource OR hook
1839
  // This can also contain values for non-hook resources.
1840
  optional string hookPhase = 9;
1841

1842
  // SyncPhase indicates the particular phase of the sync that this result was acquired in
1843
  optional string syncPhase = 10;
1844
}
1845

1846
// ResourceStatus holds the current sync and health status of a resource
1847
// TODO: describe members of this type
1848
message ResourceStatus {
1849
  optional string group = 1;
1850

1851
  optional string version = 2;
1852

1853
  optional string kind = 3;
1854

1855
  optional string namespace = 4;
1856

1857
  optional string name = 5;
1858

1859
  optional string status = 6;
1860

1861
  optional HealthStatus health = 7;
1862

1863
  optional bool hook = 8;
1864

1865
  optional bool requiresPruning = 9;
1866

1867
  optional int64 syncWave = 10;
1868
}
1869

1870
// RetryStrategy contains information about the strategy to apply when a sync failed
1871
message RetryStrategy {
1872
  // Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
1873
  optional int64 limit = 1;
1874

1875
  // Backoff controls how to backoff on subsequent retries of failed syncs
1876
  optional Backoff backoff = 2;
1877
}
1878

1879
// RevisionHistory contains history information about a previous sync
1880
message RevisionHistory {
1881
  // Revision holds the revision the sync was performed against
1882
  optional string revision = 2;
1883

1884
  // DeployedAt holds the time the sync operation completed
1885
  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time deployedAt = 4;
1886

1887
  // ID is an auto incrementing identifier of the RevisionHistory
1888
  optional int64 id = 5;
1889

1890
  // Source is a reference to the application source used for the sync operation
1891
  optional ApplicationSource source = 6;
1892

1893
  // DeployStartedAt holds the time the sync operation started
1894
  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time deployStartedAt = 7;
1895

1896
  // Sources is a reference to the application sources used for the sync operation
1897
  repeated ApplicationSource sources = 8;
1898

1899
  // Revisions holds the revision of each source in sources field the sync was performed against
1900
  repeated string revisions = 9;
1901

1902
  // InitiatedBy contains information about who initiated the operations
1903
  optional OperationInitiator initiatedBy = 10;
1904
}
1905

1906
// RevisionMetadata contains metadata for a specific revision in a Git repository
1907
message RevisionMetadata {
1908
  // who authored this revision,
1909
  // typically their name and email, e.g. "John Doe <john_doe@my-company.com>",
1910
  // but might not match this example
1911
  optional string author = 1;
1912

1913
  // Date specifies when the revision was authored
1914
  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time date = 2;
1915

1916
  // Tags specifies any tags currently attached to the revision
1917
  // Floating tags can move from one revision to another
1918
  repeated string tags = 3;
1919

1920
  // Message contains the message associated with the revision, most likely the commit message.
1921
  optional string message = 4;
1922

1923
  // SignatureInfo contains a hint on the signer if the revision was signed with GPG, and signature verification is enabled.
1924
  optional string signatureInfo = 5;
1925
}
1926

1927
// SCMProviderGenerator defines a generator that scrapes a SCMaaS API to find candidate repos.
1928
message SCMProviderGenerator {
1929
  // Which provider to use and config for it.
1930
  optional SCMProviderGeneratorGithub github = 1;
1931

1932
  optional SCMProviderGeneratorGitlab gitlab = 2;
1933

1934
  optional SCMProviderGeneratorBitbucket bitbucket = 3;
1935

1936
  optional SCMProviderGeneratorBitbucketServer bitbucketServer = 4;
1937

1938
  optional SCMProviderGeneratorGitea gitea = 5;
1939

1940
  optional SCMProviderGeneratorAzureDevOps azureDevOps = 6;
1941

1942
  // Filters for which repos should be considered.
1943
  repeated SCMProviderGeneratorFilter filters = 7;
1944

1945
  // Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers
1946
  // necessarily support all protocols.
1947
  optional string cloneProtocol = 8;
1948

1949
  // Standard parameters.
1950
  optional int64 requeueAfterSeconds = 9;
1951

1952
  optional ApplicationSetTemplate template = 10;
1953

1954
  // Values contains key/value pairs which are passed directly as parameters to the template
1955
  map<string, string> values = 11;
1956

1957
  optional SCMProviderGeneratorAWSCodeCommit awsCodeCommit = 12;
1958
}
1959

1960
// SCMProviderGeneratorAWSCodeCommit defines connection info specific to AWS CodeCommit.
1961
message SCMProviderGeneratorAWSCodeCommit {
1962
  // TagFilters provides the tag filter(s) for repo discovery
1963
  repeated TagFilter tagFilters = 1;
1964

1965
  // Role provides the AWS IAM role to assume, for cross-account repo discovery
1966
  // if not provided, AppSet controller will use its pod/node identity to discover.
1967
  optional string role = 2;
1968

1969
  // Region provides the AWS region to discover repos.
1970
  // if not provided, AppSet controller will infer the current region from environment.
1971
  optional string region = 3;
1972

1973
  // Scan all branches instead of just the default branch.
1974
  optional bool allBranches = 4;
1975
}
1976

1977
// SCMProviderGeneratorAzureDevOps defines connection info specific to Azure DevOps.
1978
message SCMProviderGeneratorAzureDevOps {
1979
  // Azure Devops organization. Required. E.g. "my-organization".
1980
  optional string organization = 5;
1981

1982
  // The URL to Azure DevOps. If blank, use https://dev.azure.com.
1983
  optional string api = 6;
1984

1985
  // Azure Devops team project. Required. E.g. "my-team".
1986
  optional string teamProject = 7;
1987

1988
  // The Personal Access Token (PAT) to use when connecting. Required.
1989
  optional SecretRef accessTokenRef = 8;
1990

1991
  // Scan all branches instead of just the default branch.
1992
  optional bool allBranches = 9;
1993
}
1994

1995
// SCMProviderGeneratorBitbucket defines connection info specific to Bitbucket Cloud (API version 2).
1996
message SCMProviderGeneratorBitbucket {
1997
  // Bitbucket workspace to scan. Required.
1998
  optional string owner = 1;
1999

2000
  // Bitbucket user to use when authenticating.  Should have a "member" role to be able to read all repositories and branches.  Required
2001
  optional string user = 2;
2002

2003
  // The app password to use for the user.  Required. See: https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/
2004
  optional SecretRef appPasswordRef = 3;
2005

2006
  // Scan all branches instead of just the main branch.
2007
  optional bool allBranches = 4;
2008
}
2009

2010
// SCMProviderGeneratorBitbucketServer defines connection info specific to Bitbucket Server.
2011
message SCMProviderGeneratorBitbucketServer {
2012
  // Project to scan. Required.
2013
  optional string project = 1;
2014

2015
  // The Bitbucket Server REST API URL to talk to. Required.
2016
  optional string api = 2;
2017

2018
  // Credentials for Basic auth
2019
  optional BasicAuthBitbucketServer basicAuth = 3;
2020

2021
  // Scan all branches instead of just the default branch.
2022
  optional bool allBranches = 4;
2023
}
2024

2025
// SCMProviderGeneratorFilter is a single repository filter.
2026
// If multiple filter types are set on a single struct, they will be AND'd together. All filters must
2027
// pass for a repo to be included.
2028
message SCMProviderGeneratorFilter {
2029
  // A regex for repo names.
2030
  optional string repositoryMatch = 1;
2031

2032
  // An array of paths, all of which must exist.
2033
  repeated string pathsExist = 2;
2034

2035
  // An array of paths, all of which must not exist.
2036
  repeated string pathsDoNotExist = 3;
2037

2038
  // A regex which must match at least one label.
2039
  optional string labelMatch = 4;
2040

2041
  // A regex which must match the branch name.
2042
  optional string branchMatch = 5;
2043
}
2044

2045
// SCMProviderGeneratorGitea defines a connection info specific to Gitea.
2046
message SCMProviderGeneratorGitea {
2047
  // Gitea organization or user to scan. Required.
2048
  optional string owner = 1;
2049

2050
  // The Gitea URL to talk to. For example https://gitea.mydomain.com/.
2051
  optional string api = 2;
2052

2053
  // Authentication token reference.
2054
  optional SecretRef tokenRef = 3;
2055

2056
  // Scan all branches instead of just the default branch.
2057
  optional bool allBranches = 4;
2058

2059
  // Allow self-signed TLS / Certificates; default: false
2060
  optional bool insecure = 5;
2061
}
2062

2063
// SCMProviderGeneratorGithub defines connection info specific to GitHub.
2064
message SCMProviderGeneratorGithub {
2065
  // GitHub org to scan. Required.
2066
  optional string organization = 1;
2067

2068
  // The GitHub API URL to talk to. If blank, use https://api.github.com/.
2069
  optional string api = 2;
2070

2071
  // Authentication token reference.
2072
  optional SecretRef tokenRef = 3;
2073

2074
  // AppSecretName is a reference to a GitHub App repo-creds secret.
2075
  optional string appSecretName = 4;
2076

2077
  // Scan all branches instead of just the default branch.
2078
  optional bool allBranches = 5;
2079
}
2080

2081
// SCMProviderGeneratorGitlab defines connection info specific to Gitlab.
2082
message SCMProviderGeneratorGitlab {
2083
  // Gitlab group to scan. Required.  You can use either the project id (recommended) or the full namespaced path.
2084
  optional string group = 1;
2085

2086
  // Recurse through subgroups (true) or scan only the base group (false).  Defaults to "false"
2087
  optional bool includeSubgroups = 2;
2088

2089
  // The Gitlab API URL to talk to.
2090
  optional string api = 3;
2091

2092
  // Authentication token reference.
2093
  optional SecretRef tokenRef = 4;
2094

2095
  // Scan all branches instead of just the default branch.
2096
  optional bool allBranches = 5;
2097

2098
  // Skips validating the SCM provider's TLS certificate - useful for self-signed certificates.; default: false
2099
  optional bool insecure = 6;
2100

2101
  // When recursing through subgroups, also include shared Projects (true) or scan only the subgroups under same path (false).  Defaults to "true"
2102
  optional bool includeSharedProjects = 7;
2103

2104
  // Filter repos list based on Gitlab Topic.
2105
  optional string topic = 8;
2106
}
2107

2108
// Utility struct for a reference to a secret key.
2109
message SecretRef {
2110
  optional string secretName = 1;
2111

2112
  optional string key = 2;
2113
}
2114

2115
// SignatureKey is the specification of a key required to verify commit signatures with
2116
message SignatureKey {
2117
  // The ID of the key in hexadecimal notation
2118
  optional string keyID = 1;
2119
}
2120

2121
// SyncOperation contains details about a sync operation.
2122
message SyncOperation {
2123
  // Revision is the revision (Git) or chart version (Helm) which to sync the application to
2124
  // If omitted, will use the revision specified in app spec.
2125
  optional string revision = 1;
2126

2127
  // Prune specifies to delete resources from the cluster that are no longer tracked in git
2128
  optional bool prune = 2;
2129

2130
  // DryRun specifies to perform a `kubectl apply --dry-run` without actually performing the sync
2131
  optional bool dryRun = 3;
2132

2133
  // SyncStrategy describes how to perform the sync
2134
  optional SyncStrategy syncStrategy = 4;
2135

2136
  // Resources describes which resources shall be part of the sync
2137
  repeated SyncOperationResource resources = 6;
2138

2139
  // Source overrides the source definition set in the application.
2140
  // This is typically set in a Rollback operation and is nil during a Sync operation
2141
  optional ApplicationSource source = 7;
2142

2143
  // Manifests is an optional field that overrides sync source with a local directory for development
2144
  repeated string manifests = 8;
2145

2146
  // SyncOptions provide per-sync sync-options, e.g. Validate=false
2147
  repeated string syncOptions = 9;
2148

2149
  // Sources overrides the source definition set in the application.
2150
  // This is typically set in a Rollback operation and is nil during a Sync operation
2151
  repeated ApplicationSource sources = 10;
2152

2153
  // Revisions is the list of revision (Git) or chart version (Helm) which to sync each source in sources field for the application to
2154
  // If omitted, will use the revision specified in app spec.
2155
  repeated string revisions = 11;
2156
}
2157

2158
// SyncOperationResource contains resources to sync.
2159
message SyncOperationResource {
2160
  optional string group = 1;
2161

2162
  optional string kind = 2;
2163

2164
  optional string name = 3;
2165

2166
  optional string namespace = 4;
2167
}
2168

2169
// SyncOperationResult represent result of sync operation
2170
message SyncOperationResult {
2171
  // Resources contains a list of sync result items for each individual resource in a sync operation
2172
  repeated ResourceResult resources = 1;
2173

2174
  // Revision holds the revision this sync operation was performed to
2175
  optional string revision = 2;
2176

2177
  // Source records the application source information of the sync, used for comparing auto-sync
2178
  optional ApplicationSource source = 3;
2179

2180
  // Source records the application source information of the sync, used for comparing auto-sync
2181
  repeated ApplicationSource sources = 4;
2182

2183
  // Revisions holds the revision this sync operation was performed for respective indexed source in sources field
2184
  repeated string revisions = 5;
2185

2186
  // ManagedNamespaceMetadata contains the current sync state of managed namespace metadata
2187
  optional ManagedNamespaceMetadata managedNamespaceMetadata = 6;
2188
}
2189

2190
// SyncPolicy controls when a sync will be performed in response to updates in git
2191
message SyncPolicy {
2192
  // Automated will keep an application synced to the target revision
2193
  optional SyncPolicyAutomated automated = 1;
2194

2195
  // Options allow you to specify whole app sync-options
2196
  repeated string syncOptions = 2;
2197

2198
  // Retry controls failed sync retry behavior
2199
  optional RetryStrategy retry = 3;
2200

2201
  // ManagedNamespaceMetadata controls metadata in the given namespace (if CreateNamespace=true)
2202
  optional ManagedNamespaceMetadata managedNamespaceMetadata = 4;
2203
}
2204

2205
// SyncPolicyAutomated controls the behavior of an automated sync
2206
message SyncPolicyAutomated {
2207
  // Prune specifies whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync (default: false)
2208
  optional bool prune = 1;
2209

2210
  // SelfHeal specifies whether to revert resources back to their desired state upon modification in the cluster (default: false)
2211
  optional bool selfHeal = 2;
2212

2213
  // AllowEmpty allows apps have zero live resources (default: false)
2214
  optional bool allowEmpty = 3;
2215
}
2216

2217
// SyncStatus contains information about the currently observed live and desired states of an application
2218
message SyncStatus {
2219
  // Status is the sync state of the comparison
2220
  optional string status = 1;
2221

2222
  // ComparedTo contains information about what has been compared
2223
  optional ComparedTo comparedTo = 2;
2224

2225
  // Revision contains information about the revision the comparison has been performed to
2226
  optional string revision = 3;
2227

2228
  // Revisions contains information about the revisions of multiple sources the comparison has been performed to
2229
  repeated string revisions = 4;
2230
}
2231

2232
// SyncStrategy controls the manner in which a sync is performed
2233
message SyncStrategy {
2234
  // Apply will perform a `kubectl apply` to perform the sync.
2235
  optional SyncStrategyApply apply = 1;
2236

2237
  // Hook will submit any referenced resources to perform the sync. This is the default strategy
2238
  optional SyncStrategyHook hook = 2;
2239
}
2240

2241
// SyncStrategyApply uses `kubectl apply` to perform the apply
2242
message SyncStrategyApply {
2243
  // Force indicates whether or not to supply the --force flag to `kubectl apply`.
2244
  // The --force flag deletes and re-create the resource, when PATCH encounters conflict and has
2245
  // retried for 5 times.
2246
  optional bool force = 1;
2247
}
2248

2249
// SyncStrategyHook will perform a sync using hooks annotations.
2250
// If no hook annotation is specified falls back to `kubectl apply`.
2251
message SyncStrategyHook {
2252
  // Embed SyncStrategyApply type to inherit any `apply` options
2253
  // +optional
2254
  optional SyncStrategyApply syncStrategyApply = 1;
2255
}
2256

2257
// SyncWindow contains the kind, time, duration and attributes that are used to assign the syncWindows to apps
2258
message SyncWindow {
2259
  // Kind defines if the window allows or blocks syncs
2260
  optional string kind = 1;
2261

2262
  // Schedule is the time the window will begin, specified in cron format
2263
  optional string schedule = 2;
2264

2265
  // Duration is the amount of time the sync window will be open
2266
  optional string duration = 3;
2267

2268
  // Applications contains a list of applications that the window will apply to
2269
  repeated string applications = 4;
2270

2271
  // Namespaces contains a list of namespaces that the window will apply to
2272
  repeated string namespaces = 5;
2273

2274
  // Clusters contains a list of clusters that the window will apply to
2275
  repeated string clusters = 6;
2276

2277
  // ManualSync enables manual syncs when they would otherwise be blocked
2278
  optional bool manualSync = 7;
2279

2280
  // TimeZone of the sync that will be applied to the schedule
2281
  optional string timeZone = 8;
2282
}
2283

2284
// TLSClientConfig contains settings to enable transport layer security
2285
message TLSClientConfig {
2286
  // Insecure specifies that the server should be accessed without verifying the TLS certificate. For testing only.
2287
  optional bool insecure = 1;
2288

2289
  // ServerName is passed to the server for SNI and is used in the client to check server
2290
  // certificates against. If ServerName is empty, the hostname used to contact the
2291
  // server is used.
2292
  optional string serverName = 2;
2293

2294
  // CertData holds PEM-encoded bytes (typically read from a client certificate file).
2295
  // CertData takes precedence over CertFile
2296
  optional bytes certData = 3;
2297

2298
  // KeyData holds PEM-encoded bytes (typically read from a client certificate key file).
2299
  // KeyData takes precedence over KeyFile
2300
  optional bytes keyData = 4;
2301

2302
  // CAData holds PEM-encoded bytes (typically read from a root certificates bundle).
2303
  // CAData takes precedence over CAFile
2304
  optional bytes caData = 5;
2305
}
2306

2307
message TagFilter {
2308
  optional string key = 1;
2309

2310
  optional string value = 2;
2311
}
2312

2313

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.