github.com/argoproj/argo-cd/v3@v3.2.1/pkg/apis/application/v1alpha1/generated.proto (about) 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.v3.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/v3/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 // AppHealthStatus contains information about the currently observed health state of an application 31 message AppHealthStatus { 32 // Status holds the status code of the application 33 optional string status = 1; 34 35 // Message is a human-readable informational message describing the health status 36 // 37 // Deprecated: this field is not used and will be removed in a future release. 38 optional string message = 2; 39 40 // LastTransitionTime is the time the HealthStatus was set or updated 41 optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3; 42 } 43 44 // AppProject provides a logical grouping of applications, providing controls for: 45 // * where the apps may deploy to (cluster whitelist) 46 // * what may be deployed (repository whitelist, resource whitelist/blacklist) 47 // * who can access these applications (roles, OIDC group claims bindings) 48 // * and what they can do (RBAC policies) 49 // * automation access to these roles (JWT tokens) 50 // +genclient 51 // +genclient:noStatus 52 // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object 53 // +kubebuilder:resource:path=appprojects,shortName=appproj;appprojs 54 message AppProject { 55 optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; 56 57 optional AppProjectSpec spec = 2; 58 59 optional AppProjectStatus status = 3; 60 } 61 62 // AppProjectList is list of AppProject resources 63 // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object 64 message AppProjectList { 65 optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; 66 67 repeated AppProject items = 2; 68 } 69 70 // AppProjectSpec is the specification of an AppProject 71 message AppProjectSpec { 72 // SourceRepos contains list of repository URLs which can be used for deployment 73 repeated string sourceRepos = 1; 74 75 // Destinations contains list of destinations available for deployment 76 repeated ApplicationDestination destinations = 2; 77 78 // Description contains optional project description 79 // +kubebuilder:validation:MaxLength=255 80 optional string description = 3; 81 82 // Roles are user defined RBAC roles associated with this project 83 repeated ProjectRole roles = 4; 84 85 // ClusterResourceWhitelist contains list of whitelisted cluster level resources 86 repeated .k8s.io.apimachinery.pkg.apis.meta.v1.GroupKind clusterResourceWhitelist = 5; 87 88 // NamespaceResourceBlacklist contains list of blacklisted namespace level resources 89 repeated .k8s.io.apimachinery.pkg.apis.meta.v1.GroupKind namespaceResourceBlacklist = 6; 90 91 // OrphanedResources specifies if controller should monitor orphaned resources of apps in this project 92 optional OrphanedResourcesMonitorSettings orphanedResources = 7; 93 94 // SyncWindows controls when syncs can be run for apps in this project 95 repeated SyncWindow syncWindows = 8; 96 97 // NamespaceResourceWhitelist contains list of whitelisted namespace level resources 98 repeated .k8s.io.apimachinery.pkg.apis.meta.v1.GroupKind namespaceResourceWhitelist = 9; 99 100 // SignatureKeys contains a list of PGP key IDs that commits in Git must be signed with in order to be allowed for sync 101 repeated SignatureKey signatureKeys = 10; 102 103 // ClusterResourceBlacklist contains list of blacklisted cluster level resources 104 repeated .k8s.io.apimachinery.pkg.apis.meta.v1.GroupKind clusterResourceBlacklist = 11; 105 106 // SourceNamespaces defines the namespaces application resources are allowed to be created in 107 repeated string sourceNamespaces = 12; 108 109 // PermitOnlyProjectScopedClusters determines whether destinations can only reference clusters which are project-scoped 110 optional bool permitOnlyProjectScopedClusters = 13; 111 112 // DestinationServiceAccounts holds information about the service accounts to be impersonated for the application sync operation for each destination. 113 repeated ApplicationDestinationServiceAccount destinationServiceAccounts = 14; 114 } 115 116 // AppProjectStatus contains status information for AppProject CRs 117 message AppProjectStatus { 118 // JWTTokensByRole contains a list of JWT tokens issued for a given role 119 map<string, JWTTokens> jwtTokensByRole = 1; 120 } 121 122 // Application is a definition of Application resource. 123 // +genclient 124 // +genclient:noStatus 125 // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object 126 // +kubebuilder:resource:path=applications,shortName=app;apps 127 // +kubebuilder:printcolumn:name="Sync Status",type=string,JSONPath=`.status.sync.status` 128 // +kubebuilder:printcolumn:name="Health Status",type=string,JSONPath=`.status.health.status` 129 // +kubebuilder:printcolumn:name="Revision",type=string,JSONPath=`.status.sync.revision`,priority=10 130 // +kubebuilder:printcolumn:name="Project",type=string,JSONPath=`.spec.project`,priority=10 131 message Application { 132 optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; 133 134 optional ApplicationSpec spec = 2; 135 136 optional ApplicationStatus status = 3; 137 138 optional Operation operation = 4; 139 } 140 141 // ApplicationCondition contains details about an application condition, which is usually an error or warning 142 message ApplicationCondition { 143 // Type is an application condition type 144 optional string type = 1; 145 146 // Message contains human-readable message indicating details about condition 147 optional string message = 2; 148 149 // LastTransitionTime is the time the condition was last observed 150 optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3; 151 } 152 153 // ApplicationDestination holds information about the application's destination 154 message ApplicationDestination { 155 // Server specifies the URL of the target cluster's Kubernetes control plane API. This must be set if Name is not set. 156 optional string server = 1; 157 158 // Namespace specifies the target namespace for the application's resources. 159 // The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace 160 optional string namespace = 2; 161 162 // Name is an alternate way of specifying the target cluster by its symbolic name. This must be set if Server is not set. 163 optional string name = 3; 164 } 165 166 // ApplicationDestinationServiceAccount holds information about the service account to be impersonated for the application sync operation. 167 message ApplicationDestinationServiceAccount { 168 // Server specifies the URL of the target cluster's Kubernetes control plane API. 169 optional string server = 1; 170 171 // Namespace specifies the target namespace for the application's resources. 172 optional string namespace = 2; 173 174 // DefaultServiceAccount to be used for impersonation during the sync operation 175 optional string defaultServiceAccount = 3; 176 } 177 178 // ApplicationList is list of Application resources 179 // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object 180 message ApplicationList { 181 optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; 182 183 repeated Application items = 2; 184 } 185 186 message ApplicationMatchExpression { 187 optional string key = 1; 188 189 optional string operator = 2; 190 191 repeated string values = 3; 192 } 193 194 message ApplicationPreservedFields { 195 repeated string annotations = 1; 196 197 repeated string labels = 2; 198 } 199 200 // ApplicationSet is a set of Application resources 201 // +genclient 202 // +genclient:noStatus 203 // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object 204 // +kubebuilder:resource:path=applicationsets,shortName=appset;appsets 205 // +kubebuilder:subresource:status 206 message ApplicationSet { 207 optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; 208 209 optional ApplicationSetSpec spec = 2; 210 211 optional ApplicationSetStatus status = 3; 212 } 213 214 // ApplicationSetApplicationStatus contains details about each Application managed by the ApplicationSet 215 message ApplicationSetApplicationStatus { 216 // Application contains the name of the Application resource 217 optional string application = 1; 218 219 // LastTransitionTime is the time the status was last updated 220 optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 2; 221 222 // Message contains human-readable message indicating details about the status 223 optional string message = 3; 224 225 // Status contains the AppSet's perceived status of the managed Application resource: (Waiting, Pending, Progressing, Healthy) 226 optional string status = 4; 227 228 // Step tracks which step this Application should be updated in 229 optional string step = 5; 230 231 // TargetRevision tracks the desired revisions the Application should be synced to. 232 repeated string targetrevisions = 6; 233 } 234 235 // ApplicationSetCondition contains details about an applicationset condition, which is usually an error or warning 236 message ApplicationSetCondition { 237 // Type is an applicationset condition type 238 optional string type = 1; 239 240 // Message contains human-readable message indicating details about condition 241 optional string message = 2; 242 243 // LastTransitionTime is the time the condition was last observed 244 optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3; 245 246 // True/False/Unknown 247 optional string status = 4; 248 249 // Single word camelcase representing the reason for the status eg ErrorOccurred 250 optional string reason = 5; 251 } 252 253 // ApplicationSetGenerator represents a generator at the top level of an ApplicationSet. 254 message ApplicationSetGenerator { 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 optional MatrixGenerator matrix = 7; 268 269 optional MergeGenerator merge = 8; 270 271 // Selector allows to post-filter all generator. 272 optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 9; 273 274 optional PluginGenerator plugin = 10; 275 } 276 277 // ApplicationSetList contains a list of ApplicationSet 278 // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object 279 // +kubebuilder:object:root=true 280 message ApplicationSetList { 281 optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; 282 283 repeated ApplicationSet items = 2; 284 } 285 286 // ApplicationSetNestedGenerator represents a generator nested within a combination-type generator (MatrixGenerator or 287 // MergeGenerator). 288 message ApplicationSetNestedGenerator { 289 optional ListGenerator list = 1; 290 291 optional ClusterGenerator clusters = 2; 292 293 optional GitGenerator git = 3; 294 295 optional SCMProviderGenerator scmProvider = 4; 296 297 optional DuckTypeGenerator clusterDecisionResource = 5; 298 299 optional PullRequestGenerator pullRequest = 6; 300 301 // Matrix should have the form of NestedMatrixGenerator 302 optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1.JSON matrix = 7; 303 304 // Merge should have the form of NestedMergeGenerator 305 optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1.JSON merge = 8; 306 307 // Selector allows to post-filter all generator. 308 optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 9; 309 310 optional PluginGenerator plugin = 10; 311 } 312 313 // ApplicationSetResourceIgnoreDifferences configures how the ApplicationSet controller will ignore differences in live 314 // applications when applying changes from generated applications. 315 message ApplicationSetResourceIgnoreDifferences { 316 // Name is the name of the application to ignore differences for. If not specified, the rule applies to all applications. 317 optional string name = 1; 318 319 // JSONPointers is a list of JSON pointers to fields to ignore differences for. 320 repeated string jsonPointers = 2; 321 322 // JQPathExpressions is a list of JQ path expressions to fields to ignore differences for. 323 repeated string jqPathExpressions = 3; 324 } 325 326 message ApplicationSetRolloutStep { 327 repeated ApplicationMatchExpression matchExpressions = 1; 328 329 optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUpdate = 2; 330 } 331 332 message ApplicationSetRolloutStrategy { 333 repeated ApplicationSetRolloutStep steps = 1; 334 } 335 336 // ApplicationSetSpec represents a class of application set state. 337 message ApplicationSetSpec { 338 optional bool goTemplate = 1; 339 340 repeated ApplicationSetGenerator generators = 2; 341 342 optional ApplicationSetTemplate template = 3; 343 344 optional ApplicationSetSyncPolicy syncPolicy = 4; 345 346 optional ApplicationSetStrategy strategy = 5; 347 348 optional ApplicationPreservedFields preservedFields = 6; 349 350 repeated string goTemplateOptions = 7; 351 352 // ApplyNestedSelectors enables selectors defined within the generators of two level-nested matrix or merge generators 353 // Deprecated: This field is ignored, and the behavior is always enabled. The field will be removed in a future 354 // version of the ApplicationSet CRD. 355 optional bool applyNestedSelectors = 8; 356 357 repeated ApplicationSetResourceIgnoreDifferences ignoreApplicationDifferences = 9; 358 359 optional string templatePatch = 10; 360 } 361 362 // ApplicationSetStatus defines the observed state of ApplicationSet 363 message ApplicationSetStatus { 364 // INSERT ADDITIONAL STATUS FIELD - define observed state of cluster 365 // Important: Run "make" to regenerate code after modifying this file 366 repeated ApplicationSetCondition conditions = 1; 367 368 repeated ApplicationSetApplicationStatus applicationStatus = 2; 369 370 // Resources is a list of Applications resources managed by this application set. 371 repeated ResourceStatus resources = 3; 372 373 // ResourcesCount is the total number of resources managed by this application set. The count may be higher than actual number of items in the Resources field when 374 // the number of managed resources exceeds the limit imposed by the controller (to avoid making the status field too large). 375 optional int64 resourcesCount = 4; 376 } 377 378 // ApplicationSetStrategy configures how generated Applications are updated in sequence. 379 message ApplicationSetStrategy { 380 optional string type = 1; 381 382 optional ApplicationSetRolloutStrategy rollingSync = 2; 383 384 // DeletionOrder allows specifying the order for deleting generated apps when progressive sync is enabled. 385 // accepts values "AllAtOnce" and "Reverse" 386 optional string deletionOrder = 3; 387 } 388 389 // ApplicationSetSyncPolicy configures how generated Applications will relate to their 390 // ApplicationSet. 391 message ApplicationSetSyncPolicy { 392 // PreserveResourcesOnDeletion will preserve resources on deletion. If PreserveResourcesOnDeletion is set to true, these Applications will not be deleted. 393 optional bool preserveResourcesOnDeletion = 1; 394 395 // ApplicationsSync represents the policy applied on the generated applications. Possible values are create-only, create-update, create-delete, sync 396 // +kubebuilder:validation:Optional 397 // +kubebuilder:validation:Enum=create-only;create-update;create-delete;sync 398 optional string applicationsSync = 2; 399 } 400 401 // ApplicationSetTemplate represents argocd ApplicationSpec 402 message ApplicationSetTemplate { 403 optional ApplicationSetTemplateMeta metadata = 1; 404 405 optional ApplicationSpec spec = 2; 406 } 407 408 // ApplicationSetTemplateMeta represents the Argo CD application fields that may 409 // be used for Applications generated from the ApplicationSet (based on metav1.ObjectMeta) 410 message ApplicationSetTemplateMeta { 411 optional string name = 1; 412 413 optional string namespace = 2; 414 415 map<string, string> labels = 3; 416 417 map<string, string> annotations = 4; 418 419 repeated string finalizers = 5; 420 } 421 422 // ApplicationSetTerminalGenerator represents a generator nested within a nested generator (for example, a list within 423 // a merge within a matrix). A generator at this level may not be a combination-type generator (MatrixGenerator or 424 // MergeGenerator). ApplicationSet enforces this nesting depth limit because CRDs do not support recursive types. 425 // https://github.com/kubernetes-sigs/controller-tools/issues/477 426 message ApplicationSetTerminalGenerator { 427 optional ListGenerator list = 1; 428 429 optional ClusterGenerator clusters = 2; 430 431 optional GitGenerator git = 3; 432 433 optional SCMProviderGenerator scmProvider = 4; 434 435 optional DuckTypeGenerator clusterDecisionResource = 5; 436 437 optional PullRequestGenerator pullRequest = 6; 438 439 optional PluginGenerator plugin = 7; 440 441 // Selector allows to post-filter all generator. 442 optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 8; 443 } 444 445 // ApplicationSetTree holds nodes which belongs to the application 446 // Used to build a tree of an ApplicationSet and its children 447 message ApplicationSetTree { 448 // Nodes contains list of nodes which are directly managed by the applicationset 449 repeated ResourceNode nodes = 1; 450 } 451 452 // ApplicationSource contains all required information about the source of an application 453 message ApplicationSource { 454 // RepoURL is the URL to the repository (Git or Helm) that contains the application manifests 455 optional string repoURL = 1; 456 457 // Path is a directory path within the Git repository, and is only valid for applications sourced from Git. 458 optional string path = 2; 459 460 // TargetRevision defines the revision of the source to sync the application to. 461 // In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. 462 // In case of Helm, this is a semver tag for the Chart's version. 463 optional string targetRevision = 4; 464 465 // Helm holds helm specific options 466 optional ApplicationSourceHelm helm = 7; 467 468 // Kustomize holds kustomize specific options 469 optional ApplicationSourceKustomize kustomize = 8; 470 471 // Directory holds path/directory specific options 472 optional ApplicationSourceDirectory directory = 10; 473 474 // Plugin holds config management plugin specific options 475 optional ApplicationSourcePlugin plugin = 11; 476 477 // Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo. 478 optional string chart = 12; 479 480 // Ref is reference to another source within sources field. This field will not be used if used with a `source` tag. 481 optional string ref = 13; 482 483 // Name is used to refer to a source and is displayed in the UI. It is used in multi-source Applications. 484 optional string name = 14; 485 } 486 487 // ApplicationSourceDirectory holds options for applications of type plain YAML or Jsonnet 488 message ApplicationSourceDirectory { 489 // Recurse specifies whether to scan a directory recursively for manifests 490 optional bool recurse = 1; 491 492 // Jsonnet holds options specific to Jsonnet 493 optional ApplicationSourceJsonnet jsonnet = 2; 494 495 // Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation 496 optional string exclude = 3; 497 498 // Include contains a glob pattern to match paths against that should be explicitly included during manifest generation 499 optional string include = 4; 500 } 501 502 // ApplicationSourceHelm holds helm specific options 503 message ApplicationSourceHelm { 504 // ValuesFiles is a list of Helm value files to use when generating a template 505 repeated string valueFiles = 1; 506 507 // Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation 508 repeated HelmParameter parameters = 2; 509 510 // ReleaseName is the Helm release name to use. If omitted it will use the application name 511 optional string releaseName = 3; 512 513 // 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. 514 // +patchStrategy=replace 515 optional string values = 4; 516 517 // FileParameters are file parameters to the helm template 518 repeated HelmFileParameter fileParameters = 5; 519 520 // Version is the Helm version to use for templating ("3") 521 optional string version = 6; 522 523 // PassCredentials pass credentials to all domains (Helm's --pass-credentials) 524 optional bool passCredentials = 7; 525 526 // IgnoreMissingValueFiles prevents helm template from failing when valueFiles do not exist locally by not appending them to helm template --values 527 optional bool ignoreMissingValueFiles = 8; 528 529 // SkipCrds skips custom resource definition installation step (Helm's --skip-crds) 530 optional bool skipCrds = 9; 531 532 // ValuesObject specifies Helm values to be passed to helm template, defined as a map. This takes precedence over Values. 533 // +kubebuilder:pruning:PreserveUnknownFields 534 optional .k8s.io.apimachinery.pkg.runtime.RawExtension valuesObject = 10; 535 536 // Namespace is an optional namespace to template with. If left empty, defaults to the app's destination namespace. 537 optional string namespace = 11; 538 539 // KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD 540 // uses the Kubernetes version of the target cluster. 541 optional string kubeVersion = 12; 542 543 // APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default, 544 // Argo CD uses the API versions of the target cluster. The format is [group/]version/kind. 545 repeated string apiVersions = 13; 546 547 // SkipTests skips test manifest installation step (Helm's --skip-tests). 548 optional bool skipTests = 14; 549 550 // SkipSchemaValidation skips JSON schema validation (Helm's --skip-schema-validation) 551 optional bool skipSchemaValidation = 15; 552 } 553 554 // ApplicationSourceJsonnet holds options specific to applications of type Jsonnet 555 message ApplicationSourceJsonnet { 556 // ExtVars is a list of Jsonnet External Variables 557 repeated JsonnetVar extVars = 1; 558 559 // TLAS is a list of Jsonnet Top-level Arguments 560 repeated JsonnetVar tlas = 2; 561 562 // Additional library search dirs 563 repeated string libs = 3; 564 } 565 566 // ApplicationSourceKustomize holds options specific to an Application source specific to Kustomize 567 message ApplicationSourceKustomize { 568 // NamePrefix is a prefix appended to resources for Kustomize apps 569 optional string namePrefix = 1; 570 571 // NameSuffix is a suffix appended to resources for Kustomize apps 572 optional string nameSuffix = 2; 573 574 // Images is a list of Kustomize image override specifications 575 repeated string images = 3; 576 577 // CommonLabels is a list of additional labels to add to rendered manifests 578 map<string, string> commonLabels = 4; 579 580 // Version controls which version of Kustomize to use for rendering manifests 581 optional string version = 5; 582 583 // CommonAnnotations is a list of additional annotations to add to rendered manifests 584 map<string, string> commonAnnotations = 6; 585 586 // ForceCommonLabels specifies whether to force applying common labels to resources for Kustomize apps 587 optional bool forceCommonLabels = 7; 588 589 // ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps 590 optional bool forceCommonAnnotations = 8; 591 592 // Namespace sets the namespace that Kustomize adds to all resources 593 optional string namespace = 9; 594 595 // CommonAnnotationsEnvsubst specifies whether to apply env variables substitution for annotation values 596 optional bool commonAnnotationsEnvsubst = 10; 597 598 // Replicas is a list of Kustomize Replicas override specifications 599 repeated KustomizeReplica replicas = 11; 600 601 // Patches is a list of Kustomize patches 602 repeated KustomizePatch patches = 12; 603 604 // Components specifies a list of kustomize components to add to the kustomization before building 605 repeated string components = 13; 606 607 // IgnoreMissingComponents prevents kustomize from failing when components do not exist locally by not appending them to kustomization file 608 optional bool ignoreMissingComponents = 17; 609 610 // LabelWithoutSelector specifies whether to apply common labels to resource selectors or not 611 optional bool labelWithoutSelector = 14; 612 613 // KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD 614 // uses the Kubernetes version of the target cluster. 615 optional string kubeVersion = 15; 616 617 // APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default, 618 // Argo CD uses the API versions of the target cluster. The format is [group/]version/kind. 619 repeated string apiVersions = 16; 620 621 // LabelIncludeTemplates specifies whether to apply common labels to resource templates or not 622 optional bool labelIncludeTemplates = 18; 623 } 624 625 // ApplicationSourcePlugin holds options specific to config management plugins 626 message ApplicationSourcePlugin { 627 optional string name = 1; 628 629 repeated EnvEntry env = 2; 630 631 repeated ApplicationSourcePluginParameter parameters = 3; 632 } 633 634 message ApplicationSourcePluginParameter { 635 // Name is the name identifying a parameter. 636 optional string name = 1; 637 638 // String_ is the value of a string type parameter. 639 optional string string = 5; 640 641 // Map is the value of a map type parameter. 642 optional OptionalMap map = 3; 643 644 // Array is the value of an array type parameter. 645 optional OptionalArray array = 4; 646 } 647 648 // ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision. 649 message ApplicationSpec { 650 // Source is a reference to the location of the application's manifests or chart 651 optional ApplicationSource source = 1; 652 653 // Destination is a reference to the target Kubernetes server and namespace 654 optional ApplicationDestination destination = 2; 655 656 // Project is a reference to the project this application belongs to. 657 // The empty string means that application belongs to the 'default' project. 658 optional string project = 3; 659 660 // SyncPolicy controls when and how a sync will be performed 661 optional SyncPolicy syncPolicy = 4; 662 663 // IgnoreDifferences is a list of resources and their fields which should be ignored during comparison 664 repeated ResourceIgnoreDifferences ignoreDifferences = 5; 665 666 // Info contains a list of information (URLs, email addresses, and plain text) that relates to the application 667 repeated Info info = 6; 668 669 // 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. 670 // This should only be changed in exceptional circumstances. 671 // Setting to zero will store no history. This will reduce storage used. 672 // Increasing will increase the space used to store the history, so we do not recommend increasing it. 673 // Default is 10. 674 optional int64 revisionHistoryLimit = 7; 675 676 // Sources is a reference to the location of the application's manifests or chart 677 repeated ApplicationSource sources = 8; 678 679 // SourceHydrator provides a way to push hydrated manifests back to git before syncing them to the cluster. 680 optional SourceHydrator sourceHydrator = 9; 681 } 682 683 // ApplicationStatus contains status information for the application 684 message ApplicationStatus { 685 // Resources is a list of Kubernetes resources managed by this application 686 repeated ResourceStatus resources = 1; 687 688 // Sync contains information about the application's current sync status 689 optional SyncStatus sync = 2; 690 691 // Health contains information about the application's current health status 692 optional AppHealthStatus health = 3; 693 694 // History contains information about the application's sync history 695 repeated RevisionHistory history = 4; 696 697 // Conditions is a list of currently observed application conditions 698 repeated ApplicationCondition conditions = 5; 699 700 // ReconciledAt indicates when the application state was reconciled using the latest git version 701 optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time reconciledAt = 6; 702 703 // OperationState contains information about any ongoing operations, such as a sync 704 optional OperationState operationState = 7; 705 706 // ObservedAt indicates when the application state was updated without querying latest git state 707 // Deprecated: controller no longer updates ObservedAt field 708 optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time observedAt = 8; 709 710 // SourceType specifies the type of this application 711 optional string sourceType = 9; 712 713 // Summary contains a list of URLs and container images used by this application 714 optional ApplicationSummary summary = 10; 715 716 // ResourceHealthSource indicates where the resource health status is stored: inline if not set or appTree 717 optional string resourceHealthSource = 11; 718 719 // SourceTypes specifies the type of the sources included in the application 720 repeated string sourceTypes = 12; 721 722 // ControllerNamespace indicates the namespace in which the application controller is located 723 optional string controllerNamespace = 13; 724 725 // SourceHydrator stores information about the current state of source hydration 726 optional SourceHydratorStatus sourceHydrator = 14; 727 } 728 729 // ApplicationSummary contains information about URLs and container images used by an application 730 message ApplicationSummary { 731 // ExternalURLs holds all external URLs of application child resources. 732 repeated string externalURLs = 1; 733 734 // Images holds all images of application child resources. 735 repeated string images = 2; 736 } 737 738 // ApplicationTree represents the hierarchical structure of resources associated with an Argo CD application. 739 message ApplicationTree { 740 // Nodes contains a list of resources that are either directly managed by the application 741 // or are children of directly managed resources. 742 repeated ResourceNode nodes = 1; 743 744 // OrphanedNodes contains resources that exist in the same namespace as the application 745 // but are not managed by it. This list is populated only if orphaned resource tracking 746 // is enabled in the application's project settings. 747 repeated ResourceNode orphanedNodes = 2; 748 749 // Hosts provides a list of Kubernetes nodes that are running pods related to the application. 750 repeated HostInfo hosts = 3; 751 752 // ShardsCount represents the total number of shards the application tree is split into. 753 // This is used to distribute resource processing across multiple shards. 754 optional int64 shardsCount = 4; 755 } 756 757 // ApplicationWatchEvent contains information about application change. 758 message ApplicationWatchEvent { 759 optional string type = 1; 760 761 // Application is: 762 // * If Type is Added or Modified: the new state of the object. 763 // * If Type is Deleted: the state of the object immediately before deletion. 764 // * If Type is Error: *api.Status is recommended; other types may make sense 765 // depending on context. 766 optional Application application = 2; 767 } 768 769 // Backoff is the backoff strategy to use on subsequent retries for failing syncs 770 message Backoff { 771 // Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") 772 optional string duration = 1; 773 774 // Factor is a factor to multiply the base duration after each failed retry 775 optional int64 factor = 2; 776 777 // MaxDuration is the maximum amount of time allowed for the backoff strategy 778 optional string maxDuration = 3; 779 } 780 781 // BasicAuthBitbucketServer defines the username/(password or personal access token) for Basic auth. 782 message BasicAuthBitbucketServer { 783 // Username for Basic auth 784 optional string username = 1; 785 786 // Password (or personal access token) reference. 787 optional SecretRef passwordRef = 2; 788 } 789 790 // BearerTokenBitbucket defines the Bearer token for BitBucket AppToken auth. 791 message BearerTokenBitbucket { 792 // Password (or personal access token) reference. 793 optional SecretRef tokenRef = 1; 794 } 795 796 // BearerTokenBitbucketCloud defines the Bearer token for BitBucket AppToken auth. 797 message BearerTokenBitbucketCloud { 798 // Password (or personal access token) reference. 799 optional SecretRef tokenRef = 1; 800 } 801 802 // ChartDetails contains helm chart metadata for a specific version 803 message ChartDetails { 804 optional string description = 1; 805 806 // The URL of this projects home page, e.g. "http://example.com" 807 optional string home = 2; 808 809 // List of maintainer details, name and email, e.g. ["John Doe <john_doe@my-company.com>"] 810 repeated string maintainers = 3; 811 } 812 813 // Cluster is the definition of a cluster resource 814 message Cluster { 815 // Server is the API server URL of the Kubernetes cluster 816 optional string server = 1; 817 818 // Name of the cluster. If omitted, will use the server address 819 optional string name = 2; 820 821 // Config holds cluster information for connecting to a cluster 822 optional ClusterConfig config = 3; 823 824 // Deprecated: use Info.ConnectionState field instead. 825 // ConnectionState contains information about cluster connection state 826 optional ConnectionState connectionState = 4; 827 828 // Deprecated: use Info.ServerVersion field instead. 829 // The server version 830 optional string serverVersion = 5; 831 832 // Holds list of namespaces which are accessible in that cluster. Cluster level resources will be ignored if namespace list is not empty. 833 repeated string namespaces = 6; 834 835 // RefreshRequestedAt holds time when cluster cache refresh has been requested 836 optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time refreshRequestedAt = 7; 837 838 // Info holds information about cluster cache and state 839 optional ClusterInfo info = 8; 840 841 // Shard contains optional shard number. Calculated on the fly by the application controller if not specified. 842 optional int64 shard = 9; 843 844 // Indicates if cluster level resources should be managed. This setting is used only if cluster is connected in a namespaced mode. 845 optional bool clusterResources = 10; 846 847 // Reference between project and cluster that allow you automatically to be added as item inside Destinations project entity 848 optional string project = 11; 849 850 // Labels for cluster secret metadata 851 map<string, string> labels = 12; 852 853 // Annotations for cluster secret metadata 854 map<string, string> annotations = 13; 855 } 856 857 // ClusterCacheInfo contains information about the cluster cache 858 message ClusterCacheInfo { 859 // ResourcesCount holds number of observed Kubernetes resources 860 optional int64 resourcesCount = 1; 861 862 // APIsCount holds number of observed Kubernetes API count 863 optional int64 apisCount = 2; 864 865 // LastCacheSyncTime holds time of most recent cache synchronization 866 optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCacheSyncTime = 3; 867 } 868 869 // ClusterConfig is the configuration attributes. This structure is subset of the go-client 870 // rest.Config with annotations added for marshalling. 871 message ClusterConfig { 872 // Server requires Basic authentication 873 optional string username = 1; 874 875 optional string password = 2; 876 877 // Server requires Bearer authentication. This client will not attempt to use 878 // refresh tokens for an OAuth2 flow. 879 // TODO: demonstrate an OAuth2 compatible client. 880 optional string bearerToken = 3; 881 882 // TLSClientConfig contains settings to enable transport layer security 883 optional TLSClientConfig tlsClientConfig = 4; 884 885 // AWSAuthConfig contains IAM authentication configuration 886 optional AWSAuthConfig awsAuthConfig = 5; 887 888 // ExecProviderConfig contains configuration for an exec provider 889 optional ExecProviderConfig execProviderConfig = 6; 890 891 // DisableCompression bypasses automatic GZip compression requests to the server. 892 optional bool disableCompression = 7; 893 894 // ProxyURL is the URL to the proxy to be used for all requests send to the server 895 optional string proxyUrl = 8; 896 } 897 898 // ClusterGenerator defines a generator to match against clusters registered with ArgoCD. 899 message ClusterGenerator { 900 // Selector defines a label selector to match against all clusters registered with ArgoCD. 901 // Clusters today are stored as Kubernetes Secrets, thus the Secret labels will be used 902 // for matching the selector. 903 optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 1; 904 905 optional ApplicationSetTemplate template = 2; 906 907 // Values contains key/value pairs which are passed directly as parameters to the template 908 map<string, string> values = 3; 909 910 // returns the clusters a single 'clusters' value in the template 911 optional bool flatList = 4; 912 } 913 914 // ClusterInfo contains information about the cluster 915 message ClusterInfo { 916 // ConnectionState contains information about the connection to the cluster 917 optional ConnectionState connectionState = 1; 918 919 // ServerVersion contains information about the Kubernetes version of the cluster 920 optional string serverVersion = 2; 921 922 // CacheInfo contains information about the cluster cache 923 optional ClusterCacheInfo cacheInfo = 3; 924 925 // ApplicationsCount is the number of applications managed by Argo CD on the cluster 926 optional int64 applicationsCount = 4; 927 928 // APIVersions contains list of API versions supported by the cluster 929 repeated string apiVersions = 5; 930 } 931 932 // ClusterList is a collection of Clusters. 933 message ClusterList { 934 optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; 935 936 repeated Cluster items = 2; 937 } 938 939 // Command holds binary path and arguments list 940 message Command { 941 repeated string command = 1; 942 943 repeated string args = 2; 944 } 945 946 // CommitMetadata contains metadata about a commit that is related in some way to another commit. 947 message CommitMetadata { 948 // Author is the author of the commit, i.e. `git show -s --format=%an <%ae>`. 949 // Must be formatted according to RFC 5322 (mail.Address.String()). 950 // Comes from the Argocd-reference-commit-author trailer. 951 optional string author = 1; 952 953 // Date is the date of the commit, formatted as by `git show -s --format=%aI` (RFC 3339). 954 // It can also be an empty string if the date is unknown. 955 // Comes from the Argocd-reference-commit-date trailer. 956 optional string date = 2; 957 958 // Subject is the commit message subject line, i.e. `git show -s --format=%s`. 959 // Comes from the Argocd-reference-commit-subject trailer. 960 optional string subject = 3; 961 962 // Body is the commit message body minus the subject line, i.e. `git show -s --format=%b`. 963 // Comes from the Argocd-reference-commit-body trailer. 964 optional string body = 4; 965 966 // SHA is the commit hash. 967 // Comes from the Argocd-reference-commit-sha trailer. 968 optional string sha = 5; 969 970 // RepoURL is the URL of the repository where the commit is located. 971 // Comes from the Argocd-reference-commit-repourl trailer. 972 // This value is not validated and should not be used to construct UI links unless it is properly 973 // validated and/or sanitized first. 974 optional string repoUrl = 6; 975 } 976 977 // ComparedTo contains application source and target which was used for resources comparison 978 message ComparedTo { 979 // Source is a reference to the application's source used for comparison 980 optional ApplicationSource source = 1; 981 982 // Destination is a reference to the application's destination used for comparison 983 optional ApplicationDestination destination = 2; 984 985 // Sources is a reference to the application's multiple sources used for comparison 986 repeated ApplicationSource sources = 3; 987 988 // IgnoreDifferences is a reference to the application's ignored differences used for comparison 989 repeated ResourceIgnoreDifferences ignoreDifferences = 4; 990 } 991 992 // ComponentParameter contains information about component parameter value 993 message ComponentParameter { 994 optional string component = 1; 995 996 optional string name = 2; 997 998 optional string value = 3; 999 } 1000 1001 // ConfigManagementPlugin contains config management plugin configuration 1002 message ConfigManagementPlugin { 1003 optional string name = 1; 1004 1005 optional Command init = 2; 1006 1007 optional Command generate = 3; 1008 1009 optional bool lockRepo = 4; 1010 } 1011 1012 // Utility struct for a reference to a configmap key. 1013 message ConfigMapKeyRef { 1014 optional string configMapName = 1; 1015 1016 optional string key = 2; 1017 } 1018 1019 // ConnectionState contains information about remote resource connection state, currently used for clusters and repositories 1020 message ConnectionState { 1021 // Status contains the current status indicator for the connection 1022 optional string status = 1; 1023 1024 // Message contains human readable information about the connection status 1025 optional string message = 2; 1026 1027 // ModifiedAt contains the timestamp when this connection status has been determined 1028 optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time attemptedAt = 3; 1029 } 1030 1031 // DrySource specifies a location for dry "don't repeat yourself" manifest source information. 1032 message DrySource { 1033 // RepoURL is the URL to the git repository that contains the application manifests 1034 optional string repoURL = 1; 1035 1036 // TargetRevision defines the revision of the source to hydrate 1037 optional string targetRevision = 2; 1038 1039 // Path is a directory path within the Git repository where the manifests are located 1040 optional string path = 3; 1041 } 1042 1043 // DuckType defines a generator to match against clusters registered with ArgoCD. 1044 message DuckTypeGenerator { 1045 // ConfigMapRef is a ConfigMap with the duck type definitions needed to retrieve the data 1046 // this includes apiVersion(group/version), kind, matchKey and validation settings 1047 // Name is the resource name of the kind, group and version, defined in the ConfigMapRef 1048 // RequeueAfterSeconds is how long before the duckType will be rechecked for a change 1049 optional string configMapRef = 1; 1050 1051 optional string name = 2; 1052 1053 optional int64 requeueAfterSeconds = 3; 1054 1055 optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4; 1056 1057 optional ApplicationSetTemplate template = 5; 1058 1059 // Values contains key/value pairs which are passed directly as parameters to the template 1060 map<string, string> values = 6; 1061 } 1062 1063 // EnvEntry represents an entry in the application's environment 1064 message EnvEntry { 1065 // Name is the name of the variable, usually expressed in uppercase 1066 optional string name = 1; 1067 1068 // Value is the value of the variable 1069 optional string value = 2; 1070 } 1071 1072 // ExecProviderConfig is config used to call an external command to perform cluster authentication 1073 // See: https://godoc.org/k8s.io/client-go/tools/clientcmd/api#ExecConfig 1074 message ExecProviderConfig { 1075 // Command to execute 1076 optional string command = 1; 1077 1078 // Arguments to pass to the command when executing it 1079 repeated string args = 2; 1080 1081 // Env defines additional environment variables to expose to the process 1082 map<string, string> env = 3; 1083 1084 // Preferred input version of the ExecInfo 1085 optional string apiVersion = 4; 1086 1087 // This text is shown to the user when the executable doesn't seem to be present 1088 optional string installHint = 5; 1089 } 1090 1091 message GitDirectoryGeneratorItem { 1092 optional string path = 1; 1093 1094 optional bool exclude = 2; 1095 } 1096 1097 message GitFileGeneratorItem { 1098 optional string path = 1; 1099 1100 optional bool exclude = 2; 1101 } 1102 1103 message GitGenerator { 1104 optional string repoURL = 1; 1105 1106 repeated GitDirectoryGeneratorItem directories = 2; 1107 1108 repeated GitFileGeneratorItem files = 3; 1109 1110 optional string revision = 4; 1111 1112 optional int64 requeueAfterSeconds = 5; 1113 1114 optional ApplicationSetTemplate template = 6; 1115 1116 optional string pathParamPrefix = 7; 1117 1118 // Values contains key/value pairs which are passed directly as parameters to the template 1119 map<string, string> values = 8; 1120 } 1121 1122 // GnuPGPublicKey is a representation of a GnuPG public key 1123 message GnuPGPublicKey { 1124 // KeyID specifies the key ID, in hexadecimal string format 1125 optional string keyID = 1; 1126 1127 // Fingerprint is the fingerprint of the key 1128 optional string fingerprint = 2; 1129 1130 // Owner holds the owner identification, e.g. a name and e-mail address 1131 optional string owner = 3; 1132 1133 // Trust holds the level of trust assigned to this key 1134 optional string trust = 4; 1135 1136 // SubType holds the key's subtype (e.g. rsa4096) 1137 optional string subType = 5; 1138 1139 // KeyData holds the raw key data, in base64 encoded format 1140 optional string keyData = 6; 1141 } 1142 1143 // GnuPGPublicKeyList is a collection of GnuPGPublicKey objects 1144 message GnuPGPublicKeyList { 1145 optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; 1146 1147 repeated GnuPGPublicKey items = 2; 1148 } 1149 1150 // HealthStatus contains information about the currently observed health state of a resource 1151 message HealthStatus { 1152 // Status holds the status code of the resource 1153 optional string status = 1; 1154 1155 // Message is a human-readable informational message describing the health status 1156 optional string message = 2; 1157 1158 // LastTransitionTime is the time the HealthStatus was set or updated 1159 // 1160 // Deprecated: this field is not used and will be removed in a future release. 1161 optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3; 1162 } 1163 1164 // HelmFileParameter is a file parameter that's passed to helm template during manifest generation 1165 message HelmFileParameter { 1166 // Name is the name of the Helm parameter 1167 optional string name = 1; 1168 1169 // Path is the path to the file containing the values for the Helm parameter 1170 optional string path = 2; 1171 } 1172 1173 // HelmOptions holds helm options 1174 message HelmOptions { 1175 repeated string valuesFileSchemes = 1; 1176 } 1177 1178 // HelmParameter is a parameter that's passed to helm template during manifest generation 1179 message HelmParameter { 1180 // Name is the name of the Helm parameter 1181 optional string name = 1; 1182 1183 // Value is the value for the Helm parameter 1184 optional string value = 2; 1185 1186 // ForceString determines whether to tell Helm to interpret booleans and numbers as strings 1187 optional bool forceString = 3; 1188 } 1189 1190 // HostInfo holds metadata and resource usage metrics for a specific host in the cluster. 1191 message HostInfo { 1192 // Name is the hostname or node name in the Kubernetes cluster. 1193 optional string name = 1; 1194 1195 // ResourcesInfo provides a list of resource usage details for different resource types on this host. 1196 repeated HostResourceInfo resourcesInfo = 2; 1197 1198 // SystemInfo contains detailed system-level information about the host, such as OS, kernel version, and architecture. 1199 optional .k8s.io.api.core.v1.NodeSystemInfo systemInfo = 3; 1200 1201 // Labels holds the labels attached to the host. 1202 map<string, string> labels = 4; 1203 } 1204 1205 // HostResourceInfo represents resource usage details for a specific resource type on a host. 1206 message HostResourceInfo { 1207 // ResourceName specifies the type of resource (e.g., CPU, memory, storage). 1208 optional string resourceName = 1; 1209 1210 // RequestedByApp indicates the total amount of this resource requested by the application running on the host. 1211 optional int64 requestedByApp = 2; 1212 1213 // RequestedByNeighbors indicates the total amount of this resource requested by other workloads on the same host. 1214 optional int64 requestedByNeighbors = 3; 1215 1216 // Capacity represents the total available capacity of this resource on the host. 1217 optional int64 capacity = 4; 1218 } 1219 1220 // HydrateOperation contains information about the most recent hydrate operation 1221 message HydrateOperation { 1222 // StartedAt indicates when the hydrate operation started 1223 optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 1; 1224 1225 // FinishedAt indicates when the hydrate operation finished 1226 optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 2; 1227 1228 // Phase indicates the status of the hydrate operation 1229 optional string phase = 3; 1230 1231 // Message contains a message describing the current status of the hydrate operation 1232 optional string message = 4; 1233 1234 // DrySHA holds the resolved revision (sha) of the dry source as of the most recent reconciliation 1235 optional string drySHA = 5; 1236 1237 // HydratedSHA holds the resolved revision (sha) of the hydrated source as of the most recent reconciliation 1238 optional string hydratedSHA = 6; 1239 1240 // SourceHydrator holds the hydrator config used for the hydrate operation 1241 optional SourceHydrator sourceHydrator = 7; 1242 } 1243 1244 // HydrateTo specifies a location to which hydrated manifests should be pushed as a "staging area" before being moved to 1245 // the SyncSource. The RepoURL and Path are assumed based on the associated SyncSource config in the SourceHydrator. 1246 message HydrateTo { 1247 // TargetBranch is the branch to which hydrated manifests should be committed 1248 optional string targetBranch = 1; 1249 } 1250 1251 message Info { 1252 optional string name = 1; 1253 1254 optional string value = 2; 1255 } 1256 1257 // InfoItem contains arbitrary, human readable information about an application 1258 message InfoItem { 1259 // Name is a human readable title for this piece of information. 1260 optional string name = 1; 1261 1262 // Value is human readable content. 1263 optional string value = 2; 1264 } 1265 1266 // JWTToken holds the issuedAt and expiresAt values of a token 1267 message JWTToken { 1268 optional int64 iat = 1; 1269 1270 optional int64 exp = 2; 1271 1272 optional string id = 3; 1273 } 1274 1275 // JWTTokens represents a list of JWT tokens 1276 message JWTTokens { 1277 repeated JWTToken items = 1; 1278 } 1279 1280 // JsonnetVar represents a variable to be passed to jsonnet during manifest generation 1281 message JsonnetVar { 1282 optional string name = 1; 1283 1284 optional string value = 2; 1285 1286 optional bool code = 3; 1287 } 1288 1289 // KnownTypeField contains a mapping between a Custom Resource Definition (CRD) field 1290 // and a well-known Kubernetes type. This mapping is primarily used for unit conversions 1291 // in resources where the type is not explicitly defined (e.g., converting "0.1" to "100m" for CPU requests). 1292 message KnownTypeField { 1293 // Field represents the JSON path to the specific field in the CRD that requires type conversion. 1294 // Example: "spec.resources.requests.cpu" 1295 optional string field = 1; 1296 1297 // Type specifies the expected Kubernetes type for the field, such as "cpu" or "memory". 1298 // This helps in converting values between different formats (e.g., "0.1" to "100m" for CPU). 1299 optional string type = 2; 1300 } 1301 1302 message KustomizeGvk { 1303 optional string group = 1; 1304 1305 optional string version = 2; 1306 1307 optional string kind = 3; 1308 } 1309 1310 // KustomizeOptions are options for kustomize to use when building manifests 1311 message KustomizeOptions { 1312 // BuildOptions is a string of build parameters to use when calling `kustomize build` 1313 optional string buildOptions = 1; 1314 1315 // BinaryPath holds optional path to kustomize binary 1316 // 1317 // Deprecated: Use settings.Settings instead. See: settings.Settings.KustomizeVersions. 1318 // If this field is set, it will be used as the Kustomize binary path. 1319 // Otherwise, Versions is used. 1320 optional string binaryPath = 2; 1321 1322 // Versions is a list of Kustomize versions and their corresponding binary paths and build options. 1323 repeated KustomizeVersion versions = 3; 1324 } 1325 1326 message KustomizePatch { 1327 optional string path = 1; 1328 1329 optional string patch = 2; 1330 1331 optional KustomizeSelector target = 3; 1332 1333 map<string, bool> options = 4; 1334 } 1335 1336 message KustomizeReplica { 1337 // Name of Deployment or StatefulSet 1338 optional string name = 1; 1339 1340 // Number of replicas 1341 optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString count = 2; 1342 } 1343 1344 message KustomizeResId { 1345 optional KustomizeGvk gvk = 1; 1346 1347 optional string name = 2; 1348 1349 optional string namespace = 3; 1350 } 1351 1352 message KustomizeSelector { 1353 optional KustomizeResId resId = 1; 1354 1355 optional string annotationSelector = 2; 1356 1357 optional string labelSelector = 3; 1358 } 1359 1360 // KustomizeVersion holds information about additional Kustomize versions 1361 message KustomizeVersion { 1362 // Name holds Kustomize version name 1363 optional string name = 1; 1364 1365 // Path holds the corresponding binary path 1366 optional string path = 2; 1367 1368 // BuildOptions that are specific to a Kustomize version 1369 optional string buildOptions = 3; 1370 } 1371 1372 // ListGenerator include items info 1373 message ListGenerator { 1374 // +kubebuilder:validation:Optional 1375 repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1.JSON elements = 1; 1376 1377 optional ApplicationSetTemplate template = 2; 1378 1379 optional string elementsYaml = 3; 1380 } 1381 1382 message ManagedNamespaceMetadata { 1383 map<string, string> labels = 1; 1384 1385 map<string, string> annotations = 2; 1386 } 1387 1388 // MatrixGenerator generates the cartesian product of two sets of parameters. The parameters are defined by two nested 1389 // generators. 1390 message MatrixGenerator { 1391 repeated ApplicationSetNestedGenerator generators = 1; 1392 1393 optional ApplicationSetTemplate template = 2; 1394 } 1395 1396 // MergeGenerator merges the output of two or more generators. Where the values for all specified merge keys are equal 1397 // between two sets of generated parameters, the parameter sets will be merged with the parameters from the latter 1398 // generator taking precedence. Parameter sets with merge keys not present in the base generator's params will be 1399 // ignored. 1400 // For example, if the first generator produced [{a: '1', b: '2'}, {c: '1', d: '1'}] and the second generator produced 1401 // [{'a': 'override'}], the united parameters for merge keys = ['a'] would be 1402 // [{a: 'override', b: '1'}, {c: '1', d: '1'}]. 1403 // 1404 // MergeGenerator supports template overriding. If a MergeGenerator is one of multiple top-level generators, its 1405 // template will be merged with the top-level generator before the parameters are applied. 1406 message MergeGenerator { 1407 repeated ApplicationSetNestedGenerator generators = 1; 1408 1409 repeated string mergeKeys = 2; 1410 1411 optional ApplicationSetTemplate template = 3; 1412 } 1413 1414 // NestedMatrixGenerator is a MatrixGenerator nested under another combination-type generator (MatrixGenerator or 1415 // MergeGenerator). NestedMatrixGenerator does not have an override template, because template overriding has no meaning 1416 // within the constituent generators of combination-type generators. 1417 // 1418 // NOTE: Nested matrix generator is not included directly in the CRD struct, instead it is included 1419 // as a generic 'apiextensionsv1.JSON' object, and then marshalled into a NestedMatrixGenerator 1420 // when processed. 1421 message NestedMatrixGenerator { 1422 repeated ApplicationSetTerminalGenerator generators = 1; 1423 } 1424 1425 // NestedMergeGenerator is a MergeGenerator nested under another combination-type generator (MatrixGenerator or 1426 // MergeGenerator). NestedMergeGenerator does not have an override template, because template overriding has no meaning 1427 // within the constituent generators of combination-type generators. 1428 // 1429 // NOTE: Nested merge generator is not included directly in the CRD struct, instead it is included 1430 // as a generic 'apiextensionsv1.JSON' object, and then marshalled into a NestedMergeGenerator 1431 // when processed. 1432 message NestedMergeGenerator { 1433 repeated ApplicationSetTerminalGenerator generators = 1; 1434 1435 repeated string mergeKeys = 2; 1436 } 1437 1438 // OCIMetadata contains metadata for a specific revision in an OCI repository 1439 message OCIMetadata { 1440 optional string createdAt = 1; 1441 1442 optional string authors = 2; 1443 1444 optional string imageUrl = 3; 1445 1446 optional string docsUrl = 4; 1447 1448 optional string sourceUrl = 5; 1449 1450 optional string version = 6; 1451 1452 optional string description = 7; 1453 } 1454 1455 // Operation contains information about a requested or running operation 1456 message Operation { 1457 // Sync contains parameters for the operation 1458 optional SyncOperation sync = 1; 1459 1460 // InitiatedBy contains information about who initiated the operations 1461 optional OperationInitiator initiatedBy = 2; 1462 1463 // Info is a list of informational items for this operation 1464 repeated Info info = 3; 1465 1466 // Retry controls the strategy to apply if a sync fails 1467 optional RetryStrategy retry = 4; 1468 } 1469 1470 // OperationInitiator contains information about the initiator of an operation 1471 message OperationInitiator { 1472 // Username contains the name of a user who started operation 1473 optional string username = 1; 1474 1475 // Automated is set to true if operation was initiated automatically by the application controller. 1476 optional bool automated = 2; 1477 } 1478 1479 // OperationState contains information about state of a running operation 1480 message OperationState { 1481 // Operation is the original requested operation 1482 optional Operation operation = 1; 1483 1484 // Phase is the current phase of the operation 1485 optional string phase = 2; 1486 1487 // Message holds any pertinent messages when attempting to perform operation (typically errors). 1488 optional string message = 3; 1489 1490 // SyncResult is the result of a Sync operation 1491 optional SyncOperationResult syncResult = 4; 1492 1493 // StartedAt contains time of operation start 1494 optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 6; 1495 1496 // FinishedAt contains time of operation completion 1497 optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 7; 1498 1499 // RetryCount contains time of operation retries 1500 optional int64 retryCount = 8; 1501 } 1502 1503 message OptionalArray { 1504 // Array is the value of an array type parameter. 1505 // +optional 1506 repeated string array = 1; 1507 } 1508 1509 message OptionalMap { 1510 // Map is the value of a map type parameter. 1511 // +optional 1512 map<string, string> map = 1; 1513 } 1514 1515 // OrphanedResourceKey is a reference to a resource to be ignored from 1516 message OrphanedResourceKey { 1517 optional string group = 1; 1518 1519 optional string kind = 2; 1520 1521 optional string name = 3; 1522 } 1523 1524 // OrphanedResourcesMonitorSettings holds settings of orphaned resources monitoring 1525 message OrphanedResourcesMonitorSettings { 1526 // Warn indicates if warning condition should be created for apps which have orphaned resources 1527 optional bool warn = 1; 1528 1529 // Ignore contains a list of resources that are to be excluded from orphaned resources monitoring 1530 repeated OrphanedResourceKey ignore = 2; 1531 } 1532 1533 // OverrideIgnoreDiff contains configurations about how fields should be ignored during diffs between 1534 // the desired state and live state 1535 message OverrideIgnoreDiff { 1536 // JSONPointers is a JSON path list following the format defined in RFC4627 (https://datatracker.ietf.org/doc/html/rfc6902#section-3) 1537 repeated string jSONPointers = 1; 1538 1539 // JQPathExpressions is a JQ path list that will be evaludated during the diff process 1540 repeated string jqPathExpressions = 2; 1541 1542 // ManagedFieldsManagers is a list of trusted managers. Fields mutated by those managers will take precedence over the 1543 // desired state defined in the SCM and won't be displayed in diffs 1544 repeated string managedFieldsManagers = 3; 1545 } 1546 1547 message PluginConfigMapRef { 1548 // Name of the ConfigMap 1549 optional string name = 1; 1550 } 1551 1552 // PluginGenerator defines connection info specific to Plugin. 1553 message PluginGenerator { 1554 optional PluginConfigMapRef configMapRef = 1; 1555 1556 optional PluginInput input = 2; 1557 1558 // RequeueAfterSeconds determines how long the ApplicationSet controller will wait before reconciling the ApplicationSet again. 1559 optional int64 requeueAfterSeconds = 3; 1560 1561 optional ApplicationSetTemplate template = 4; 1562 1563 // Values contains key/value pairs which are passed directly as parameters to the template. These values will not be 1564 // sent as parameters to the plugin. 1565 map<string, string> values = 5; 1566 } 1567 1568 message PluginInput { 1569 // Parameters contains the information to pass to the plugin. It is a map. The keys must be strings, and the 1570 // values can be any type. 1571 map<string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1.JSON> parameters = 1; 1572 } 1573 1574 // ProjectRole represents a role that has access to a project 1575 message ProjectRole { 1576 // Name is a name for this role 1577 optional string name = 1; 1578 1579 // Description is a description of the role 1580 optional string description = 2; 1581 1582 // Policies Stores a list of casbin formatted strings that define access policies for the role in the project 1583 repeated string policies = 3; 1584 1585 // JWTTokens are a list of generated JWT tokens bound to this role 1586 repeated JWTToken jwtTokens = 4; 1587 1588 // Groups are a list of OIDC group claims bound to this role 1589 repeated string groups = 5; 1590 } 1591 1592 // PullRequestGenerator defines a generator that scrapes a PullRequest API to find candidate pull requests. 1593 message PullRequestGenerator { 1594 // Which provider to use and config for it. 1595 optional PullRequestGeneratorGithub github = 1; 1596 1597 optional PullRequestGeneratorGitLab gitlab = 2; 1598 1599 optional PullRequestGeneratorGitea gitea = 3; 1600 1601 optional PullRequestGeneratorBitbucketServer bitbucketServer = 4; 1602 1603 // Filters for which pull requests should be considered. 1604 repeated PullRequestGeneratorFilter filters = 5; 1605 1606 // Standard parameters. 1607 optional int64 requeueAfterSeconds = 6; 1608 1609 optional ApplicationSetTemplate template = 7; 1610 1611 optional PullRequestGeneratorBitbucket bitbucket = 8; 1612 1613 // Additional provider to use and config for it. 1614 optional PullRequestGeneratorAzureDevOps azuredevops = 9; 1615 1616 // Values contains key/value pairs which are passed directly as parameters to the template 1617 map<string, string> values = 10; 1618 1619 // ContinueOnRepoNotFoundError is a flag to continue the ApplicationSet Pull Request generator parameters generation even if the repository is not found. 1620 optional bool continueOnRepoNotFoundError = 11; 1621 } 1622 1623 // PullRequestGeneratorAzureDevOps defines connection info specific to AzureDevOps. 1624 message PullRequestGeneratorAzureDevOps { 1625 // Azure DevOps org to scan. Required. 1626 optional string organization = 1; 1627 1628 // Azure DevOps project name to scan. Required. 1629 optional string project = 2; 1630 1631 // Azure DevOps repo name to scan. Required. 1632 optional string repo = 3; 1633 1634 // The Azure DevOps API URL to talk to. If blank, use https://dev.azure.com/. 1635 optional string api = 4; 1636 1637 // Authentication token reference. 1638 optional SecretRef tokenRef = 5; 1639 1640 // Labels is used to filter the PRs that you want to target 1641 repeated string labels = 6; 1642 } 1643 1644 // PullRequestGeneratorBitbucket defines connection info specific to Bitbucket. 1645 message PullRequestGeneratorBitbucket { 1646 // Workspace to scan. Required. 1647 optional string owner = 1; 1648 1649 // Repo name to scan. Required. 1650 optional string repo = 2; 1651 1652 // The Bitbucket REST API URL to talk to. If blank, uses https://api.bitbucket.org/2.0. 1653 optional string api = 3; 1654 1655 // Credentials for Basic auth 1656 optional BasicAuthBitbucketServer basicAuth = 4; 1657 1658 // Credentials for AppToken (Bearer auth) 1659 optional BearerTokenBitbucketCloud bearerToken = 5; 1660 } 1661 1662 // PullRequestGeneratorBitbucketServer defines connection info specific to BitbucketServer. 1663 message PullRequestGeneratorBitbucketServer { 1664 // Project to scan. Required. 1665 optional string project = 1; 1666 1667 // Repo name to scan. Required. 1668 optional string repo = 2; 1669 1670 // The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest Required. 1671 optional string api = 3; 1672 1673 // Credentials for Basic auth 1674 optional BasicAuthBitbucketServer basicAuth = 4; 1675 1676 // Credentials for AccessToken (Bearer auth) 1677 optional BearerTokenBitbucket bearerToken = 5; 1678 1679 // Allow self-signed TLS / Certificates; default: false 1680 optional bool insecure = 6; 1681 1682 // ConfigMap key holding the trusted certificates 1683 optional ConfigMapKeyRef caRef = 7; 1684 } 1685 1686 // PullRequestGeneratorFilter is a single pull request filter. 1687 // If multiple filter types are set on a single struct, they will be AND'd together. All filters must 1688 // pass for a pull request to be included. 1689 message PullRequestGeneratorFilter { 1690 optional string branchMatch = 1; 1691 1692 optional string targetBranchMatch = 2; 1693 1694 optional string titleMatch = 3; 1695 } 1696 1697 // PullRequestGeneratorGitLab defines connection info specific to GitLab. 1698 message PullRequestGeneratorGitLab { 1699 // GitLab project to scan. Required. 1700 optional string project = 1; 1701 1702 // The GitLab API URL to talk to. If blank, uses https://gitlab.com/. 1703 optional string api = 2; 1704 1705 // Authentication token reference. 1706 optional SecretRef tokenRef = 3; 1707 1708 // Labels is used to filter the MRs that you want to target 1709 repeated string labels = 4; 1710 1711 // PullRequestState is an additional MRs filter to get only those with a certain state. Default: "" (all states). 1712 // Valid values: opened, closed, merged, locked". 1713 optional string pullRequestState = 5; 1714 1715 // Skips validating the SCM provider's TLS certificate - useful for self-signed certificates.; default: false 1716 optional bool insecure = 6; 1717 1718 // ConfigMap key holding the trusted certificates 1719 optional ConfigMapKeyRef caRef = 7; 1720 } 1721 1722 // PullRequestGeneratorGitea defines connection info specific to Gitea. 1723 message PullRequestGeneratorGitea { 1724 // Gitea org or user to scan. Required. 1725 optional string owner = 1; 1726 1727 // Gitea repo name to scan. Required. 1728 optional string repo = 2; 1729 1730 // The Gitea API URL to talk to. Required 1731 optional string api = 3; 1732 1733 // Authentication token reference. 1734 optional SecretRef tokenRef = 4; 1735 1736 // Allow insecure tls, for self-signed certificates; default: false. 1737 optional bool insecure = 5; 1738 1739 // Labels is used to filter the PRs that you want to target 1740 repeated string labels = 6; 1741 } 1742 1743 // PullRequestGenerator defines connection info specific to GitHub. 1744 message PullRequestGeneratorGithub { 1745 // GitHub org or user to scan. Required. 1746 optional string owner = 1; 1747 1748 // GitHub repo name to scan. Required. 1749 optional string repo = 2; 1750 1751 // The GitHub API URL to talk to. If blank, use https://api.github.com/. 1752 optional string api = 3; 1753 1754 // Authentication token reference. 1755 optional SecretRef tokenRef = 4; 1756 1757 // AppSecretName is a reference to a GitHub App repo-creds secret with permission to access pull requests. 1758 optional string appSecretName = 5; 1759 1760 // Labels is used to filter the PRs that you want to target 1761 repeated string labels = 6; 1762 } 1763 1764 message RefTarget { 1765 optional Repository repo = 1; 1766 1767 optional string targetRevision = 2; 1768 1769 optional string chart = 3; 1770 } 1771 1772 // RepoCreds holds the definition for repository credentials 1773 message RepoCreds { 1774 // URL is the URL to which these credentials match 1775 optional string url = 1; 1776 1777 // Username for authenticating at the repo server 1778 optional string username = 2; 1779 1780 // Password for authenticating at the repo server 1781 optional string password = 3; 1782 1783 // SSHPrivateKey contains the private key data for authenticating at the repo server using SSH (only Git repos) 1784 optional string sshPrivateKey = 4; 1785 1786 // TLSClientCertData specifies the TLS client cert data for authenticating at the repo server 1787 optional string tlsClientCertData = 5; 1788 1789 // TLSClientCertKey specifies the TLS client cert key for authenticating at the repo server 1790 optional string tlsClientCertKey = 6; 1791 1792 // GithubAppPrivateKey specifies the private key PEM data for authentication via GitHub app 1793 optional string githubAppPrivateKey = 7; 1794 1795 // GithubAppId specifies the Github App ID of the app used to access the repo for GitHub app authentication 1796 optional int64 githubAppID = 8; 1797 1798 // GithubAppInstallationId specifies the ID of the installed GitHub App for GitHub app authentication 1799 optional int64 githubAppInstallationID = 9; 1800 1801 // GithubAppEnterpriseBaseURL specifies the GitHub API URL for GitHub app authentication. If empty will default to https://api.github.com 1802 optional string githubAppEnterpriseBaseUrl = 10; 1803 1804 // EnableOCI specifies whether helm-oci support should be enabled for this repo 1805 optional bool enableOCI = 11; 1806 1807 // Type specifies the type of the repoCreds. Can be either "git" or "helm. "git" is assumed if empty or absent. 1808 optional string type = 12; 1809 1810 // GCPServiceAccountKey specifies the service account key in JSON format to be used for getting credentials to Google Cloud Source repos 1811 optional string gcpServiceAccountKey = 13; 1812 1813 // Proxy specifies the HTTP/HTTPS proxy used to access repos at the repo server 1814 optional string proxy = 19; 1815 1816 // ForceHttpBasicAuth specifies whether Argo CD should attempt to force basic auth for HTTP connections 1817 optional bool forceHttpBasicAuth = 20; 1818 1819 // NoProxy specifies a list of targets where the proxy isn't used, applies only in cases where the proxy is applied 1820 optional string noProxy = 23; 1821 1822 // UseAzureWorkloadIdentity specifies whether to use Azure Workload Identity for authentication 1823 optional bool useAzureWorkloadIdentity = 24; 1824 1825 // BearerToken contains the bearer token used for Git BitBucket Data Center auth at the repo server 1826 optional string bearerToken = 25; 1827 1828 // InsecureOCIForceHttp specifies whether the connection to the repository uses TLS at _all_. If true, no TLS. This flag is applicable for OCI repos only. 1829 optional bool insecureOCIForceHttp = 26; 1830 } 1831 1832 // RepositoryList is a collection of Repositories. 1833 message RepoCredsList { 1834 optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; 1835 1836 repeated RepoCreds items = 2; 1837 } 1838 1839 // Repository is a repository holding application configurations 1840 message Repository { 1841 // Repo contains the URL to the remote repository 1842 optional string repo = 1; 1843 1844 // Username contains the user name used for authenticating at the remote repository 1845 optional string username = 2; 1846 1847 // Password contains the password or PAT used for authenticating at the remote repository 1848 optional string password = 3; 1849 1850 // SSHPrivateKey contains the PEM data for authenticating at the repo server. Only used with Git repos. 1851 optional string sshPrivateKey = 4; 1852 1853 // ConnectionState contains information about the current state of connection to the repository server 1854 optional ConnectionState connectionState = 5; 1855 1856 // InsecureIgnoreHostKey should not be used anymore, Insecure is favoured 1857 // Used only for Git repos 1858 optional bool insecureIgnoreHostKey = 6; 1859 1860 // Insecure specifies whether the connection to the repository ignores any errors when verifying TLS certificates or SSH host keys 1861 optional bool insecure = 7; 1862 1863 // EnableLFS specifies whether git-lfs support should be enabled for this repo. Only valid for Git repositories. 1864 optional bool enableLfs = 8; 1865 1866 // TLSClientCertData contains a certificate in PEM format for authenticating at the repo server 1867 optional string tlsClientCertData = 9; 1868 1869 // TLSClientCertKey contains a private key in PEM format for authenticating at the repo server 1870 optional string tlsClientCertKey = 10; 1871 1872 // Type specifies the type of the repo. Can be either "git" or "helm. "git" is assumed if empty or absent. 1873 optional string type = 11; 1874 1875 // Name specifies a name to be used for this repo. Only used with Helm repos 1876 optional string name = 12; 1877 1878 // Whether credentials were inherited from a credential set 1879 optional bool inheritedCreds = 13; 1880 1881 // EnableOCI specifies whether helm-oci support should be enabled for this repo 1882 optional bool enableOCI = 14; 1883 1884 // Github App Private Key PEM data 1885 optional string githubAppPrivateKey = 15; 1886 1887 // GithubAppId specifies the ID of the GitHub app used to access the repo 1888 optional int64 githubAppID = 16; 1889 1890 // GithubAppInstallationId specifies the installation ID of the GitHub App used to access the repo 1891 optional int64 githubAppInstallationID = 17; 1892 1893 // GithubAppEnterpriseBaseURL specifies the base URL of GitHub Enterprise installation. If empty will default to https://api.github.com 1894 optional string githubAppEnterpriseBaseUrl = 18; 1895 1896 // Proxy specifies the HTTP/HTTPS proxy used to access the repo 1897 optional string proxy = 19; 1898 1899 // Reference between project and repository that allows it to be automatically added as an item inside SourceRepos project entity 1900 optional string project = 20; 1901 1902 // GCPServiceAccountKey specifies the service account key in JSON format to be used for getting credentials to Google Cloud Source repos 1903 optional string gcpServiceAccountKey = 21; 1904 1905 // ForceHttpBasicAuth specifies whether Argo CD should attempt to force basic auth for HTTP connections 1906 optional bool forceHttpBasicAuth = 22; 1907 1908 // NoProxy specifies a list of targets where the proxy isn't used, applies only in cases where the proxy is applied 1909 optional string noProxy = 23; 1910 1911 // UseAzureWorkloadIdentity specifies whether to use Azure Workload Identity for authentication 1912 optional bool useAzureWorkloadIdentity = 24; 1913 1914 // BearerToken contains the bearer token used for Git BitBucket Data Center auth at the repo server 1915 optional string bearerToken = 25; 1916 1917 // InsecureOCIForceHttp specifies whether the connection to the repository uses TLS at _all_. If true, no TLS. This flag is applicable for OCI repos only. 1918 optional bool insecureOCIForceHttp = 26; 1919 } 1920 1921 // A RepositoryCertificate is either SSH known hosts entry or TLS certificate 1922 message RepositoryCertificate { 1923 // ServerName specifies the DNS name of the server this certificate is intended for 1924 optional string serverName = 1; 1925 1926 // CertType specifies the type of the certificate - currently one of "https" or "ssh" 1927 optional string certType = 2; 1928 1929 // CertSubType specifies the sub type of the cert, i.e. "ssh-rsa" 1930 optional string certSubType = 3; 1931 1932 // CertData contains the actual certificate data, dependent on the certificate type 1933 optional bytes certData = 4; 1934 1935 // CertInfo will hold additional certificate info, depdendent on the certificate type (e.g. SSH fingerprint, X509 CommonName) 1936 optional string certInfo = 5; 1937 } 1938 1939 // RepositoryCertificateList is a collection of RepositoryCertificates 1940 message RepositoryCertificateList { 1941 optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; 1942 1943 // List of certificates to be processed 1944 repeated RepositoryCertificate items = 2; 1945 } 1946 1947 // RepositoryList is a collection of Repositories. 1948 message RepositoryList { 1949 optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; 1950 1951 repeated Repository items = 2; 1952 } 1953 1954 // ResourceAction represents an individual action that can be performed on a resource. 1955 // It includes parameters, an optional disabled flag, an icon for display, and a name for the action. 1956 message ResourceAction { 1957 // Name is the name or identifier for the action. 1958 optional string name = 1; 1959 1960 // Params contains the parameters required to execute the action. 1961 repeated ResourceActionParam params = 2; 1962 1963 // Disabled indicates whether the action is disabled. 1964 optional bool disabled = 3; 1965 1966 // IconClass specifies the CSS class for the action's icon. 1967 optional string iconClass = 4; 1968 1969 // DisplayName provides a user-friendly name for the action. 1970 optional string displayName = 5; 1971 } 1972 1973 // ResourceActionDefinition defines an individual action that can be executed on a resource. 1974 // It includes a name for the action and a Lua script that defines the action's behavior. 1975 message ResourceActionDefinition { 1976 // Name is the identifier for the action. 1977 optional string name = 1; 1978 1979 // ActionLua contains the Lua script that defines the behavior of the action. 1980 optional string actionLua = 2; 1981 } 1982 1983 // ResourceActionParam represents a parameter for a resource action. 1984 // It includes a name, value, type, and an optional default value for the parameter. 1985 message ResourceActionParam { 1986 // Name is the name of the parameter. 1987 optional string name = 1; 1988 } 1989 1990 // ResourceActions holds the set of actions that can be applied to a resource. 1991 // It defines custom Lua scripts for discovery and action execution, as well as options 1992 // for merging built-in actions with custom ones. 1993 message ResourceActions { 1994 // ActionDiscoveryLua contains a Lua script for discovering actions. 1995 optional string actionDiscoveryLua = 1; 1996 1997 // Definitions holds the list of action definitions available for the resource. 1998 repeated ResourceActionDefinition definitions = 2; 1999 2000 // MergeBuiltinActions indicates whether built-in actions should be merged with custom actions. 2001 optional bool mergeBuiltinActions = 3; 2002 } 2003 2004 // ResourceDiff holds the diff between a live and target resource object in Argo CD. 2005 // It is used to compare the desired state (from Git/Helm) with the actual state in the cluster. 2006 message ResourceDiff { 2007 // Group represents the API group of the resource (e.g., "apps" for Deployments). 2008 optional string group = 1; 2009 2010 // Kind represents the Kubernetes resource kind (e.g., "Deployment", "Service"). 2011 optional string kind = 2; 2012 2013 // Namespace specifies the namespace where the resource exists. 2014 optional string namespace = 3; 2015 2016 // Name is the name of the resource. 2017 optional string name = 4; 2018 2019 // TargetState contains the JSON-serialized resource manifest as defined in the Git/Helm repository. 2020 optional string targetState = 5; 2021 2022 // LiveState contains the JSON-serialized resource manifest of the resource currently running in the cluster. 2023 optional string liveState = 6; 2024 2025 // Diff contains the JSON patch representing the difference between the live and target resource. 2026 // Deprecated: Use NormalizedLiveState and PredictedLiveState instead to compute differences. 2027 optional string diff = 7; 2028 2029 // Hook indicates whether this resource is a hook resource (e.g., pre-sync or post-sync hooks). 2030 optional bool hook = 8; 2031 2032 // NormalizedLiveState contains the JSON-serialized live resource state after applying normalizations. 2033 // Normalizations may include ignoring irrelevant fields like timestamps or defaults applied by Kubernetes. 2034 optional string normalizedLiveState = 9; 2035 2036 // PredictedLiveState contains the JSON-serialized resource state that Argo CD predicts based on the 2037 // combination of the normalized live state and the desired target state. 2038 optional string predictedLiveState = 10; 2039 2040 // ResourceVersion is the Kubernetes resource version, which helps in tracking changes. 2041 optional string resourceVersion = 11; 2042 2043 // Modified indicates whether the live resource has changes compared to the target resource. 2044 optional bool modified = 12; 2045 } 2046 2047 // ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state. 2048 message ResourceIgnoreDifferences { 2049 optional string group = 1; 2050 2051 optional string kind = 2; 2052 2053 optional string name = 3; 2054 2055 optional string namespace = 4; 2056 2057 repeated string jsonPointers = 5; 2058 2059 repeated string jqPathExpressions = 6; 2060 2061 // ManagedFieldsManagers is a list of trusted managers. Fields mutated by those managers will take precedence over the 2062 // desired state defined in the SCM and won't be displayed in diffs 2063 repeated string managedFieldsManagers = 7; 2064 } 2065 2066 // ResourceNetworkingInfo holds networking-related information for a resource. 2067 message ResourceNetworkingInfo { 2068 // TargetLabels represents labels associated with the target resources that this resource communicates with. 2069 map<string, string> targetLabels = 1; 2070 2071 // TargetRefs contains references to other resources that this resource interacts with, such as Services or Pods. 2072 repeated ResourceRef targetRefs = 2; 2073 2074 // Labels holds the labels associated with this networking resource. 2075 map<string, string> labels = 3; 2076 2077 // Ingress provides information about external access points (e.g., load balancer ingress) for this resource. 2078 repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 4; 2079 2080 // ExternalURLs holds a list of URLs that should be accessible externally. 2081 // This field is typically populated for Ingress resources based on their hostname rules. 2082 repeated string externalURLs = 5; 2083 } 2084 2085 // ResourceNode contains information about a live Kubernetes resource and its relationships with other resources. 2086 message ResourceNode { 2087 // ResourceRef uniquely identifies the resource using its group, kind, namespace, and name. 2088 optional ResourceRef resourceRef = 1; 2089 2090 // ParentRefs lists the parent resources that reference this resource. 2091 // This helps in understanding ownership and hierarchical relationships. 2092 repeated ResourceRef parentRefs = 2; 2093 2094 // Info provides additional metadata or annotations about the resource. 2095 repeated InfoItem info = 3; 2096 2097 // NetworkingInfo contains details about the resource's networking attributes, 2098 // such as ingress information and external URLs. 2099 optional ResourceNetworkingInfo networkingInfo = 4; 2100 2101 // ResourceVersion indicates the version of the resource, used to track changes. 2102 optional string resourceVersion = 5; 2103 2104 // Images lists container images associated with the resource. 2105 // This is primarily useful for pods and other workload resources. 2106 repeated string images = 6; 2107 2108 // Health represents the health status of the resource (e.g., Healthy, Degraded, Progressing). 2109 optional HealthStatus health = 7; 2110 2111 // CreatedAt records the timestamp when the resource was created. 2112 optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time createdAt = 8; 2113 } 2114 2115 // ResourceOverride holds configuration to customize resource diffing and health assessment 2116 message ResourceOverride { 2117 // HealthLua contains a Lua script that defines custom health checks for the resource. 2118 optional string healthLua = 1; 2119 2120 // UseOpenLibs indicates whether to use open-source libraries for the resource. 2121 optional bool useOpenLibs = 5; 2122 2123 // Actions defines the set of actions that can be performed on the resource, as a Lua script. 2124 optional string actions = 3; 2125 2126 // IgnoreDifferences contains configuration for which differences should be ignored during the resource diffing. 2127 optional OverrideIgnoreDiff ignoreDifferences = 2; 2128 2129 // IgnoreResourceUpdates holds configuration for ignoring updates to specific resource fields. 2130 optional OverrideIgnoreDiff ignoreResourceUpdates = 6; 2131 2132 // KnownTypeFields lists fields for which unit conversions should be applied. 2133 repeated KnownTypeField knownTypeFields = 4; 2134 } 2135 2136 // ResourceRef includes fields which uniquely identify a resource 2137 message ResourceRef { 2138 optional string group = 1; 2139 2140 optional string version = 2; 2141 2142 optional string kind = 3; 2143 2144 optional string namespace = 4; 2145 2146 optional string name = 5; 2147 2148 optional string uid = 6; 2149 } 2150 2151 // ResourceResult holds the operation result details of a specific resource 2152 message ResourceResult { 2153 // Group specifies the API group of the resource 2154 optional string group = 1; 2155 2156 // Version specifies the API version of the resource 2157 optional string version = 2; 2158 2159 // Kind specifies the API kind of the resource 2160 optional string kind = 3; 2161 2162 // Namespace specifies the target namespace of the resource 2163 optional string namespace = 4; 2164 2165 // Name specifies the name of the resource 2166 optional string name = 5; 2167 2168 // 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 2169 optional string status = 6; 2170 2171 // Message contains an informational or error message for the last sync OR operation 2172 optional string message = 7; 2173 2174 // HookType specifies the type of the hook. Empty for non-hook resources 2175 optional string hookType = 8; 2176 2177 // HookPhase contains the state of any operation associated with this resource OR hook 2178 // This can also contain values for non-hook resources. 2179 optional string hookPhase = 9; 2180 2181 // SyncPhase indicates the particular phase of the sync that this result was acquired in 2182 optional string syncPhase = 10; 2183 2184 // Images contains the images related to the ResourceResult 2185 repeated string images = 11; 2186 } 2187 2188 // ResourceStatus holds the current synchronization and health status of a Kubernetes resource. 2189 message ResourceStatus { 2190 // Group represents the API group of the resource (e.g., "apps" for Deployments). 2191 optional string group = 1; 2192 2193 // Version indicates the API version of the resource (e.g., "v1", "v1beta1"). 2194 optional string version = 2; 2195 2196 // Kind specifies the type of the resource (e.g., "Deployment", "Service"). 2197 optional string kind = 3; 2198 2199 // Namespace defines the Kubernetes namespace where the resource is located. 2200 optional string namespace = 4; 2201 2202 // Name is the unique name of the resource within the namespace. 2203 optional string name = 5; 2204 2205 // Status represents the synchronization state of the resource (e.g., Synced, OutOfSync). 2206 optional string status = 6; 2207 2208 // Health indicates the health status of the resource (e.g., Healthy, Degraded, Progressing). 2209 optional HealthStatus health = 7; 2210 2211 // Hook is true if the resource is used as a lifecycle hook in an Argo CD application. 2212 optional bool hook = 8; 2213 2214 // RequiresPruning is true if the resource needs to be pruned (deleted) as part of synchronization. 2215 optional bool requiresPruning = 9; 2216 2217 // SyncWave determines the order in which resources are applied during a sync operation. 2218 // Lower values are applied first. 2219 optional int64 syncWave = 10; 2220 2221 // RequiresDeletionConfirmation is true if the resource requires explicit user confirmation before deletion. 2222 optional bool requiresDeletionConfirmation = 11; 2223 } 2224 2225 // RetryStrategy contains information about the strategy to apply when a sync failed 2226 message RetryStrategy { 2227 // Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed. 2228 optional int64 limit = 1; 2229 2230 // Backoff controls how to backoff on subsequent retries of failed syncs 2231 optional Backoff backoff = 2; 2232 2233 // Refresh indicates if the latest revision should be used on retry instead of the initial one (default: false) 2234 optional bool refresh = 3; 2235 } 2236 2237 // RevisionHistory contains history information about a previous sync 2238 message RevisionHistory { 2239 // Revision holds the revision the sync was performed against 2240 optional string revision = 2; 2241 2242 // DeployedAt holds the time the sync operation completed 2243 optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time deployedAt = 4; 2244 2245 // ID is an auto incrementing identifier of the RevisionHistory 2246 optional int64 id = 5; 2247 2248 // Source is a reference to the application source used for the sync operation 2249 optional ApplicationSource source = 6; 2250 2251 // DeployStartedAt holds the time the sync operation started 2252 optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time deployStartedAt = 7; 2253 2254 // Sources is a reference to the application sources used for the sync operation 2255 repeated ApplicationSource sources = 8; 2256 2257 // Revisions holds the revision of each source in sources field the sync was performed against 2258 repeated string revisions = 9; 2259 2260 // InitiatedBy contains information about who initiated the operations 2261 optional OperationInitiator initiatedBy = 10; 2262 } 2263 2264 // RevisionMetadata contains metadata for a specific revision in a Git repository. This field is used by the 2265 // Source Hydrator feature which may be removed in the future. 2266 message RevisionMetadata { 2267 // who authored this revision, 2268 // typically their name and email, e.g. "John Doe <john_doe@my-company.com>", 2269 // but might not match this example 2270 optional string author = 1; 2271 2272 // Date specifies when the revision was authored 2273 optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time date = 2; 2274 2275 // Tags specifies any tags currently attached to the revision 2276 // Floating tags can move from one revision to another 2277 repeated string tags = 3; 2278 2279 // Message contains the message associated with the revision, most likely the commit message. 2280 optional string message = 4; 2281 2282 // SignatureInfo contains a hint on the signer if the revision was signed with GPG, and signature verification is enabled. 2283 optional string signatureInfo = 5; 2284 2285 // References contains references to information that's related to this commit in some way. 2286 repeated RevisionReference references = 6; 2287 } 2288 2289 // RevisionReference contains a reference to a some information that is related in some way to another commit. For now, 2290 // it supports only references to a commit. In the future, it may support other types of references. 2291 message RevisionReference { 2292 // Commit contains metadata about the commit that is related in some way to another commit. 2293 optional CommitMetadata commit = 1; 2294 } 2295 2296 // SCMProviderGenerator defines a generator that scrapes a SCMaaS API to find candidate repos. 2297 message SCMProviderGenerator { 2298 // Which provider to use and config for it. 2299 optional SCMProviderGeneratorGithub github = 1; 2300 2301 optional SCMProviderGeneratorGitlab gitlab = 2; 2302 2303 optional SCMProviderGeneratorBitbucket bitbucket = 3; 2304 2305 optional SCMProviderGeneratorBitbucketServer bitbucketServer = 4; 2306 2307 optional SCMProviderGeneratorGitea gitea = 5; 2308 2309 optional SCMProviderGeneratorAzureDevOps azureDevOps = 6; 2310 2311 // Filters for which repos should be considered. 2312 repeated SCMProviderGeneratorFilter filters = 7; 2313 2314 // Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers 2315 // necessarily support all protocols. 2316 optional string cloneProtocol = 8; 2317 2318 // Standard parameters. 2319 optional int64 requeueAfterSeconds = 9; 2320 2321 optional ApplicationSetTemplate template = 10; 2322 2323 // Values contains key/value pairs which are passed directly as parameters to the template 2324 map<string, string> values = 11; 2325 2326 optional SCMProviderGeneratorAWSCodeCommit awsCodeCommit = 12; 2327 } 2328 2329 // SCMProviderGeneratorAWSCodeCommit defines connection info specific to AWS CodeCommit. 2330 message SCMProviderGeneratorAWSCodeCommit { 2331 // TagFilters provides the tag filter(s) for repo discovery 2332 repeated TagFilter tagFilters = 1; 2333 2334 // Role provides the AWS IAM role to assume, for cross-account repo discovery 2335 // if not provided, AppSet controller will use its pod/node identity to discover. 2336 optional string role = 2; 2337 2338 // Region provides the AWS region to discover repos. 2339 // if not provided, AppSet controller will infer the current region from environment. 2340 optional string region = 3; 2341 2342 // Scan all branches instead of just the default branch. 2343 optional bool allBranches = 4; 2344 } 2345 2346 // SCMProviderGeneratorAzureDevOps defines connection info specific to Azure DevOps. 2347 message SCMProviderGeneratorAzureDevOps { 2348 // Azure Devops organization. Required. E.g. "my-organization". 2349 optional string organization = 5; 2350 2351 // The URL to Azure DevOps. If blank, use https://dev.azure.com. 2352 optional string api = 6; 2353 2354 // Azure Devops team project. Required. E.g. "my-team". 2355 optional string teamProject = 7; 2356 2357 // The Personal Access Token (PAT) to use when connecting. Required. 2358 optional SecretRef accessTokenRef = 8; 2359 2360 // Scan all branches instead of just the default branch. 2361 optional bool allBranches = 9; 2362 } 2363 2364 // SCMProviderGeneratorBitbucket defines connection info specific to Bitbucket Cloud (API version 2). 2365 message SCMProviderGeneratorBitbucket { 2366 // Bitbucket workspace to scan. Required. 2367 optional string owner = 1; 2368 2369 // Bitbucket user to use when authenticating. Should have a "member" role to be able to read all repositories and branches. Required 2370 optional string user = 2; 2371 2372 // The app password to use for the user. Required. See: https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/ 2373 optional SecretRef appPasswordRef = 3; 2374 2375 // Scan all branches instead of just the main branch. 2376 optional bool allBranches = 4; 2377 } 2378 2379 // SCMProviderGeneratorBitbucketServer defines connection info specific to Bitbucket Server. 2380 message SCMProviderGeneratorBitbucketServer { 2381 // Project to scan. Required. 2382 optional string project = 1; 2383 2384 // The Bitbucket Server REST API URL to talk to. Required. 2385 optional string api = 2; 2386 2387 // Credentials for Basic auth 2388 optional BasicAuthBitbucketServer basicAuth = 3; 2389 2390 // Scan all branches instead of just the default branch. 2391 optional bool allBranches = 4; 2392 2393 // Credentials for AccessToken (Bearer auth) 2394 optional BearerTokenBitbucket bearerToken = 5; 2395 2396 // Allow self-signed TLS / Certificates; default: false 2397 optional bool insecure = 6; 2398 2399 // ConfigMap key holding the trusted certificates 2400 optional ConfigMapKeyRef caRef = 7; 2401 } 2402 2403 // SCMProviderGeneratorFilter is a single repository filter. 2404 // If multiple filter types are set on a single struct, they will be AND'd together. All filters must 2405 // pass for a repo to be included. 2406 message SCMProviderGeneratorFilter { 2407 // A regex for repo names. 2408 optional string repositoryMatch = 1; 2409 2410 // An array of paths, all of which must exist. 2411 repeated string pathsExist = 2; 2412 2413 // An array of paths, all of which must not exist. 2414 repeated string pathsDoNotExist = 3; 2415 2416 // A regex which must match at least one label. 2417 optional string labelMatch = 4; 2418 2419 // A regex which must match the branch name. 2420 optional string branchMatch = 5; 2421 } 2422 2423 // SCMProviderGeneratorGitea defines a connection info specific to Gitea. 2424 message SCMProviderGeneratorGitea { 2425 // Gitea organization or user to scan. Required. 2426 optional string owner = 1; 2427 2428 // The Gitea URL to talk to. For example https://gitea.mydomain.com/. 2429 optional string api = 2; 2430 2431 // Authentication token reference. 2432 optional SecretRef tokenRef = 3; 2433 2434 // Scan all branches instead of just the default branch. 2435 optional bool allBranches = 4; 2436 2437 // Allow self-signed TLS / Certificates; default: false 2438 optional bool insecure = 5; 2439 } 2440 2441 // SCMProviderGeneratorGithub defines connection info specific to GitHub. 2442 message SCMProviderGeneratorGithub { 2443 // GitHub org to scan. Required. 2444 optional string organization = 1; 2445 2446 // The GitHub API URL to talk to. If blank, use https://api.github.com/. 2447 optional string api = 2; 2448 2449 // Authentication token reference. 2450 optional SecretRef tokenRef = 3; 2451 2452 // AppSecretName is a reference to a GitHub App repo-creds secret. 2453 optional string appSecretName = 4; 2454 2455 // Scan all branches instead of just the default branch. 2456 optional bool allBranches = 5; 2457 } 2458 2459 // SCMProviderGeneratorGitlab defines connection info specific to Gitlab. 2460 message SCMProviderGeneratorGitlab { 2461 // Gitlab group to scan. Required. You can use either the project id (recommended) or the full namespaced path. 2462 optional string group = 1; 2463 2464 // Recurse through subgroups (true) or scan only the base group (false). Defaults to "false" 2465 optional bool includeSubgroups = 2; 2466 2467 // The Gitlab API URL to talk to. 2468 optional string api = 3; 2469 2470 // Authentication token reference. 2471 optional SecretRef tokenRef = 4; 2472 2473 // Scan all branches instead of just the default branch. 2474 optional bool allBranches = 5; 2475 2476 // Skips validating the SCM provider's TLS certificate - useful for self-signed certificates.; default: false 2477 optional bool insecure = 6; 2478 2479 // When recursing through subgroups, also include shared Projects (true) or scan only the subgroups under same path (false). Defaults to "true" 2480 optional bool includeSharedProjects = 7; 2481 2482 // Filter repos list based on Gitlab Topic. 2483 optional string topic = 8; 2484 2485 // ConfigMap key holding the trusted certificates 2486 optional ConfigMapKeyRef caRef = 9; 2487 } 2488 2489 // Utility struct for a reference to a secret key. 2490 message SecretRef { 2491 optional string secretName = 1; 2492 2493 optional string key = 2; 2494 } 2495 2496 // SignatureKey is the specification of a key required to verify commit signatures with 2497 message SignatureKey { 2498 // The ID of the key in hexadecimal notation 2499 optional string keyID = 1; 2500 } 2501 2502 // SourceHydrator specifies a dry "don't repeat yourself" source for manifests, a sync source from which to sync 2503 // hydrated manifests, and an optional hydrateTo location to act as a "staging" aread for hydrated manifests. 2504 message SourceHydrator { 2505 // DrySource specifies where the dry "don't repeat yourself" manifest source lives. 2506 optional DrySource drySource = 1; 2507 2508 // SyncSource specifies where to sync hydrated manifests from. 2509 optional SyncSource syncSource = 2; 2510 2511 // HydrateTo specifies an optional "staging" location to push hydrated manifests to. An external system would then 2512 // have to move manifests to the SyncSource, e.g. by pull request. 2513 optional HydrateTo hydrateTo = 3; 2514 } 2515 2516 // SourceHydratorStatus contains information about the current state of source hydration 2517 message SourceHydratorStatus { 2518 // LastSuccessfulOperation holds info about the most recent successful hydration 2519 optional SuccessfulHydrateOperation lastSuccessfulOperation = 1; 2520 2521 // CurrentOperation holds the status of the hydrate operation 2522 optional HydrateOperation currentOperation = 2; 2523 } 2524 2525 // SuccessfulHydrateOperation contains information about the most recent successful hydrate operation 2526 message SuccessfulHydrateOperation { 2527 // DrySHA holds the resolved revision (sha) of the dry source as of the most recent reconciliation 2528 optional string drySHA = 5; 2529 2530 // HydratedSHA holds the resolved revision (sha) of the hydrated source as of the most recent reconciliation 2531 optional string hydratedSHA = 6; 2532 2533 // SourceHydrator holds the hydrator config used for the hydrate operation 2534 optional SourceHydrator sourceHydrator = 7; 2535 } 2536 2537 // SyncOperation contains details about a sync operation. 2538 message SyncOperation { 2539 // Revision is the revision (Git) or chart version (Helm) which to sync the application to 2540 // If omitted, will use the revision specified in app spec. 2541 optional string revision = 1; 2542 2543 // Prune specifies to delete resources from the cluster that are no longer tracked in git 2544 optional bool prune = 2; 2545 2546 // DryRun specifies to perform a `kubectl apply --dry-run` without actually performing the sync 2547 optional bool dryRun = 3; 2548 2549 // SyncStrategy describes how to perform the sync 2550 optional SyncStrategy syncStrategy = 4; 2551 2552 // Resources describes which resources shall be part of the sync 2553 repeated SyncOperationResource resources = 6; 2554 2555 // Source overrides the source definition set in the application. 2556 // This is typically set in a Rollback operation and is nil during a Sync operation 2557 optional ApplicationSource source = 7; 2558 2559 // Manifests is an optional field that overrides sync source with a local directory for development 2560 repeated string manifests = 8; 2561 2562 // SyncOptions provide per-sync sync-options, e.g. Validate=false 2563 repeated string syncOptions = 9; 2564 2565 // Sources overrides the source definition set in the application. 2566 // This is typically set in a Rollback operation and is nil during a Sync operation 2567 repeated ApplicationSource sources = 10; 2568 2569 // Revisions is the list of revision (Git) or chart version (Helm) which to sync each source in sources field for the application to 2570 // If omitted, will use the revision specified in app spec. 2571 repeated string revisions = 11; 2572 2573 // SelfHealAttemptsCount contains the number of auto-heal attempts 2574 optional int64 autoHealAttemptsCount = 12; 2575 } 2576 2577 // SyncOperationResource contains resources to sync. 2578 message SyncOperationResource { 2579 optional string group = 1; 2580 2581 optional string kind = 2; 2582 2583 optional string name = 3; 2584 2585 optional string namespace = 4; 2586 } 2587 2588 // SyncOperationResult represent result of sync operation 2589 message SyncOperationResult { 2590 // Resources contains a list of sync result items for each individual resource in a sync operation 2591 repeated ResourceResult resources = 1; 2592 2593 // Revision holds the revision this sync operation was performed to 2594 optional string revision = 2; 2595 2596 // Source records the application source information of the sync, used for comparing auto-sync 2597 optional ApplicationSource source = 3; 2598 2599 // Source records the application source information of the sync, used for comparing auto-sync 2600 repeated ApplicationSource sources = 4; 2601 2602 // Revisions holds the revision this sync operation was performed for respective indexed source in sources field 2603 repeated string revisions = 5; 2604 2605 // ManagedNamespaceMetadata contains the current sync state of managed namespace metadata 2606 optional ManagedNamespaceMetadata managedNamespaceMetadata = 6; 2607 } 2608 2609 // SyncPolicy controls when a sync will be performed in response to updates in git 2610 message SyncPolicy { 2611 // Automated will keep an application synced to the target revision 2612 optional SyncPolicyAutomated automated = 1; 2613 2614 // Options allow you to specify whole app sync-options 2615 repeated string syncOptions = 2; 2616 2617 // Retry controls failed sync retry behavior 2618 optional RetryStrategy retry = 3; 2619 2620 // ManagedNamespaceMetadata controls metadata in the given namespace (if CreateNamespace=true) 2621 optional ManagedNamespaceMetadata managedNamespaceMetadata = 4; 2622 } 2623 2624 // SyncPolicyAutomated controls the behavior of an automated sync 2625 message SyncPolicyAutomated { 2626 // Prune specifies whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync (default: false) 2627 optional bool prune = 1; 2628 2629 // SelfHeal specifies whether to revert resources back to their desired state upon modification in the cluster (default: false) 2630 optional bool selfHeal = 2; 2631 2632 // AllowEmpty allows apps have zero live resources (default: false) 2633 optional bool allowEmpty = 3; 2634 2635 // Enable allows apps to explicitly control automated sync 2636 optional bool enabled = 4; 2637 } 2638 2639 // SyncSource specifies a location from which hydrated manifests may be synced. RepoURL is assumed based on the 2640 // associated DrySource config in the SourceHydrator. 2641 message SyncSource { 2642 // TargetBranch is the branch from which hydrated manifests will be synced. 2643 // If HydrateTo is not set, this is also the branch to which hydrated manifests are committed. 2644 optional string targetBranch = 1; 2645 2646 // Path is a directory path within the git repository where hydrated manifests should be committed to and synced 2647 // from. The Path should never point to the root of the repo. If hydrateTo is set, this is just the path from which 2648 // hydrated manifests will be synced. 2649 // 2650 // +kubebuilder:validation:Required 2651 // +kubebuilder:validation:MinLength=1 2652 // +kubebuilder:validation:Pattern=`^.{2,}|[^./]$` 2653 optional string path = 2; 2654 } 2655 2656 // SyncStatus contains information about the currently observed live and desired states of an application 2657 message SyncStatus { 2658 // Status is the sync state of the comparison 2659 optional string status = 1; 2660 2661 // ComparedTo contains information about what has been compared 2662 optional ComparedTo comparedTo = 2; 2663 2664 // Revision contains information about the revision the comparison has been performed to 2665 optional string revision = 3; 2666 2667 // Revisions contains information about the revisions of multiple sources the comparison has been performed to 2668 repeated string revisions = 4; 2669 } 2670 2671 // SyncStrategy controls the manner in which a sync is performed 2672 message SyncStrategy { 2673 // Apply will perform a `kubectl apply` to perform the sync. 2674 optional SyncStrategyApply apply = 1; 2675 2676 // Hook will submit any referenced resources to perform the sync. This is the default strategy 2677 optional SyncStrategyHook hook = 2; 2678 } 2679 2680 // SyncStrategyApply uses `kubectl apply` to perform the apply 2681 message SyncStrategyApply { 2682 // Force indicates whether or not to supply the --force flag to `kubectl apply`. 2683 // The --force flag deletes and re-create the resource, when PATCH encounters conflict and has 2684 // retried for 5 times. 2685 optional bool force = 1; 2686 } 2687 2688 // SyncStrategyHook will perform a sync using hooks annotations. 2689 // If no hook annotation is specified falls back to `kubectl apply`. 2690 message SyncStrategyHook { 2691 // Embed SyncStrategyApply type to inherit any `apply` options 2692 // +optional 2693 optional SyncStrategyApply syncStrategyApply = 1; 2694 } 2695 2696 // SyncWindow contains the kind, time, duration and attributes that are used to assign the syncWindows to apps 2697 message SyncWindow { 2698 // Kind defines if the window allows or blocks syncs 2699 optional string kind = 1; 2700 2701 // Schedule is the time the window will begin, specified in cron format 2702 optional string schedule = 2; 2703 2704 // Duration is the amount of time the sync window will be open 2705 optional string duration = 3; 2706 2707 // Applications contains a list of applications that the window will apply to 2708 repeated string applications = 4; 2709 2710 // Namespaces contains a list of namespaces that the window will apply to 2711 repeated string namespaces = 5; 2712 2713 // Clusters contains a list of clusters that the window will apply to 2714 repeated string clusters = 6; 2715 2716 // ManualSync enables manual syncs when they would otherwise be blocked 2717 optional bool manualSync = 7; 2718 2719 // TimeZone of the sync that will be applied to the schedule 2720 optional string timeZone = 8; 2721 2722 // UseAndOperator use AND operator for matching applications, namespaces and clusters instead of the default OR operator 2723 optional bool andOperator = 9; 2724 2725 // Description of the sync that will be applied to the schedule, can be used to add any information such as a ticket number for example 2726 optional string description = 10; 2727 } 2728 2729 // TLSClientConfig contains settings to enable transport layer security 2730 message TLSClientConfig { 2731 // Insecure specifies that the server should be accessed without verifying the TLS certificate. For testing only. 2732 optional bool insecure = 1; 2733 2734 // ServerName is passed to the server for SNI and is used in the client to check server 2735 // certificates against. If ServerName is empty, the hostname used to contact the 2736 // server is used. 2737 optional string serverName = 2; 2738 2739 // CertData holds PEM-encoded bytes (typically read from a client certificate file). 2740 // CertData takes precedence over CertFile 2741 optional bytes certData = 3; 2742 2743 // KeyData holds PEM-encoded bytes (typically read from a client certificate key file). 2744 // KeyData takes precedence over KeyFile 2745 optional bytes keyData = 4; 2746 2747 // CAData holds PEM-encoded bytes (typically read from a root certificates bundle). 2748 // CAData takes precedence over CAFile 2749 optional bytes caData = 5; 2750 } 2751 2752 message TagFilter { 2753 optional string key = 1; 2754 2755 optional string value = 2; 2756 } 2757