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