diff --git a/Makefile b/Makefile index c815c4b..79a0a78 100644 --- a/Makefile +++ b/Makefile @@ -136,7 +136,7 @@ dev-debug: $(KIND) $(KUBECTL) @$(INFO) Installing Crossplane CRDs @$(KUBECTL) apply -k https://github.com/crossplane/crossplane//cluster?ref=master @$(INFO) Installing Provider Template CRDs - @$(KUBECTL) apply -R -f package/crds + @$(KUBECTL) apply --server-side=true -R -f package/crds @$(INFO) Creating crossplane-system namespace @$(KUBECTL) create ns crossplane-system @$(INFO) Creating provider config and secret diff --git a/apis/applications/v1alpha1/conversions.go b/apis/applications/v1alpha1/conversions.go index 72a7f73..79fafd8 100644 --- a/apis/applications/v1alpha1/conversions.go +++ b/apis/applications/v1alpha1/conversions.go @@ -7,24 +7,25 @@ import ( ) // Converter helps to convert ArgoCD types to api types of this provider and vise-versa +// From & To shall both be defined for each type conversion, to prevent diverge from ArgoCD Types // goverter:converter // goverter:useZeroValueOnPointerInconsistency // goverter:ignoreUnexported // goverter:extend ExtV1JSONToRuntimeRawExtension +// goverter:struct:comment // +k8s:deepcopy-gen=false +// goverter:output:file ./zz_generated.conversion.go +// goverter:output:package github.com/crossplane-contrib/provider-argocd/apis/applications/v1alpha1 // +k8s:deepcopy-gen=false type Converter interface { // goverter:ignore ServerRef // goverter:ignore ServerSelector + // goverter:ignore NameRef + // goverter:ignore NameSelector FromArgoDestination(in argocdv1alpha1.ApplicationDestination) ApplicationDestination - FromArgoDestinationP(in *argocdv1alpha1.ApplicationDestination) *ApplicationDestination - // goverter:ignore ServerRef - // goverter:ignore ServerSelector ToArgoDestination(in ApplicationDestination) argocdv1alpha1.ApplicationDestination - ToArgoDestinationP(in *ApplicationDestination) *argocdv1alpha1.ApplicationDestination - // goverter:ignore ForProvider.Source ToArgoApplicationSpec(in *ApplicationParameters) *argocdv1alpha1.ApplicationSpec FromArgoApplicationStatus(in *argocdv1alpha1.ApplicationStatus) *ArgoApplicationStatus diff --git a/apis/applications/v1alpha1/types.go b/apis/applications/v1alpha1/types.go index 2dc8ef2..8742f5a 100644 --- a/apis/applications/v1alpha1/types.go +++ b/apis/applications/v1alpha1/types.go @@ -102,14 +102,15 @@ type ApplicationSources []ApplicationSource type ApplicationDestination struct { // Server specifies the URL of the target cluster and must be set to the Kubernetes control plane API // +crossplane:generate:reference:type=github.com/crossplane-contrib/provider-argocd/apis/cluster/v1alpha1.Cluster + // +crossplane:generate:reference:extractor=github.com/crossplane-contrib/provider-argocd/apis/cluster/v1alpha1.ServerAddress() // +crossplane:generate:reference:refFieldName=ServerRef // +crossplane:generate:reference:selectorFieldName=ServerSelector // +optional Server *string `json:"server,omitempty"` - // ServerRef is a reference to an Cluster used to set Server + // ServerRef is a reference to Cluster used to set Server // +optional ServerRef *xpv1.Reference `json:"serverRef,omitempty"` - // SourceReposSelector selects references to Repositories used to set SourceRepos + // ServerSelector selects references to Cluster used to set Server // +optional ServerSelector *xpv1.Selector `json:"serverSelector,omitempty"` // Namespace specifies the target namespace for the application's resources. @@ -117,8 +118,18 @@ type ApplicationDestination struct { // +optional Namespace *string `json:"namespace,omitempty"` // Name is an alternate way of specifying the target cluster by its symbolic name + // +crossplane:generate:reference:type=github.com/crossplane-contrib/provider-argocd/apis/cluster/v1alpha1.Cluster + // +crossplane:generate:reference:extractor=github.com/crossplane-contrib/provider-argocd/apis/cluster/v1alpha1.ServerName() + // +crossplane:generate:reference:refFieldName=NameRef + // +crossplane:generate:reference:selectorFieldName=NameSelector // +optional Name *string `json:"name,omitempty"` + // NameRef is a reference to a Cluster used to set Name + // +optional + NameRef *xpv1.Reference `json:"nameRef,omitempty"` + // NameSelector is a reference to a Cluster used to set Name + // +optional + NameSelector *xpv1.Selector `json:"nameSelector,omitempty"` // contains filtered or unexported fields } diff --git a/apis/applications/v1alpha1/zz_generated.conversion.go b/apis/applications/v1alpha1/zz_generated.conversion.go index f0405eb..3098491 100755 --- a/apis/applications/v1alpha1/zz_generated.conversion.go +++ b/apis/applications/v1alpha1/zz_generated.conversion.go @@ -1,4 +1,5 @@ // Code generated by github.com/jmattheis/goverter, DO NOT EDIT. +//go:build !ignore_autogenerated package v1alpha1 @@ -13,6 +14,7 @@ import ( "time" ) +// +k8s:deepcopy-gen=false type ConverterImpl struct{} func (c *ConverterImpl) FromArgoApplicationStatus(source *v1alpha1.ApplicationStatus) *ArgoApplicationStatus { @@ -28,11 +30,7 @@ func (c *ConverterImpl) FromArgoApplicationStatus(source *v1alpha1.ApplicationSt } v1alpha1ArgoApplicationStatus.Resources = v1alpha1ResourceStatusList v1alpha1ArgoApplicationStatus.Sync = c.v1alpha1SyncStatusToV1alpha1SyncStatus((*source).Sync) - var v1alpha1HealthStatus HealthStatus - v1alpha1HealthStatus.Status = health.HealthStatusCode((*source).Health.Status) - pString := (*source).Health.Message - v1alpha1HealthStatus.Message = &pString - v1alpha1ArgoApplicationStatus.Health = v1alpha1HealthStatus + v1alpha1ArgoApplicationStatus.Health = c.v1alpha1HealthStatusToV1alpha1HealthStatus((*source).Health) v1alpha1ArgoApplicationStatus.History = c.v1alpha1RevisionHistoriesToV1alpha1RevisionHistories((*source).History) var v1alpha1ApplicationConditionList []ApplicationCondition if (*source).Conditions != nil { @@ -70,14 +68,6 @@ func (c *ConverterImpl) FromArgoDestination(source v1alpha1.ApplicationDestinati v1alpha1ApplicationDestination.Name = &pString3 return v1alpha1ApplicationDestination } -func (c *ConverterImpl) FromArgoDestinationP(source *v1alpha1.ApplicationDestination) *ApplicationDestination { - var pV1alpha1ApplicationDestination *ApplicationDestination - if source != nil { - v1alpha1ApplicationDestination := c.FromArgoDestination((*source)) - pV1alpha1ApplicationDestination = &v1alpha1ApplicationDestination - } - return pV1alpha1ApplicationDestination -} func (c *ConverterImpl) ToArgoApplicationSpec(source *ApplicationParameters) *v1alpha1.ApplicationSpec { var pV1alpha1ApplicationSpec *v1alpha1.ApplicationSpec if source != nil { @@ -125,14 +115,6 @@ func (c *ConverterImpl) ToArgoDestination(source ApplicationDestination) v1alpha v1alpha1ApplicationDestination.Name = xstring3 return v1alpha1ApplicationDestination } -func (c *ConverterImpl) ToArgoDestinationP(source *ApplicationDestination) *v1alpha1.ApplicationDestination { - var pV1alpha1ApplicationDestination *v1alpha1.ApplicationDestination - if source != nil { - v1alpha1ApplicationDestination := c.ToArgoDestination((*source)) - pV1alpha1ApplicationDestination = &v1alpha1ApplicationDestination - } - return pV1alpha1ApplicationDestination -} func (c *ConverterImpl) commonHookTypeToString(source common.HookType) string { return string(source) } @@ -152,14 +134,24 @@ func (c *ConverterImpl) intstrIntOrStringToIntstrIntOrString(source intstr.IntOr func (c *ConverterImpl) pRuntimeRawExtensionToV1JSON(source *runtime.RawExtension) v1.JSON { var v1JSON v1.JSON if source != nil { - v1JSON = c.runtimeRawExtensionToV1JSON((*source)) + var v1JSON2 v1.JSON + var byteList []uint8 + if (*source).Raw != nil { + byteList = make([]uint8, len((*source).Raw)) + for i := 0; i < len((*source).Raw); i++ { + byteList[i] = (*source).Raw[i] + } + } + v1JSON2.Raw = byteList + v1JSON = v1JSON2 } return v1JSON } func (c *ConverterImpl) pV1TimeToPV1Time(source *v11.Time) *v11.Time { var pV1Time *v11.Time if source != nil { - v1Time := c.v1TimeToV1Time((*source)) + var v1Time v11.Time + v1Time.Time = c.timeTimeToTimeTime((*source).Time) pV1Time = &v1Time } return pV1Time @@ -791,10 +783,7 @@ func (c *ConverterImpl) pV1alpha1SyncStrategyHookToPV1alpha1SyncStrategyHook(sou var pV1alpha1SyncStrategyHook *SyncStrategyHook if source != nil { var v1alpha1SyncStrategyHook SyncStrategyHook - var v1alpha1SyncStrategyApply SyncStrategyApply - pBool := (*source).SyncStrategyApply.Force - v1alpha1SyncStrategyApply.Force = &pBool - v1alpha1SyncStrategyHook.SyncStrategyApply = v1alpha1SyncStrategyApply + v1alpha1SyncStrategyHook.SyncStrategyApply = c.v1alpha1SyncStrategyApplyToV1alpha1SyncStrategyApply((*source).SyncStrategyApply) pV1alpha1SyncStrategyHook = &v1alpha1SyncStrategyHook } return pV1alpha1SyncStrategyHook @@ -809,30 +798,15 @@ func (c *ConverterImpl) pV1alpha1SyncStrategyToPV1alpha1SyncStrategy(source *v1a } return pV1alpha1SyncStrategy } -func (c *ConverterImpl) runtimeRawExtensionToV1JSON(source runtime.RawExtension) v1.JSON { - var v1JSON v1.JSON - var byteList []uint8 - if source.Raw != nil { - byteList = make([]uint8, len(source.Raw)) - for i := 0; i < len(source.Raw); i++ { - byteList[i] = source.Raw[i] - } - } - v1JSON.Raw = byteList - return v1JSON -} func (c *ConverterImpl) timeTimeToTimeTime(source time.Time) time.Time { var timeTime time.Time + _ = source return timeTime } func (c *ConverterImpl) v1TimeToPV1Time(source v11.Time) *v11.Time { - v1Time := c.v1TimeToV1Time(source) - return &v1Time -} -func (c *ConverterImpl) v1TimeToV1Time(source v11.Time) v11.Time { var v1Time v11.Time v1Time.Time = c.timeTimeToTimeTime(source.Time) - return v1Time + return &v1Time } func (c *ConverterImpl) v1alpha1ApplicationConditionToV1alpha1ApplicationCondition(source v1alpha1.ApplicationCondition) ApplicationCondition { var v1alpha1ApplicationCondition ApplicationCondition @@ -965,6 +939,35 @@ func (c *ConverterImpl) v1alpha1ApplicationSourceToV1alpha1ApplicationSource(sou v1alpha1ApplicationSource.Ref = &pString4 return v1alpha1ApplicationSource } +func (c *ConverterImpl) v1alpha1ApplicationSourceToV1alpha1ApplicationSource2(source ApplicationSource) v1alpha1.ApplicationSource { + var v1alpha1ApplicationSource v1alpha1.ApplicationSource + v1alpha1ApplicationSource.RepoURL = source.RepoURL + var xstring string + if source.Path != nil { + xstring = *source.Path + } + v1alpha1ApplicationSource.Path = xstring + var xstring2 string + if source.TargetRevision != nil { + xstring2 = *source.TargetRevision + } + v1alpha1ApplicationSource.TargetRevision = xstring2 + v1alpha1ApplicationSource.Helm = c.pV1alpha1ApplicationSourceHelmToPV1alpha1ApplicationSourceHelm2(source.Helm) + v1alpha1ApplicationSource.Kustomize = c.pV1alpha1ApplicationSourceKustomizeToPV1alpha1ApplicationSourceKustomize2(source.Kustomize) + v1alpha1ApplicationSource.Directory = c.pV1alpha1ApplicationSourceDirectoryToPV1alpha1ApplicationSourceDirectory2(source.Directory) + v1alpha1ApplicationSource.Plugin = c.pV1alpha1ApplicationSourcePluginToPV1alpha1ApplicationSourcePlugin2(source.Plugin) + var xstring3 string + if source.Chart != nil { + xstring3 = *source.Chart + } + v1alpha1ApplicationSource.Chart = xstring3 + var xstring4 string + if source.Ref != nil { + xstring4 = *source.Ref + } + v1alpha1ApplicationSource.Ref = xstring4 + return v1alpha1ApplicationSource +} func (c *ConverterImpl) v1alpha1ApplicationSourceTypeToV1alpha1ApplicationSourceType(source v1alpha1.ApplicationSourceType) ApplicationSourceType { return ApplicationSourceType(source) } @@ -983,33 +986,7 @@ func (c *ConverterImpl) v1alpha1ApplicationSourcesToV1alpha1ApplicationSources2( if source != nil { v1alpha1ApplicationSources = make(v1alpha1.ApplicationSources, len(source)) for i := 0; i < len(source); i++ { - var v1alpha1ApplicationSource v1alpha1.ApplicationSource - v1alpha1ApplicationSource.RepoURL = source[i].RepoURL - var xstring string - if source[i].Path != nil { - xstring = *source[i].Path - } - v1alpha1ApplicationSource.Path = xstring - var xstring2 string - if source[i].TargetRevision != nil { - xstring2 = *source[i].TargetRevision - } - v1alpha1ApplicationSource.TargetRevision = xstring2 - v1alpha1ApplicationSource.Helm = c.pV1alpha1ApplicationSourceHelmToPV1alpha1ApplicationSourceHelm2(source[i].Helm) - v1alpha1ApplicationSource.Kustomize = c.pV1alpha1ApplicationSourceKustomizeToPV1alpha1ApplicationSourceKustomize2(source[i].Kustomize) - v1alpha1ApplicationSource.Directory = c.pV1alpha1ApplicationSourceDirectoryToPV1alpha1ApplicationSourceDirectory2(source[i].Directory) - v1alpha1ApplicationSource.Plugin = c.pV1alpha1ApplicationSourcePluginToPV1alpha1ApplicationSourcePlugin2(source[i].Plugin) - var xstring3 string - if source[i].Chart != nil { - xstring3 = *source[i].Chart - } - v1alpha1ApplicationSource.Chart = xstring3 - var xstring4 string - if source[i].Ref != nil { - xstring4 = *source[i].Ref - } - v1alpha1ApplicationSource.Ref = xstring4 - v1alpha1ApplicationSources[i] = v1alpha1ApplicationSource + v1alpha1ApplicationSources[i] = c.v1alpha1ApplicationSourceToV1alpha1ApplicationSource2(source[i]) } } return v1alpha1ApplicationSources @@ -1061,6 +1038,13 @@ func (c *ConverterImpl) v1alpha1EnvToV1alpha1Env2(source Env) v1alpha1.Env { } return v1alpha1Env } +func (c *ConverterImpl) v1alpha1HealthStatusToV1alpha1HealthStatus(source v1alpha1.HealthStatus) HealthStatus { + var v1alpha1HealthStatus HealthStatus + v1alpha1HealthStatus.Status = health.HealthStatusCode(source.Status) + pString := source.Message + v1alpha1HealthStatus.Message = &pString + return v1alpha1HealthStatus +} func (c *ConverterImpl) v1alpha1HelmFileParameterToV1alpha1HelmFileParameter(source v1alpha1.HelmFileParameter) HelmFileParameter { var v1alpha1HelmFileParameter HelmFileParameter pString := source.Name @@ -1373,3 +1357,9 @@ func (c *ConverterImpl) v1alpha1SyncStatusToV1alpha1SyncStatus(source v1alpha1.S v1alpha1SyncStatus.Revisions = stringList return v1alpha1SyncStatus } +func (c *ConverterImpl) v1alpha1SyncStrategyApplyToV1alpha1SyncStrategyApply(source v1alpha1.SyncStrategyApply) SyncStrategyApply { + var v1alpha1SyncStrategyApply SyncStrategyApply + pBool := source.Force + v1alpha1SyncStrategyApply.Force = &pBool + return v1alpha1SyncStrategyApply +} diff --git a/apis/applications/v1alpha1/zz_generated.deepcopy.go b/apis/applications/v1alpha1/zz_generated.deepcopy.go index 9151ad3..d8790ff 100644 --- a/apis/applications/v1alpha1/zz_generated.deepcopy.go +++ b/apis/applications/v1alpha1/zz_generated.deepcopy.go @@ -100,6 +100,16 @@ func (in *ApplicationDestination) DeepCopyInto(out *ApplicationDestination) { *out = new(string) **out = **in } + if in.NameRef != nil { + in, out := &in.NameRef, &out.NameRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.NameSelector != nil { + in, out := &in.NameSelector, &out.NameSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationDestination. @@ -757,21 +767,6 @@ func (in *ConnectionState) DeepCopy() *ConnectionState { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ConverterImpl) DeepCopyInto(out *ConverterImpl) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConverterImpl. -func (in *ConverterImpl) DeepCopy() *ConverterImpl { - if in == nil { - return nil - } - out := new(ConverterImpl) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in Env) DeepCopyInto(out *Env) { { diff --git a/apis/applications/v1alpha1/zz_generated.resolvers.go b/apis/applications/v1alpha1/zz_generated.resolvers.go index 673e9a9..ea5ba28 100644 --- a/apis/applications/v1alpha1/zz_generated.resolvers.go +++ b/apis/applications/v1alpha1/zz_generated.resolvers.go @@ -19,7 +19,7 @@ func (mg *Application) ResolveReferences(ctx context.Context, c client.Reader) e rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Destination.Server), - Extract: reference.ExternalName(), + Extract: v1alpha1.ServerAddress(), Reference: mg.Spec.ForProvider.Destination.ServerRef, Selector: mg.Spec.ForProvider.Destination.ServerSelector, To: reference.To{ @@ -33,9 +33,25 @@ func (mg *Application) ResolveReferences(ctx context.Context, c client.Reader) e mg.Spec.ForProvider.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) mg.Spec.ForProvider.Destination.ServerRef = rsp.ResolvedReference + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Destination.NameRef, + Selector: mg.Spec.ForProvider.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Destination.Name") + } + mg.Spec.ForProvider.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Destination.NameRef = rsp.ResolvedReference + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ CurrentValue: reference.FromPtrValue(mg.Status.AtProvider.Sync.ComparedTo.Destination.Server), - Extract: reference.ExternalName(), + Extract: v1alpha1.ServerAddress(), Reference: mg.Status.AtProvider.Sync.ComparedTo.Destination.ServerRef, Selector: mg.Status.AtProvider.Sync.ComparedTo.Destination.ServerSelector, To: reference.To{ @@ -49,5 +65,21 @@ func (mg *Application) ResolveReferences(ctx context.Context, c client.Reader) e mg.Status.AtProvider.Sync.ComparedTo.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) mg.Status.AtProvider.Sync.ComparedTo.Destination.ServerRef = rsp.ResolvedReference + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Status.AtProvider.Sync.ComparedTo.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Status.AtProvider.Sync.ComparedTo.Destination.NameRef, + Selector: mg.Status.AtProvider.Sync.ComparedTo.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Status.AtProvider.Sync.ComparedTo.Destination.Name") + } + mg.Status.AtProvider.Sync.ComparedTo.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Status.AtProvider.Sync.ComparedTo.Destination.NameRef = rsp.ResolvedReference + return nil } diff --git a/apis/applicationsets/v1alpha1/application_types.go b/apis/applicationsets/v1alpha1/application_types.go new file mode 100644 index 0000000..a59efad --- /dev/null +++ b/apis/applicationsets/v1alpha1/application_types.go @@ -0,0 +1,372 @@ +/* +Copyright 2021 The Crossplane Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + extv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/intstr" +) + +// ApplicationSpec define the desired state of an ArgoCD Git Application +type ApplicationSpec struct { + Source *ApplicationSource `json:"source,omitempty" protobuf:"bytes,1,opt,name=source"` + // Destination is a reference to the target Kubernetes server and namespace + Destination ApplicationDestination `json:"destination" protobuf:"bytes,2,name=destination"` + // Project is a reference to the project this application belongs to. + // The empty string means that application belongs to the 'default' project. + Project string `json:"project" protobuf:"bytes,3,name=project"` + // SyncPolicy controls when and how a sync will be performed + SyncPolicy *SyncPolicy `json:"syncPolicy,omitempty" protobuf:"bytes,4,name=syncPolicy"` + // IgnoreDifferences is a list of resources and their fields which should be ignored during comparison + IgnoreDifferences []ResourceIgnoreDifferences `json:"ignoreDifferences,omitempty" protobuf:"bytes,5,name=ignoreDifferences"` + // Info contains a list of information (URLs, email addresses, and plain text) that relates to the application + Info []Info `json:"info,omitempty" protobuf:"bytes,6,name=info"` + // 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. + // This should only be changed in exceptional circumstances. + // Setting to zero will store no history. This will reduce storage used. + // Increasing will increase the space used to store the history, so we do not recommend increasing it. + // Default is 10. + RevisionHistoryLimit *int64 `json:"revisionHistoryLimit,omitempty" protobuf:"bytes,7,name=revisionHistoryLimit"` + + // Sources is a reference to the location of the application's manifests or chart + Sources ApplicationSources `json:"sources,omitempty" protobuf:"bytes,8,opt,name=sources"` +} + +// ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state. +type ResourceIgnoreDifferences struct { + Group string `json:"group,omitempty" protobuf:"bytes,1,opt,name=group"` + Kind string `json:"kind" protobuf:"bytes,2,opt,name=kind"` + Name string `json:"name,omitempty" protobuf:"bytes,3,opt,name=name"` + Namespace string `json:"namespace,omitempty" protobuf:"bytes,4,opt,name=namespace"` + JSONPointers []string `json:"jsonPointers,omitempty" protobuf:"bytes,5,opt,name=jsonPointers"` + JQPathExpressions []string `json:"jqPathExpressions,omitempty" protobuf:"bytes,6,opt,name=jqPathExpressions"` + // ManagedFieldsManagers is a list of trusted managers. Fields mutated by those managers will take precedence over the + // desired state defined in the SCM and won't be displayed in diffs + ManagedFieldsManagers []string `json:"managedFieldsManagers,omitempty" protobuf:"bytes,7,opt,name=managedFieldsManagers"` +} + +// EnvEntry represents an entry in the application's environment +type EnvEntry struct { + // Name is the name of the variable, usually expressed in uppercase + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + // Value is the value of the variable + Value string `json:"value" protobuf:"bytes,2,opt,name=value"` +} + +// ApplicationSource contains all required information about the source of an application +type ApplicationSource struct { + // RepoURL is the URL to the repository (Git or Helm) that contains the application manifests + RepoURL string `json:"repoURL" protobuf:"bytes,1,opt,name=repoURL"` + // Path is a directory path within the Git repository, and is only valid for applications sourced from Git. + Path *string `json:"path,omitempty" protobuf:"bytes,2,opt,name=path"` + // TargetRevision defines the revision of the source to sync the application to. + // In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. + // In case of Helm, this is a semver tag for the Chart's version. + TargetRevision *string `json:"targetRevision,omitempty" protobuf:"bytes,4,opt,name=targetRevision"` + // Helm holds helm specific options + Helm *ApplicationSourceHelm `json:"helm,omitempty" protobuf:"bytes,7,opt,name=helm"` + // Kustomize holds kustomize specific options + Kustomize *ApplicationSourceKustomize `json:"kustomize,omitempty" protobuf:"bytes,8,opt,name=kustomize"` + // Directory holds path/directory specific options + Directory *ApplicationSourceDirectory `json:"directory,omitempty" protobuf:"bytes,10,opt,name=directory"` + // Plugin holds config management plugin specific options + Plugin *ApplicationSourcePlugin `json:"plugin,omitempty" protobuf:"bytes,11,opt,name=plugin"` + // Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo. + Chart *string `json:"chart,omitempty" protobuf:"bytes,12,opt,name=chart"` + // Ref is reference to another source within sources field. This field will not be used if used with a `source` tag. + Ref *string `json:"ref,omitempty" protobuf:"bytes,13,opt,name=ref"` +} + +// ApplicationSources contains list of required information about the sources of an application +type ApplicationSources []ApplicationSource + +// ApplicationDestination holds information about the application's destination +type ApplicationDestination struct { + // Server specifies the URL of the target cluster and must be set to the Kubernetes control plane API + // +crossplane:generate:reference:type=github.com/crossplane-contrib/provider-argocd/apis/cluster/v1alpha1.Cluster + // +crossplane:generate:reference:refFieldName=ServerRef + // +crossplane:generate:reference:selectorFieldName=ServerSelector + // +optional + Server *string `json:"server,omitempty"` + // ServerRef is a reference to an Cluster used to set Server + // +optional + ServerRef *xpv1.Reference `json:"serverRef,omitempty"` + // SourceReposSelector selects references to Repositories used to set SourceRepos + // +optional + ServerSelector *xpv1.Selector `json:"serverSelector,omitempty"` + // Namespace specifies the target namespace for the application's resources. + // The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace + // +optional + Namespace *string `json:"namespace,omitempty"` + // Name is an alternate way of specifying the target cluster by its symbolic name + // +crossplane:generate:reference:type=github.com/crossplane-contrib/provider-argocd/apis/cluster/v1alpha1.Cluster + // +crossplane:generate:reference:extractor=github.com/crossplane-contrib/provider-argocd/apis/cluster/v1alpha1.ServerName() + // +crossplane:generate:reference:refFieldName=NameRef + // +crossplane:generate:reference:selectorFieldName=NameSelector + // +optional + Name *string `json:"name,omitempty"` + // NameRef is a reference to a Cluster used to set Name + // +optional + NameRef *xpv1.Reference `json:"nameRef,omitempty"` + // NameSelector is a reference to a Cluster used to set Name + // +optional + NameSelector *xpv1.Selector `json:"nameSelector,omitempty"` + // contains filtered or unexported fields +} + +// ConnectionState is the observed state of the argocd repository +type ConnectionState struct { + Status string `json:"status,omitempty"` + Message string `json:"message,omitempty"` + ModifiedAt *metav1.Time `json:"attemptedAt,omitempty"` +} + +// ApplicationSourceHelm holds helm specific options +type ApplicationSourceHelm struct { + // ValuesFiles is a list of Helm value files to use when generating a template + ValueFiles []string `json:"valueFiles,omitempty" protobuf:"bytes,1,opt,name=valueFiles"` + // Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation + Parameters []HelmParameter `json:"parameters,omitempty" protobuf:"bytes,2,opt,name=parameters"` + // ReleaseName is the Helm release name to use. If omitted it will use the application name + ReleaseName *string `json:"releaseName,omitempty" protobuf:"bytes,3,opt,name=releaseName"` + // Values specifies Helm values to be passed to helm template, typically defined as a block + Values *string `json:"values,omitempty" protobuf:"bytes,4,opt,name=values"` + // FileParameters are file parameters to the helm template + FileParameters []HelmFileParameter `json:"fileParameters,omitempty" protobuf:"bytes,5,opt,name=fileParameters"` + // Version is the Helm version to use for templating ("3") + Version *string `json:"version,omitempty" protobuf:"bytes,6,opt,name=version"` + // PassCredentials pass credentials to all domains (Helm's --pass-credentials) + PassCredentials *bool `json:"passCredentials,omitempty" protobuf:"bytes,7,opt,name=passCredentials"` + // IgnoreMissingValueFiles prevents helm template from failing when valueFiles do not exist locally by not appending them to helm template --values + IgnoreMissingValueFiles *bool `json:"ignoreMissingValueFiles,omitempty" protobuf:"bytes,8,opt,name=ignoreMissingValueFiles"` + // SkipCrds skips custom resource definition installation step (Helm's --skip-crds) + SkipCrds *bool `json:"skipCrds,omitempty" protobuf:"bytes,9,opt,name=skipCrds"` + // ValuesObject specifies Helm values to be passed to helm template, defined as a map. This takes precedence over Values. + ValuesObject extv1.JSON `json:"valuesObject,omitempty" protobuf:"bytes,10,opt,name=valuesObject"` +} + +// HelmParameter is a parameter that's passed to helm template during manifest generation +type HelmParameter struct { + // Name is the name of the Helm parameter + Name *string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` + // Value is the value for the Helm parameter + Value *string `json:"value,omitempty" protobuf:"bytes,2,opt,name=value"` + // ForceString determines whether to tell Helm to interpret booleans and numbers as strings + ForceString *bool `json:"forceString,omitempty" protobuf:"bytes,3,opt,name=forceString"` +} + +// HelmFileParameter is a file parameter that's passed to helm template during manifest generation +type HelmFileParameter struct { + // Name is the name of the Helm parameter + Name *string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` + // Path is the path to the file containing the values for the Helm parameter + Path *string `json:"path,omitempty" protobuf:"bytes,2,opt,name=path"` +} + +// ApplicationSourceKustomize holds options specific to an Application source specific to Kustomize +type ApplicationSourceKustomize struct { + // NamePrefix is a prefix appended to resources for Kustomize apps + NamePrefix *string `json:"namePrefix,omitempty" protobuf:"bytes,1,opt,name=namePrefix"` + // NameSuffix is a suffix appended to resources for Kustomize apps + NameSuffix *string `json:"nameSuffix,omitempty" protobuf:"bytes,2,opt,name=nameSuffix"` + // Images is a list of Kustomize image override specifications + Images KustomizeImages `json:"images,omitempty" protobuf:"bytes,3,opt,name=images"` + // CommonLabels is a list of additional labels to add to rendered manifests + CommonLabels map[string]string `json:"commonLabels,omitempty" protobuf:"bytes,4,opt,name=commonLabels"` + // Version controls which version of Kustomize to use for rendering manifests + Version *string `json:"version,omitempty" protobuf:"bytes,5,opt,name=version"` + // CommonAnnotations is a list of additional annotations to add to rendered manifests + CommonAnnotations map[string]string `json:"commonAnnotations,omitempty" protobuf:"bytes,6,opt,name=commonAnnotations"` + // ForceCommonLabels specifies whether to force applying common labels to resources for Kustomize apps + ForceCommonLabels *bool `json:"forceCommonLabels,omitempty" protobuf:"bytes,7,opt,name=forceCommonLabels"` + // ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps + ForceCommonAnnotations *bool `json:"forceCommonAnnotations,omitempty" protobuf:"bytes,8,opt,name=forceCommonAnnotations"` + // Namespace sets the namespace that Kustomize adds to all resources + Namespace *string `json:"namespace,omitempty" protobuf:"bytes,9,opt,name=namespace"` + // CommonAnnotationsEnvsubst specifies whether to apply env variables substitution for annotation values + CommonAnnotationsEnvsubst *bool `json:"commonAnnotationsEnvsubst,omitempty" protobuf:"bytes,10,opt,name=commonAnnotationsEnvsubst"` + // Replicas is a list of Kustomize Replicas override specifications + Replicas KustomizeReplicas `json:"replicas,omitempty" protobuf:"bytes,11,opt,name=replicas"` +} + +// KustomizeReplica override specifications +type KustomizeReplica struct { + // Name of Deployment or StatefulSet + Name string `json:"name" protobuf:"bytes,1,name=name"` + // Number of replicas + Count intstr.IntOrString `json:"count" protobuf:"bytes,2,name=count"` +} + +// KustomizeReplicas is a list of KustomizeReplica override specifications +type KustomizeReplicas []KustomizeReplica + +// KustomizeImages is a list of Kustomize images +type KustomizeImages []KustomizeImage + +// KustomizeImage represents a Kustomize image definition in the format [old_image_name=]: +type KustomizeImage string + +// Info is a list of informational items for this operation +type Info struct { + Name string `json:"name" protobuf:"bytes,1,name=name"` + Value string `json:"value" protobuf:"bytes,2,name=value"` +} + +// SyncOptions provide per-sync sync-options, e.g. Validate=false +type SyncOptions []string + +// SyncPolicy controls when a sync will be performed in response to updates in git +type SyncPolicy struct { + // Automated will keep an application synced to the target revision + Automated *SyncPolicyAutomated `json:"automated,omitempty" protobuf:"bytes,1,opt,name=automated"` + // Options allow you to specify whole app sync-options + SyncOptions SyncOptions `json:"syncOptions,omitempty" protobuf:"bytes,2,opt,name=syncOptions"` + // Retry controls failed sync retry behavior + Retry *RetryStrategy `json:"retry,omitempty" protobuf:"bytes,3,opt,name=retry"` + // ManagedNamespaceMetadata controls metadata in the given namespace (if CreateNamespace=true) + ManagedNamespaceMetadata *ManagedNamespaceMetadata `json:"managedNamespaceMetadata,omitempty" protobuf:"bytes,4,opt,name=managedNamespaceMetadata"` +} + +// SyncPolicyAutomated controls the behavior of an automated sync +type SyncPolicyAutomated struct { + // Prune specifies whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync (default: false) + Prune *bool `json:"prune,omitempty" protobuf:"bytes,1,opt,name=prune"` + // SelfHeal specifes whether to revert resources back to their desired state upon modification in the cluster (default: false) + SelfHeal *bool `json:"selfHeal,omitempty" protobuf:"bytes,2,opt,name=selfHeal"` + // AllowEmpty allows apps have zero live resources (default: false) + AllowEmpty *bool `json:"allowEmpty,omitempty" protobuf:"bytes,3,opt,name=allowEmpty"` +} + +// SyncStrategy controls the manner in which a sync is performed +type SyncStrategy struct { + // Apply will perform a `kubectl apply` to perform the sync. + Apply *SyncStrategyApply `json:"apply,omitempty" protobuf:"bytes,1,opt,name=apply"` + // Hook will submit any referenced resources to perform the sync. This is the default strategy + Hook *SyncStrategyHook `json:"hook,omitempty" protobuf:"bytes,2,opt,name=hook"` +} + +// Backoff is the backoff strategy to use on subsequent retries for failing syncs +type Backoff struct { + // Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") + Duration *string `json:"duration,omitempty" protobuf:"bytes,1,opt,name=duration"` + // Factor is a factor to multiply the base duration after each failed retry + Factor *int64 `json:"factor,omitempty" protobuf:"bytes,2,name=factor"` + // MaxDuration is the maximum amount of time allowed for the backoff strategy + MaxDuration *string `json:"maxDuration,omitempty" protobuf:"bytes,3,opt,name=maxDuration"` +} + +// SyncStrategyApply uses `kubectl apply` to perform the apply +type SyncStrategyApply struct { + // Force indicates whether or not to supply the --force flag to `kubectl apply`. + // The --force flag deletes and re-create the resource, when PATCH encounters conflict and has + // retried for 5 times. + Force *bool `json:"force,omitempty" protobuf:"bytes,1,opt,name=force"` +} + +// SyncStrategyHook will perform a sync using hooks annotations. +// If no hook annotation is specified falls back to `kubectl apply`. +type SyncStrategyHook struct { + // Embed SyncStrategyApply type to inherit any `apply` options + // +optional + SyncStrategyApply `json:",inline" protobuf:"bytes,1,opt,name=syncStrategyApply"` +} + +// RetryStrategy controls the strategy to apply if a sync fails +type RetryStrategy struct { + // Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed. + Limit *int64 `json:"limit,omitempty" protobuf:"bytes,1,opt,name=limit"` + // Backoff controls how to backoff on subsequent retries of failed syncs + Backoff *Backoff `json:"backoff,omitempty" protobuf:"bytes,2,opt,name=backoff,casttype=Backoff"` +} + +// ManagedNamespaceMetadata controls metadata in the given namespace (if CreateNamespace=true) +type ManagedNamespaceMetadata struct { + Labels map[string]string `json:"labels,omitempty" protobuf:"bytes,1,opt,name=labels"` + Annotations map[string]string `json:"annotations,omitempty" protobuf:"bytes,2,opt,name=annotations"` +} + +// ApplicationSourceDirectory holds config management plugin specific options +type ApplicationSourceDirectory struct { + // Recurse specifies whether to scan a directory recursively for manifests + Recurse *bool `json:"recurse,omitempty" protobuf:"bytes,1,opt,name=recurse"` + // Jsonnet holds options specific to Jsonnet + Jsonnet ApplicationSourceJsonnet `json:"jsonnet,omitempty" protobuf:"bytes,2,opt,name=jsonnet"` + // Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation + Exclude *string `json:"exclude,omitempty" protobuf:"bytes,3,opt,name=exclude"` + // Include contains a glob pattern to match paths against that should be explicitly included during manifest generation + Include *string `json:"include,omitempty" protobuf:"bytes,4,opt,name=include"` +} + +// ApplicationSourceJsonnet holds options specific to Jsonnet +type ApplicationSourceJsonnet struct { + // ExtVars is a list of Jsonnet External Variables + ExtVars []JsonnetVar `json:"extVars,omitempty" protobuf:"bytes,1,opt,name=extVars"` + // TLAS is a list of Jsonnet Top-level Arguments + TLAs []JsonnetVar `json:"tlas,omitempty" protobuf:"bytes,2,opt,name=tlas"` + // Additional library search dirs + Libs []string `json:"libs,omitempty" protobuf:"bytes,3,opt,name=libs"` +} + +// JsonnetVar represents a variable to be passed to jsonnet during manifest generation +type JsonnetVar struct { + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + Value string `json:"value" protobuf:"bytes,2,opt,name=value"` + Code *bool `json:"code,omitempty" protobuf:"bytes,3,opt,name=code"` +} + +// ApplicationSourcePluginParameters is a list of specific config management parameters +type ApplicationSourcePluginParameters []ApplicationSourcePluginParameter + +// ApplicationSourcePluginParameter holds options specific to config management parameters +type ApplicationSourcePluginParameter struct { + // Name is the name identifying a parameter. + Name *string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` + // String_ is the value of a string type parameter. + String_ *string `json:"string,omitempty" protobuf:"bytes,5,opt,name=string"` //nolint:all + // Map is the value of a map type parameter. + *OptionalMap `json:",omitempty" protobuf:"bytes,3,rep,name=map"` + // Array is the value of an array type parameter. + *OptionalArray `json:",omitempty" protobuf:"bytes,4,rep,name=array"` +} + +// OptionalMap is the value of a map type parameter. +type OptionalMap struct { + // Map is the value of a map type parameter. + // +optional + Map map[string]string `json:"map" protobuf:"bytes,1,rep,name=map"` + // We need the explicit +optional so that kube-builder generates the CRD without marking this as required. +} + +// OptionalArray is the value of an array type parameter. +type OptionalArray struct { + // Array is the value of an array type parameter. + // +optional + Array []string `json:"array" protobuf:"bytes,1,rep,name=array"` + // We need the explicit +optional so that kube-builder generates the CRD without marking this as required. +} + +// ApplicationSourcePlugin holds options specific to config management plugins +type ApplicationSourcePlugin struct { + Name *string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` + Env `json:"env,omitempty" protobuf:"bytes,2,opt,name=env"` + Parameters ApplicationSourcePluginParameters `json:"parameters,omitempty" protobuf:"bytes,3,opt,name=parameters"` +} + +// Env holds options specific to config management plugins +type Env []*EnvEntry diff --git a/apis/applicationsets/v1alpha1/conversions.go b/apis/applicationsets/v1alpha1/conversions.go new file mode 100644 index 0000000..8d9bce0 --- /dev/null +++ b/apis/applicationsets/v1alpha1/conversions.go @@ -0,0 +1,42 @@ +package v1alpha1 + +import ( + argocdv1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" + extv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + "k8s.io/apimachinery/pkg/runtime" +) + +// Converter helps to convert ArgoCD types to api types of this provider and vise-versa +// From & To shall both be defined for each type conversion, to prevent diverge from ArgoCD Types +// goverter:converter +// goverter:useZeroValueOnPointerInconsistency +// goverter:ignoreUnexported +// goverter:extend ExtV1JSONToRuntimeRawExtension +// goverter:struct:comment // +k8s:deepcopy-gen=false +// goverter:output:file ./zz_generated.conversion.go +// goverter:output:package github.com/crossplane-contrib/provider-argocd/apis/applicationsets/v1alpha1 +// +k8s:deepcopy-gen=false +type Converter interface { + + // goverter:ignore ServerRef + // goverter:ignore ServerSelector + // goverter:ignore NameRef + // goverter:ignore NameSelector + FromArgoDestination(in argocdv1alpha1.ApplicationDestination) ApplicationDestination + + ToArgoDestination(in ApplicationDestination) argocdv1alpha1.ApplicationDestination + + ToArgoApplicationSetSpec(in *ApplicationSetParameters) *argocdv1alpha1.ApplicationSetSpec + FromArgoApplicationSetSpec(in *argocdv1alpha1.ApplicationSetSpec) *ApplicationSetParameters + + FromArgoApplicationSetStatus(in *argocdv1alpha1.ApplicationSetStatus) *ArgoApplicationSetStatus + ToArgoApplicationSetStatus(in *ArgoApplicationSetStatus) *argocdv1alpha1.ApplicationSetStatus +} + +// ExtV1JSONToRuntimeRawExtension converts an extv1.JSON into a +// *runtime.RawExtension. +func ExtV1JSONToRuntimeRawExtension(in extv1.JSON) *runtime.RawExtension { + return &runtime.RawExtension{ + Raw: in.Raw, + } +} diff --git a/apis/applicationsets/v1alpha1/doc.go b/apis/applicationsets/v1alpha1/doc.go new file mode 100644 index 0000000..6cf940b --- /dev/null +++ b/apis/applicationsets/v1alpha1/doc.go @@ -0,0 +1,21 @@ +/* +Copyright 2022 The Crossplane Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package v1alpha1 contains the core resources of the argocd provider. +// +kubebuilder:object:generate=true +// +groupName=applicationsets.argocd.crossplane.io +// +versionName=v1alpha1 +package v1alpha1 diff --git a/apis/applicationsets/v1alpha1/register.go b/apis/applicationsets/v1alpha1/register.go new file mode 100644 index 0000000..18fabe3 --- /dev/null +++ b/apis/applicationsets/v1alpha1/register.go @@ -0,0 +1,50 @@ +/* +Copyright 2020 The Crossplane Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + "reflect" + + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + Group = "applicationsets.argocd.crossplane.io" + Version = "v1alpha1" +) + +var ( + // SchemeGroupVersion is group version used to register these objects + SchemeGroupVersion = schema.GroupVersion{Group: Group, Version: Version} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion} +) + +// ApplicationSet type metadata. +var ( + ApplicationSetKind = reflect.TypeOf(ApplicationSet{}).Name() + ApplicationSetGroupKind = schema.GroupKind{Group: Group, Kind: ApplicationSetKind}.String() + ApplicationSetKindAPIVersion = ApplicationSetKind + "." + SchemeGroupVersion.String() + ApplicationSetGroupVersionKind = SchemeGroupVersion.WithKind(ApplicationSetKind) +) + +func init() { + SchemeBuilder.Register(&ApplicationSet{}, &ApplicationSetList{}) +} diff --git a/apis/applicationsets/v1alpha1/status.go b/apis/applicationsets/v1alpha1/status.go new file mode 100644 index 0000000..6b33e59 --- /dev/null +++ b/apis/applicationsets/v1alpha1/status.go @@ -0,0 +1,46 @@ +package v1alpha1 + +import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + +// ArgoApplicationSetStatus are the observable fields of a ApplicationSet. +type ArgoApplicationSetStatus struct { + Conditions []ApplicationSetCondition `json:"conditions,omitempty" protobuf:"bytes,1,name=conditions"` + ApplicationStatus []ApplicationSetApplicationStatus `json:"applicationStatus,omitempty" protobuf:"bytes,2,name=applicationStatus"` +} + +// ApplicationSetCondition contains details about an applicationset condition, which is usually an error or warning +type ApplicationSetCondition struct { + // Type is an applicationset condition type + Type ApplicationSetConditionType `json:"type" protobuf:"bytes,1,opt,name=type"` + // Message contains human-readable message indicating details about condition + Message string `json:"message" protobuf:"bytes,2,opt,name=message"` + // LastTransitionTime is the time the condition was last observed + LastTransitionTime *metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,3,opt,name=lastTransitionTime"` + // True/False/Unknown + Status ApplicationSetConditionStatus `json:"status" protobuf:"bytes,4,opt,name=status"` + // Single word camelcase representing the reason for the status eg ErrorOccurred + Reason string `json:"reason" protobuf:"bytes,5,opt,name=reason"` +} + +// ApplicationSetApplicationStatus contains details about each Application managed by the ApplicationSet +type ApplicationSetApplicationStatus struct { + // Application contains the name of the Application resource + Application string `json:"application" protobuf:"bytes,1,opt,name=application"` + // LastTransitionTime is the time the status was last updated + LastTransitionTime *metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,2,opt,name=lastTransitionTime"` + // Message contains human-readable message indicating details about the status + Message string `json:"message" protobuf:"bytes,3,opt,name=message"` + // Status contains the AppSet's perceived status of the managed Application resource: (Waiting, Pending, Progressing, Healthy) + Status string `json:"status" protobuf:"bytes,4,opt,name=status"` + // Step tracks which step this Application should be updated in + Step string `json:"step" protobuf:"bytes,5,opt,name=step"` +} + +// ApplicationSetConditionStatus is a type which represents possible comparison results +type ApplicationSetConditionStatus string + +// ApplicationSetConditionType represents type of application condition. Type name has following convention: +// prefix "Error" means error condition +// prefix "Warning" means warning condition +// prefix "Info" means informational condition +type ApplicationSetConditionType string diff --git a/apis/applicationsets/v1alpha1/types.go b/apis/applicationsets/v1alpha1/types.go new file mode 100644 index 0000000..e24a903 --- /dev/null +++ b/apis/applicationsets/v1alpha1/types.go @@ -0,0 +1,602 @@ +/* +Copyright 2022 The Crossplane Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/intstr" + + xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +//go:generate go run github.com/crossplane/crossplane-tools/cmd/angryjet generate-methodsets ./... + +// ApplicationSetParameters are the configurable fields of a ApplicationSet. +type ApplicationSetParameters struct { + GoTemplate bool `json:"goTemplate,omitempty" protobuf:"bytes,1,name=goTemplate"` + Generators []ApplicationSetGenerator `json:"generators" protobuf:"bytes,2,name=generators"` + Template ApplicationSetTemplate `json:"template" protobuf:"bytes,3,name=template"` + SyncPolicy *ApplicationSetSyncPolicy `json:"syncPolicy,omitempty" protobuf:"bytes,4,name=syncPolicy"` + Strategy *ApplicationSetStrategy `json:"strategy,omitempty" protobuf:"bytes,5,opt,name=strategy"` + PreservedFields *ApplicationPreservedFields `json:"preservedFields,omitempty" protobuf:"bytes,6,opt,name=preservedFields"` + GoTemplateOptions []string `json:"goTemplateOptions,omitempty" protobuf:"bytes,7,opt,name=goTemplateOptions"` + // ApplyNestedSelectors enables selectors defined within the generators of two level-nested matrix or merge generators + ApplyNestedSelectors bool `json:"applyNestedSelectors,omitempty" protobuf:"bytes,8,name=applyNestedSelectors"` +} + +// ApplicationPreservedFields ApplicationSetObservation are the preseverable fields on an Application +type ApplicationPreservedFields struct { + Annotations []string `json:"annotations,omitempty" protobuf:"bytes,1,name=annotations"` +} + +// ApplicationSetStrategy configures how generated Applications are updated in sequence. +type ApplicationSetStrategy struct { + Type string `json:"type,omitempty" protobuf:"bytes,1,opt,name=type"` + RollingSync *ApplicationSetRolloutStrategy `json:"rollingSync,omitempty" protobuf:"bytes,2,opt,name=rollingSync"` + // RollingUpdate *ApplicationSetRolloutStrategy `json:"rollingUpdate,omitempty" protobuf:"bytes,3,opt,name=rollingUpdate"` +} + +// ApplicationSetRolloutStrategy define the rollout strategy for the ApplicationSet +type ApplicationSetRolloutStrategy struct { + Steps []ApplicationSetRolloutStep `json:"steps,omitempty" protobuf:"bytes,1,opt,name=steps"` +} + +// ApplicationSetRolloutStep define the rollout step for the ApplicationSet +type ApplicationSetRolloutStep struct { + MatchExpressions []ApplicationMatchExpression `json:"matchExpressions,omitempty" protobuf:"bytes,1,opt,name=matchExpressions"` + MaxUpdate *intstr.IntOrString `json:"maxUpdate,omitempty" protobuf:"bytes,2,opt,name=maxUpdate"` +} + +// ApplicationMatchExpression define expressions to match Applications +type ApplicationMatchExpression struct { + Key string `json:"key,omitempty" protobuf:"bytes,1,opt,name=key"` + Operator string `json:"operator,omitempty" protobuf:"bytes,2,opt,name=operator"` + Values []string `json:"values,omitempty" protobuf:"bytes,3,opt,name=values"` +} + +// ApplicationSetGenerator defines the generators for the ApplicationSet +type ApplicationSetGenerator struct { + List *ListGenerator `json:"list,omitempty" protobuf:"bytes,1,name=list"` + Clusters *ClusterGenerator `json:"clusters,omitempty" protobuf:"bytes,2,name=clusters"` + Git *GitGenerator `json:"git,omitempty" protobuf:"bytes,3,name=git"` + SCMProvider *SCMProviderGenerator `json:"scmProvider,omitempty" protobuf:"bytes,4,name=scmProvider"` + ClusterDecisionResource *DuckTypeGenerator `json:"clusterDecisionResource,omitempty" protobuf:"bytes,5,name=clusterDecisionResource"` + PullRequest *PullRequestGenerator `json:"pullRequest,omitempty" protobuf:"bytes,6,name=pullRequest"` + Matrix *MatrixGenerator `json:"matrix,omitempty" protobuf:"bytes,7,name=matrix"` + Merge *MergeGenerator `json:"merge,omitempty" protobuf:"bytes,8,name=merge"` + + // Selector allows to post-filter all generator. + Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,9,name=selector"` + + Plugin *PluginGenerator `json:"plugin,omitempty" protobuf:"bytes,10,name=plugin"` +} + +// ApplicationSetSyncPolicy configures how generated Applications will relate to their +// ApplicationSet. +type ApplicationSetSyncPolicy struct { + // PreserveResourcesOnDeletion will preserve resources on deletion. If PreserveResourcesOnDeletion is set to true, these Applications will not be deleted. + PreserveResourcesOnDeletion bool `json:"preserveResourcesOnDeletion,omitempty" protobuf:"bytes,1,name=syncPolicy"` + // ApplicationsSync represents the policy applied on the generated applications. Possible values are create-only, create-update, create-delete, sync + // +kubebuilder:validation:Optional + // +kubebuilder:validation:Enum=create-only;create-update;create-delete;sync + ApplicationsSync *ApplicationsSyncPolicy `json:"applicationsSync,omitempty" protobuf:"bytes,2,opt,name=applicationsSync,casttype=ApplicationsSyncPolicy"` +} + +// ApplicationsSyncPolicy representation +// "create-only" means applications are only created. If the generator's result contains update, applications won't be updated +// "create-update" means applications are only created/Updated. If the generator's result contains update, applications will be updated, but not deleted +// "create-delete" means applications are only created/deleted. If the generator's result contains update, applications won't be updated, if it results in deleted applications, the applications will be deleted +// "sync" means create/update/deleted. If the generator's result contains update, applications will be updated, if it results in deleted applications, the applications will be deleted +// If no ApplicationsSyncPolicy is defined, it defaults it to sync +type ApplicationsSyncPolicy string + +// MergeGenerator merges the output of two or more generators. Where the values for all specified merge keys are equal +// between two sets of generated parameters, the parameter sets will be merged with the parameters from the latter +// generator taking precedence. Parameter sets with merge keys not present in the base generator's params will be +// ignored. +// For example, if the first generator produced [{a: '1', b: '2'}, {c: '1', d: '1'}] and the second generator produced +// [{'a': 'override'}], the united parameters for merge keys = ['a'] would be +// [{a: 'override', b: '1'}, {c: '1', d: '1'}]. +// +// MergeGenerator supports template overriding. If a MergeGenerator is one of multiple top-level generators, its +// template will be merged with the top-level generator before the parameters are applied. +type MergeGenerator struct { + Generators []ApplicationSetNestedGenerator `json:"generators" protobuf:"bytes,1,name=generators"` + MergeKeys []string `json:"mergeKeys" protobuf:"bytes,2,name=mergeKeys"` + Template ApplicationSetTemplate `json:"template,omitempty" protobuf:"bytes,3,name=template"` +} + +// ListGenerator include items info +type ListGenerator struct { + Elements []apiextv1.JSON `json:"elements" protobuf:"bytes,1,name=elements"` + Template ApplicationSetTemplate `json:"template,omitempty" protobuf:"bytes,2,name=template"` + ElementsYaml string `json:"elementsYaml,omitempty" protobuf:"bytes,3,opt,name=elementsYaml"` +} + +// MatrixGenerator generates the cartesian product of two sets of parameters. The parameters are defined by two nested +// generators. +type MatrixGenerator struct { + Generators []ApplicationSetNestedGenerator `json:"generators" protobuf:"bytes,1,name=generators"` + Template ApplicationSetTemplate `json:"template,omitempty" protobuf:"bytes,2,name=template"` +} + +// ApplicationSetNestedGenerator represents a generator nested within a combination-type generator (MatrixGenerator or +// MergeGenerator). +type ApplicationSetNestedGenerator struct { + List *ListGenerator `json:"list,omitempty" protobuf:"bytes,1,name=list"` + Clusters *ClusterGenerator `json:"clusters,omitempty" protobuf:"bytes,2,name=clusters"` + Git *GitGenerator `json:"git,omitempty" protobuf:"bytes,3,name=git"` + SCMProvider *SCMProviderGenerator `json:"scmProvider,omitempty" protobuf:"bytes,4,name=scmProvider"` + ClusterDecisionResource *DuckTypeGenerator `json:"clusterDecisionResource,omitempty" protobuf:"bytes,5,name=clusterDecisionResource"` + PullRequest *PullRequestGenerator `json:"pullRequest,omitempty" protobuf:"bytes,6,name=pullRequest"` + + // Matrix should have the form of NestedMatrixGenerator + Matrix *apiextv1.JSON `json:"matrix,omitempty" protobuf:"bytes,7,name=matrix"` + + // Merge should have the form of NestedMergeGenerator + Merge *apiextv1.JSON `json:"merge,omitempty" protobuf:"bytes,8,name=merge"` + + // Selector allows to post-filter all generator. + Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,9,name=selector"` + + Plugin *PluginGenerator `json:"plugin,omitempty" protobuf:"bytes,10,name=plugin"` +} + +// ApplicationSetNestedGenerators represents a generator nested within a combination-type generator +type ApplicationSetNestedGenerators []ApplicationSetNestedGenerator + +// NestedMatrixGenerator is a MatrixGenerator nested under another combination-type generator (MatrixGenerator or +// MergeGenerator). NestedMatrixGenerator does not have an override template, because template overriding has no meaning +// within the constituent generators of combination-type generators. +// +// NOTE: Nested matrix generator is not included directly in the CRD struct, instead it is included +// as a generic 'apiextv1.JSON' object, and then marshalled into a NestedMatrixGenerator +// when processed. +type NestedMatrixGenerator struct { + Generators ApplicationSetTerminalGenerators `json:"generators" protobuf:"bytes,1,name=generators"` +} + +// ApplicationSetTerminalGenerators represents a generator nested within a nested generator +type ApplicationSetTerminalGenerators []ApplicationSetTerminalGenerator + +// ApplicationSetTerminalGenerator represents a generator nested within a nested generator (for example, a list within +// a merge within a matrix). A generator at this level may not be a combination-type generator (MatrixGenerator or +// MergeGenerator). ApplicationSet enforces this nesting depth limit because CRDs do not support recursive types. +// https://github.com/kubernetes-sigs/controller-tools/issues/477 +type ApplicationSetTerminalGenerator struct { + List *ListGenerator `json:"list,omitempty" protobuf:"bytes,1,name=list"` + Clusters *ClusterGenerator `json:"clusters,omitempty" protobuf:"bytes,2,name=clusters"` + Git *GitGenerator `json:"git,omitempty" protobuf:"bytes,3,name=git"` + SCMProvider *SCMProviderGenerator `json:"scmProvider,omitempty" protobuf:"bytes,4,name=scmProvider"` + ClusterDecisionResource *DuckTypeGenerator `json:"clusterDecisionResource,omitempty" protobuf:"bytes,5,name=clusterDecisionResource"` + PullRequest *PullRequestGenerator `json:"pullRequest,omitempty" protobuf:"bytes,6,name=pullRequest"` + Plugin *PluginGenerator `json:"plugin,omitempty" protobuf:"bytes,7,name=pullRequest"` + + // Selector allows to post-filter all generator. + Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,8,name=selector"` +} + +// ClusterGenerator defines a generator to match against clusters registered with ArgoCD. +type ClusterGenerator struct { + // Selector defines a label selector to match against all clusters registered with ArgoCD. + // Clusters today are stored as Kubernetes Secrets, thus the Secret labels will be used + // for matching the selector. + Selector metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,1,name=selector"` + Template ApplicationSetTemplate `json:"template,omitempty" protobuf:"bytes,2,name=template"` + + // Values contains key/value pairs which are passed directly as parameters to the template + Values map[string]string `json:"values,omitempty" protobuf:"bytes,3,name=values"` +} + +// DuckTypeGenerator defines a generator to match against clusters registered with ArgoCD. +type DuckTypeGenerator struct { + // ConfigMapRef is a ConfigMap with the duck type definitions needed to retrieve the data + // this includes apiVersion(group/version), kind, matchKey and validation settings + // Name is the resource name of the kind, group and version, defined in the ConfigMapRef + // RequeueAfterSeconds is how long before the duckType will be rechecked for a change + ConfigMapRef string `json:"configMapRef" protobuf:"bytes,1,name=configMapRef"` + Name string `json:"name,omitempty" protobuf:"bytes,2,name=name"` + RequeueAfterSeconds *int64 `json:"requeueAfterSeconds,omitempty" protobuf:"bytes,3,name=requeueAfterSeconds"` + LabelSelector metav1.LabelSelector `json:"labelSelector,omitempty" protobuf:"bytes,4,name=labelSelector"` + + Template ApplicationSetTemplate `json:"template,omitempty" protobuf:"bytes,5,name=template"` + // Values contains key/value pairs which are passed directly as parameters to the template + Values map[string]string `json:"values,omitempty" protobuf:"bytes,6,name=values"` +} + +// GitGenerator defines a generator that scrapes a Git repo to find candidate resources. +type GitGenerator struct { + RepoURL string `json:"repoURL" protobuf:"bytes,1,name=repoURL"` + Directories []GitDirectoryGeneratorItem `json:"directories,omitempty" protobuf:"bytes,2,name=directories"` + Files []GitFileGeneratorItem `json:"files,omitempty" protobuf:"bytes,3,name=files"` + Revision string `json:"revision" protobuf:"bytes,4,name=revision"` + RequeueAfterSeconds *int64 `json:"requeueAfterSeconds,omitempty" protobuf:"bytes,5,name=requeueAfterSeconds"` + Template ApplicationSetTemplate `json:"template,omitempty" protobuf:"bytes,6,name=template"` + PathParamPrefix string `json:"pathParamPrefix,omitempty" protobuf:"bytes,7,name=pathParamPrefix"` + + // Values contains key/value pairs which are passed directly as parameters to the template + Values map[string]string `json:"values,omitempty" protobuf:"bytes,8,name=values"` +} + +// GitDirectoryGeneratorItem defines a directory to scan for resources. +type GitDirectoryGeneratorItem struct { + Path string `json:"path" protobuf:"bytes,1,name=path"` + Exclude bool `json:"exclude,omitempty" protobuf:"bytes,2,name=exclude"` +} + +// GitFileGeneratorItem defines a file to scan for resources. +type GitFileGeneratorItem struct { + Path string `json:"path" protobuf:"bytes,1,name=path"` +} + +// SCMProviderGenerator defines a generator that scrapes a SCMaaS API to find candidate repos. +type SCMProviderGenerator struct { + // Which provider to use and config for it. + Github *SCMProviderGeneratorGithub `json:"github,omitempty" protobuf:"bytes,1,opt,name=github"` + Gitlab *SCMProviderGeneratorGitlab `json:"gitlab,omitempty" protobuf:"bytes,2,opt,name=gitlab"` + Bitbucket *SCMProviderGeneratorBitbucket `json:"bitbucket,omitempty" protobuf:"bytes,3,opt,name=bitbucket"` + BitbucketServer *SCMProviderGeneratorBitbucketServer `json:"bitbucketServer,omitempty" protobuf:"bytes,4,opt,name=bitbucketServer"` + Gitea *SCMProviderGeneratorGitea `json:"gitea,omitempty" protobuf:"bytes,5,opt,name=gitea"` + AzureDevOps *SCMProviderGeneratorAzureDevOps `json:"azureDevOps,omitempty" protobuf:"bytes,6,opt,name=azureDevOps"` + // Filters for which repos should be considered. + Filters []SCMProviderGeneratorFilter `json:"filters,omitempty" protobuf:"bytes,7,rep,name=filters"` + // Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers + // necessarily support all protocols. + CloneProtocol string `json:"cloneProtocol,omitempty" protobuf:"bytes,8,opt,name=cloneProtocol"` + // Standard parameters. + RequeueAfterSeconds *int64 `json:"requeueAfterSeconds,omitempty" protobuf:"varint,9,opt,name=requeueAfterSeconds"` + Template ApplicationSetTemplate `json:"template,omitempty" protobuf:"bytes,10,opt,name=template"` + + // Values contains key/value pairs which are passed directly as parameters to the template + Values map[string]string `json:"values,omitempty" protobuf:"bytes,11,name=values"` + AWSCodeCommit *SCMProviderGeneratorAWSCodeCommit `json:"awsCodeCommit,omitempty" protobuf:"bytes,12,opt,name=awsCodeCommit"` +} + +// SCMProviderGeneratorGitea defines a connection info specific to Gitea. +type SCMProviderGeneratorGitea struct { + // Gitea organization or user to scan. Required. + Owner string `json:"owner" protobuf:"bytes,1,opt,name=owner"` + // The Gitea URL to talk to. For example https://gitea.mydomain.com/. + API string `json:"api" protobuf:"bytes,2,opt,name=api"` + // Authentication token reference. + TokenRef *SecretRef `json:"tokenRef,omitempty" protobuf:"bytes,3,opt,name=tokenRef"` + // Scan all branches instead of just the default branch. + AllBranches bool `json:"allBranches,omitempty" protobuf:"varint,4,opt,name=allBranches"` + // Allow self-signed TLS / Certificates; default: false + Insecure bool `json:"insecure,omitempty" protobuf:"varint,5,opt,name=insecure"` +} + +// SCMProviderGeneratorGithub defines connection info specific to GitHub. +type SCMProviderGeneratorGithub struct { + // GitHub org to scan. Required. + Organization string `json:"organization" protobuf:"bytes,1,opt,name=organization"` + // The GitHub API URL to talk to. If blank, use https://api.github.com/. + API string `json:"api,omitempty" protobuf:"bytes,2,opt,name=api"` + // Authentication token reference. + TokenRef *SecretRef `json:"tokenRef,omitempty" protobuf:"bytes,3,opt,name=tokenRef"` + // AppSecretName is a reference to a GitHub App repo-creds secret. + AppSecretName string `json:"appSecretName,omitempty" protobuf:"bytes,4,opt,name=appSecretName"` + // Scan all branches instead of just the default branch. + AllBranches bool `json:"allBranches,omitempty" protobuf:"varint,5,opt,name=allBranches"` +} + +// SCMProviderGeneratorGitlab defines connection info specific to Gitlab. +type SCMProviderGeneratorGitlab struct { + // Gitlab group to scan. Required. You can use either the project id (recommended) or the full namespaced path. + Group string `json:"group" protobuf:"bytes,1,opt,name=group"` + // Recurse through subgroups (true) or scan only the base group (false). Defaults to "false" + IncludeSubgroups bool `json:"includeSubgroups,omitempty" protobuf:"varint,2,opt,name=includeSubgroups"` + // The Gitlab API URL to talk to. + API string `json:"api,omitempty" protobuf:"bytes,3,opt,name=api"` + // Authentication token reference. + TokenRef *SecretRef `json:"tokenRef,omitempty" protobuf:"bytes,4,opt,name=tokenRef"` + // Scan all branches instead of just the default branch. + AllBranches bool `json:"allBranches,omitempty" protobuf:"varint,5,opt,name=allBranches"` + // Skips validating the SCM provider's TLS certificate - useful for self-signed certificates.; default: false + Insecure bool `json:"insecure,omitempty" protobuf:"varint,6,opt,name=insecure"` +} + +// SCMProviderGeneratorBitbucket defines connection info specific to Bitbucket Cloud (API version 2). +type SCMProviderGeneratorBitbucket struct { + // Bitbucket workspace to scan. Required. + Owner string `json:"owner" protobuf:"bytes,1,opt,name=owner"` + // Bitbucket user to use when authenticating. Should have a "member" role to be able to read all repositories and branches. Required + User string `json:"user" protobuf:"bytes,2,opt,name=user"` + // The app password to use for the user. Required. See: https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/ + AppPasswordRef *SecretRef `json:"appPasswordRef" protobuf:"bytes,3,opt,name=appPasswordRef"` + // Scan all branches instead of just the main branch. + AllBranches bool `json:"allBranches,omitempty" protobuf:"varint,4,opt,name=allBranches"` +} + +// SCMProviderGeneratorBitbucketServer defines connection info specific to Bitbucket Server. +type SCMProviderGeneratorBitbucketServer struct { + // Project to scan. Required. + Project string `json:"project" protobuf:"bytes,1,opt,name=project"` + // The Bitbucket Server REST API URL to talk to. Required. + API string `json:"api" protobuf:"bytes,2,opt,name=api"` + // Credentials for Basic auth + BasicAuth *BasicAuthBitbucketServer `json:"basicAuth,omitempty" protobuf:"bytes,3,opt,name=basicAuth"` + // Scan all branches instead of just the default branch. + AllBranches bool `json:"allBranches,omitempty" protobuf:"varint,4,opt,name=allBranches"` +} + +// SCMProviderGeneratorAzureDevOps defines connection info specific to Azure DevOps. +type SCMProviderGeneratorAzureDevOps struct { + // Azure Devops organization. Required. E.g. "my-organization". + Organization string `json:"organization" protobuf:"bytes,5,opt,name=organization"` + // The URL to Azure DevOps. If blank, use https://dev.azure.com. + API string `json:"api,omitempty" protobuf:"bytes,6,opt,name=api"` + // Azure Devops team project. Required. E.g. "my-team". + TeamProject string `json:"teamProject" protobuf:"bytes,7,opt,name=teamProject"` + // The Personal Access Token (PAT) to use when connecting. Required. + AccessTokenRef *SecretRef `json:"accessTokenRef" protobuf:"bytes,8,opt,name=accessTokenRef"` + // Scan all branches instead of just the default branch. + AllBranches bool `json:"allBranches,omitempty" protobuf:"varint,9,opt,name=allBranches"` +} + +// TagFilter defines tags to filter from +type TagFilter struct { + Key string `json:"key" protobuf:"bytes,1,opt,name=key"` + Value string `json:"value,omitempty" protobuf:"bytes,2,opt,name=value"` +} + +// SCMProviderGeneratorAWSCodeCommit defines connection info specific to AWS CodeCommit. +type SCMProviderGeneratorAWSCodeCommit struct { + // TagFilters provides the tag filter(s) for repo discovery + TagFilters []*TagFilter `json:"tagFilters,omitempty" protobuf:"bytes,1,opt,name=tagFilters"` + // Role provides the AWS IAM role to assume, for cross-account repo discovery + // if not provided, AppSet controller will use its pod/node identity to discover. + Role string `json:"role,omitempty" protobuf:"bytes,2,opt,name=role"` + // Region provides the AWS region to discover repos. + // if not provided, AppSet controller will infer the current region from environment. + Region string `json:"region,omitempty" protobuf:"bytes,3,opt,name=region"` + // Scan all branches instead of just the default branch. + AllBranches bool `json:"allBranches,omitempty" protobuf:"varint,4,opt,name=allBranches"` +} + +// SCMProviderGeneratorFilter is a single repository filter. +// If multiple filter types are set on a single struct, they will be AND'd together. All filters must +// pass for a repo to be included. +type SCMProviderGeneratorFilter struct { + // A regex for repo names. + RepositoryMatch *string `json:"repositoryMatch,omitempty" protobuf:"bytes,1,opt,name=repositoryMatch"` + // An array of paths, all of which must exist. + PathsExist []string `json:"pathsExist,omitempty" protobuf:"bytes,2,rep,name=pathsExist"` + // An array of paths, all of which must not exist. + PathsDoNotExist []string `json:"pathsDoNotExist,omitempty" protobuf:"bytes,3,rep,name=pathsDoNotExist"` + // A regex which must match at least one label. + LabelMatch *string `json:"labelMatch,omitempty" protobuf:"bytes,4,opt,name=labelMatch"` + // A regex which must match the branch name. + BranchMatch *string `json:"branchMatch,omitempty" protobuf:"bytes,5,opt,name=branchMatch"` +} + +// PullRequestGenerator defines a generator that scrapes a PullRequest API to find candidate pull requests. +type PullRequestGenerator struct { + // Which provider to use and config for it. + Github *PullRequestGeneratorGithub `json:"github,omitempty" protobuf:"bytes,1,opt,name=github"` + GitLab *PullRequestGeneratorGitLab `json:"gitlab,omitempty" protobuf:"bytes,2,opt,name=gitlab"` + Gitea *PullRequestGeneratorGitea `json:"gitea,omitempty" protobuf:"bytes,3,opt,name=gitea"` + BitbucketServer *PullRequestGeneratorBitbucketServer `json:"bitbucketServer,omitempty" protobuf:"bytes,4,opt,name=bitbucketServer"` + // Filters for which pull requests should be considered. + Filters []PullRequestGeneratorFilter `json:"filters,omitempty" protobuf:"bytes,5,rep,name=filters"` + // Standard parameters. + RequeueAfterSeconds *int64 `json:"requeueAfterSeconds,omitempty" protobuf:"varint,6,opt,name=requeueAfterSeconds"` + Template ApplicationSetTemplate `json:"template,omitempty" protobuf:"bytes,7,opt,name=template"` + Bitbucket *PullRequestGeneratorBitbucket `json:"bitbucket,omitempty" protobuf:"bytes,8,opt,name=bitbucket"` + // Additional provider to use and config for it. + AzureDevOps *PullRequestGeneratorAzureDevOps `json:"azuredevops,omitempty" protobuf:"bytes,9,opt,name=azuredevops"` +} + +// PullRequestGeneratorGitea defines connection info specific to Gitea. +type PullRequestGeneratorGitea struct { + // Gitea org or user to scan. Required. + Owner string `json:"owner" protobuf:"bytes,1,opt,name=owner"` + // Gitea repo name to scan. Required. + Repo string `json:"repo" protobuf:"bytes,2,opt,name=repo"` + // The Gitea API URL to talk to. Required + API string `json:"api" protobuf:"bytes,3,opt,name=api"` + // Authentication token reference. + TokenRef *SecretRef `json:"tokenRef,omitempty" protobuf:"bytes,4,opt,name=tokenRef"` + // Allow insecure tls, for self-signed certificates; default: false. + Insecure bool `json:"insecure,omitempty" protobuf:"varint,5,opt,name=insecure"` +} + +// PullRequestGeneratorAzureDevOps defines connection info specific to AzureDevOps. +type PullRequestGeneratorAzureDevOps struct { + // Azure DevOps org to scan. Required. + Organization string `json:"organization" protobuf:"bytes,1,opt,name=organization"` + // Azure DevOps project name to scan. Required. + Project string `json:"project" protobuf:"bytes,2,opt,name=project"` + // Azure DevOps repo name to scan. Required. + Repo string `json:"repo" protobuf:"bytes,3,opt,name=repo"` + // The Azure DevOps API URL to talk to. If blank, use https://dev.azure.com/. + API string `json:"api,omitempty" protobuf:"bytes,4,opt,name=api"` + // Authentication token reference. + TokenRef *SecretRef `json:"tokenRef,omitempty" protobuf:"bytes,5,opt,name=tokenRef"` + // Labels is used to filter the PRs that you want to target + Labels []string `json:"labels,omitempty" protobuf:"bytes,6,rep,name=labels"` +} + +// PullRequestGeneratorGithub defines connection info specific to GitHub. +type PullRequestGeneratorGithub struct { + // GitHub org or user to scan. Required. + Owner string `json:"owner" protobuf:"bytes,1,opt,name=owner"` + // GitHub repo name to scan. Required. + Repo string `json:"repo" protobuf:"bytes,2,opt,name=repo"` + // The GitHub API URL to talk to. If blank, use https://api.github.com/. + API string `json:"api,omitempty" protobuf:"bytes,3,opt,name=api"` + // Authentication token reference. + TokenRef *SecretRef `json:"tokenRef,omitempty" protobuf:"bytes,4,opt,name=tokenRef"` + // AppSecretName is a reference to a GitHub App repo-creds secret with permission to access pull requests. + AppSecretName string `json:"appSecretName,omitempty" protobuf:"bytes,5,opt,name=appSecretName"` + // Labels is used to filter the PRs that you want to target + Labels []string `json:"labels,omitempty" protobuf:"bytes,6,rep,name=labels"` +} + +// PullRequestGeneratorGitLab defines connection info specific to GitLab. +type PullRequestGeneratorGitLab struct { + // GitLab project to scan. Required. + Project string `json:"project" protobuf:"bytes,1,opt,name=project"` + // The GitLab API URL to talk to. If blank, uses https://gitlab.com/. + API string `json:"api,omitempty" protobuf:"bytes,2,opt,name=api"` + // Authentication token reference. + TokenRef *SecretRef `json:"tokenRef,omitempty" protobuf:"bytes,3,opt,name=tokenRef"` + // Labels is used to filter the MRs that you want to target + Labels []string `json:"labels,omitempty" protobuf:"bytes,4,rep,name=labels"` + // PullRequestState is an additional MRs filter to get only those with a certain state. Default: "" (all states) + PullRequestState string `json:"pullRequestState,omitempty" protobuf:"bytes,5,rep,name=pullRequestState"` + // Skips validating the SCM provider's TLS certificate - useful for self-signed certificates.; default: false + Insecure bool `json:"insecure,omitempty" protobuf:"varint,6,opt,name=insecure"` +} + +// PullRequestGeneratorBitbucketServer defines connection info specific to BitbucketServer. +type PullRequestGeneratorBitbucketServer struct { + // Project to scan. Required. + Project string `json:"project" protobuf:"bytes,1,opt,name=project"` + // Repo name to scan. Required. + Repo string `json:"repo" protobuf:"bytes,2,opt,name=repo"` + // The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest Required. + API string `json:"api" protobuf:"bytes,3,opt,name=api"` + // Credentials for Basic auth + BasicAuth *BasicAuthBitbucketServer `json:"basicAuth,omitempty" protobuf:"bytes,4,opt,name=basicAuth"` +} + +// PullRequestGeneratorBitbucket defines connection info specific to Bitbucket. +type PullRequestGeneratorBitbucket struct { + // Workspace to scan. Required. + Owner string `json:"owner" protobuf:"bytes,1,opt,name=owner"` + // Repo name to scan. Required. + Repo string `json:"repo" protobuf:"bytes,2,opt,name=repo"` + // The Bitbucket REST API URL to talk to. If blank, uses https://api.bitbucket.org/2.0. + API string `json:"api,omitempty" protobuf:"bytes,3,opt,name=api"` + // Credentials for Basic auth + BasicAuth *BasicAuthBitbucketServer `json:"basicAuth,omitempty" protobuf:"bytes,4,opt,name=basicAuth"` + // Credentials for AppToken (Bearer auth) + BearerToken *BearerTokenBitbucketCloud `json:"bearerToken,omitempty" protobuf:"bytes,5,opt,name=bearerToken"` +} + +// BearerTokenBitbucketCloud defines the Bearer token for BitBucket AppToken auth. +type BearerTokenBitbucketCloud struct { + // Password (or personal access token) reference. + TokenRef *SecretRef `json:"tokenRef" protobuf:"bytes,1,opt,name=tokenRef"` +} + +// BasicAuthBitbucketServer defines the username/(password or personal access token) for Basic auth. +type BasicAuthBitbucketServer struct { + // Username for Basic auth + Username string `json:"username" protobuf:"bytes,1,opt,name=username"` + // Password (or personal access token) reference. + PasswordRef *SecretRef `json:"passwordRef" protobuf:"bytes,2,opt,name=passwordRef"` +} + +// PullRequestGeneratorFilter is a single pull request filter. +// If multiple filter types are set on a single struct, they will be AND'd together. All filters must +// pass for a pull request to be included. +type PullRequestGeneratorFilter struct { + BranchMatch *string `json:"branchMatch,omitempty" protobuf:"bytes,1,opt,name=branchMatch"` + TargetBranchMatch *string `json:"targetBranchMatch,omitempty" protobuf:"bytes,2,opt,name=targetBranchMatch"` +} + +// SecretRef is a utility struct for a reference to a secret key. +type SecretRef struct { + SecretName string `json:"secretName" protobuf:"bytes,1,opt,name=secretName"` + Key string `json:"key" protobuf:"bytes,2,opt,name=key"` +} + +// PluginConfigMapRef defines a reference to a ConfigMap containing a plugin. +type PluginConfigMapRef struct { + // Name of the ConfigMap + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` +} + +// PluginParameters defines the parameters to pass to a plugin. +type PluginParameters map[string]apiextv1.JSON + +// PluginInput defines the input to a plugin. +type PluginInput struct { + // Parameters contains the information to pass to the plugin. It is a map. The keys must be strings, and the + // values can be any type. + Parameters PluginParameters `json:"parameters,omitempty" protobuf:"bytes,1,name=parameters"` +} + +// PluginGenerator defines connection info specific to Plugin. +type PluginGenerator struct { + ConfigMapRef PluginConfigMapRef `json:"configMapRef" protobuf:"bytes,1,name=configMapRef"` + Input PluginInput `json:"input,omitempty" protobuf:"bytes,2,name=input"` + // RequeueAfterSeconds determines how long the ApplicationSet controller will wait before reconciling the ApplicationSet again. + RequeueAfterSeconds *int64 `json:"requeueAfterSeconds,omitempty" protobuf:"varint,3,opt,name=requeueAfterSeconds"` + Template ApplicationSetTemplate `json:"template,omitempty" protobuf:"bytes,4,name=template"` + + // Values contains key/value pairs which are passed directly as parameters to the template. These values will not be + // sent as parameters to the plugin. + Values map[string]string `json:"values,omitempty" protobuf:"bytes,5,name=values"` +} + +// ApplicationSetTemplate represents argocd ApplicationSpec +type ApplicationSetTemplate struct { + ApplicationSetTemplateMeta `json:"metadata" protobuf:"bytes,1,name=metadata"` + Spec ApplicationSpec `json:"spec" protobuf:"bytes,2,name=spec"` +} + +// ApplicationSetTemplateMeta represents the Argo CD application fields that may +// be used for Applications generated from the ApplicationSet (based on metav1.ObjectMeta) +type ApplicationSetTemplateMeta struct { + Name string `json:"name,omitempty" protobuf:"bytes,1,name=name"` + Namespace string `json:"namespace,omitempty" protobuf:"bytes,2,name=namespace"` + Labels map[string]string `json:"labels,omitempty" protobuf:"bytes,3,name=labels"` + Annotations map[string]string `json:"annotations,omitempty" protobuf:"bytes,4,name=annotations"` + Finalizers []string `json:"finalizers,omitempty" protobuf:"bytes,5,name=finalizers"` +} + +// A ApplicationSetSpec defines the desired state of a ApplicationSet. +type ApplicationSetSpec struct { + xpv1.ResourceSpec `json:",inline"` + ForProvider ApplicationSetParameters `json:"forProvider"` +} + +// A ApplicationSetStatus represents the observed state of a ApplicationSet. +type ApplicationSetStatus struct { + xpv1.ResourceStatus `json:",inline"` + AtProvider ArgoApplicationSetStatus `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// A ApplicationSet is an example API type. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,argocd} +type ApplicationSet struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec ApplicationSetSpec `json:"spec"` + Status ApplicationSetStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// ApplicationSetList contains a list of ApplicationSet +type ApplicationSetList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ApplicationSet `json:"items"` +} diff --git a/apis/applicationsets/v1alpha1/zz_generated.conversion.go b/apis/applicationsets/v1alpha1/zz_generated.conversion.go new file mode 100755 index 0000000..45f8b8a --- /dev/null +++ b/apis/applicationsets/v1alpha1/zz_generated.conversion.go @@ -0,0 +1,2700 @@ +// Code generated by github.com/jmattheis/goverter, DO NOT EDIT. +//go:build !ignore_autogenerated + +package v1alpha1 + +import ( + v1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" + v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + v11 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + intstr "k8s.io/apimachinery/pkg/util/intstr" + "time" +) + +// +k8s:deepcopy-gen=false +type ConverterImpl struct{} + +func (c *ConverterImpl) FromArgoApplicationSetSpec(source *v1alpha1.ApplicationSetSpec) *ApplicationSetParameters { + var pV1alpha1ApplicationSetParameters *ApplicationSetParameters + if source != nil { + var v1alpha1ApplicationSetParameters ApplicationSetParameters + v1alpha1ApplicationSetParameters.GoTemplate = (*source).GoTemplate + var v1alpha1ApplicationSetGeneratorList []ApplicationSetGenerator + if (*source).Generators != nil { + v1alpha1ApplicationSetGeneratorList = make([]ApplicationSetGenerator, len((*source).Generators)) + for i := 0; i < len((*source).Generators); i++ { + v1alpha1ApplicationSetGeneratorList[i] = c.v1alpha1ApplicationSetGeneratorToV1alpha1ApplicationSetGenerator((*source).Generators[i]) + } + } + v1alpha1ApplicationSetParameters.Generators = v1alpha1ApplicationSetGeneratorList + v1alpha1ApplicationSetParameters.Template = c.v1alpha1ApplicationSetTemplateToV1alpha1ApplicationSetTemplate((*source).Template) + v1alpha1ApplicationSetParameters.SyncPolicy = c.pV1alpha1ApplicationSetSyncPolicyToPV1alpha1ApplicationSetSyncPolicy((*source).SyncPolicy) + v1alpha1ApplicationSetParameters.Strategy = c.pV1alpha1ApplicationSetStrategyToPV1alpha1ApplicationSetStrategy((*source).Strategy) + v1alpha1ApplicationSetParameters.PreservedFields = c.pV1alpha1ApplicationPreservedFieldsToPV1alpha1ApplicationPreservedFields((*source).PreservedFields) + var stringList []string + if (*source).GoTemplateOptions != nil { + stringList = make([]string, len((*source).GoTemplateOptions)) + for j := 0; j < len((*source).GoTemplateOptions); j++ { + stringList[j] = (*source).GoTemplateOptions[j] + } + } + v1alpha1ApplicationSetParameters.GoTemplateOptions = stringList + v1alpha1ApplicationSetParameters.ApplyNestedSelectors = (*source).ApplyNestedSelectors + pV1alpha1ApplicationSetParameters = &v1alpha1ApplicationSetParameters + } + return pV1alpha1ApplicationSetParameters +} +func (c *ConverterImpl) FromArgoApplicationSetStatus(source *v1alpha1.ApplicationSetStatus) *ArgoApplicationSetStatus { + var pV1alpha1ArgoApplicationSetStatus *ArgoApplicationSetStatus + if source != nil { + var v1alpha1ArgoApplicationSetStatus ArgoApplicationSetStatus + var v1alpha1ApplicationSetConditionList []ApplicationSetCondition + if (*source).Conditions != nil { + v1alpha1ApplicationSetConditionList = make([]ApplicationSetCondition, len((*source).Conditions)) + for i := 0; i < len((*source).Conditions); i++ { + v1alpha1ApplicationSetConditionList[i] = c.v1alpha1ApplicationSetConditionToV1alpha1ApplicationSetCondition((*source).Conditions[i]) + } + } + v1alpha1ArgoApplicationSetStatus.Conditions = v1alpha1ApplicationSetConditionList + var v1alpha1ApplicationSetApplicationStatusList []ApplicationSetApplicationStatus + if (*source).ApplicationStatus != nil { + v1alpha1ApplicationSetApplicationStatusList = make([]ApplicationSetApplicationStatus, len((*source).ApplicationStatus)) + for j := 0; j < len((*source).ApplicationStatus); j++ { + v1alpha1ApplicationSetApplicationStatusList[j] = c.v1alpha1ApplicationSetApplicationStatusToV1alpha1ApplicationSetApplicationStatus((*source).ApplicationStatus[j]) + } + } + v1alpha1ArgoApplicationSetStatus.ApplicationStatus = v1alpha1ApplicationSetApplicationStatusList + pV1alpha1ArgoApplicationSetStatus = &v1alpha1ArgoApplicationSetStatus + } + return pV1alpha1ArgoApplicationSetStatus +} +func (c *ConverterImpl) FromArgoDestination(source v1alpha1.ApplicationDestination) ApplicationDestination { + var v1alpha1ApplicationDestination ApplicationDestination + pString := source.Server + v1alpha1ApplicationDestination.Server = &pString + pString2 := source.Namespace + v1alpha1ApplicationDestination.Namespace = &pString2 + pString3 := source.Name + v1alpha1ApplicationDestination.Name = &pString3 + return v1alpha1ApplicationDestination +} +func (c *ConverterImpl) ToArgoApplicationSetSpec(source *ApplicationSetParameters) *v1alpha1.ApplicationSetSpec { + var pV1alpha1ApplicationSetSpec *v1alpha1.ApplicationSetSpec + if source != nil { + var v1alpha1ApplicationSetSpec v1alpha1.ApplicationSetSpec + v1alpha1ApplicationSetSpec.GoTemplate = (*source).GoTemplate + var v1alpha1ApplicationSetGeneratorList []v1alpha1.ApplicationSetGenerator + if (*source).Generators != nil { + v1alpha1ApplicationSetGeneratorList = make([]v1alpha1.ApplicationSetGenerator, len((*source).Generators)) + for i := 0; i < len((*source).Generators); i++ { + v1alpha1ApplicationSetGeneratorList[i] = c.v1alpha1ApplicationSetGeneratorToV1alpha1ApplicationSetGenerator2((*source).Generators[i]) + } + } + v1alpha1ApplicationSetSpec.Generators = v1alpha1ApplicationSetGeneratorList + v1alpha1ApplicationSetSpec.Template = c.v1alpha1ApplicationSetTemplateToV1alpha1ApplicationSetTemplate2((*source).Template) + v1alpha1ApplicationSetSpec.SyncPolicy = c.pV1alpha1ApplicationSetSyncPolicyToPV1alpha1ApplicationSetSyncPolicy2((*source).SyncPolicy) + v1alpha1ApplicationSetSpec.Strategy = c.pV1alpha1ApplicationSetStrategyToPV1alpha1ApplicationSetStrategy2((*source).Strategy) + v1alpha1ApplicationSetSpec.PreservedFields = c.pV1alpha1ApplicationPreservedFieldsToPV1alpha1ApplicationPreservedFields2((*source).PreservedFields) + var stringList []string + if (*source).GoTemplateOptions != nil { + stringList = make([]string, len((*source).GoTemplateOptions)) + for j := 0; j < len((*source).GoTemplateOptions); j++ { + stringList[j] = (*source).GoTemplateOptions[j] + } + } + v1alpha1ApplicationSetSpec.GoTemplateOptions = stringList + v1alpha1ApplicationSetSpec.ApplyNestedSelectors = (*source).ApplyNestedSelectors + pV1alpha1ApplicationSetSpec = &v1alpha1ApplicationSetSpec + } + return pV1alpha1ApplicationSetSpec +} +func (c *ConverterImpl) ToArgoApplicationSetStatus(source *ArgoApplicationSetStatus) *v1alpha1.ApplicationSetStatus { + var pV1alpha1ApplicationSetStatus *v1alpha1.ApplicationSetStatus + if source != nil { + var v1alpha1ApplicationSetStatus v1alpha1.ApplicationSetStatus + var v1alpha1ApplicationSetConditionList []v1alpha1.ApplicationSetCondition + if (*source).Conditions != nil { + v1alpha1ApplicationSetConditionList = make([]v1alpha1.ApplicationSetCondition, len((*source).Conditions)) + for i := 0; i < len((*source).Conditions); i++ { + v1alpha1ApplicationSetConditionList[i] = c.v1alpha1ApplicationSetConditionToV1alpha1ApplicationSetCondition2((*source).Conditions[i]) + } + } + v1alpha1ApplicationSetStatus.Conditions = v1alpha1ApplicationSetConditionList + var v1alpha1ApplicationSetApplicationStatusList []v1alpha1.ApplicationSetApplicationStatus + if (*source).ApplicationStatus != nil { + v1alpha1ApplicationSetApplicationStatusList = make([]v1alpha1.ApplicationSetApplicationStatus, len((*source).ApplicationStatus)) + for j := 0; j < len((*source).ApplicationStatus); j++ { + v1alpha1ApplicationSetApplicationStatusList[j] = c.v1alpha1ApplicationSetApplicationStatusToV1alpha1ApplicationSetApplicationStatus2((*source).ApplicationStatus[j]) + } + } + v1alpha1ApplicationSetStatus.ApplicationStatus = v1alpha1ApplicationSetApplicationStatusList + pV1alpha1ApplicationSetStatus = &v1alpha1ApplicationSetStatus + } + return pV1alpha1ApplicationSetStatus +} +func (c *ConverterImpl) ToArgoDestination(source ApplicationDestination) v1alpha1.ApplicationDestination { + var v1alpha1ApplicationDestination v1alpha1.ApplicationDestination + var xstring string + if source.Server != nil { + xstring = *source.Server + } + v1alpha1ApplicationDestination.Server = xstring + var xstring2 string + if source.Namespace != nil { + xstring2 = *source.Namespace + } + v1alpha1ApplicationDestination.Namespace = xstring2 + var xstring3 string + if source.Name != nil { + xstring3 = *source.Name + } + v1alpha1ApplicationDestination.Name = xstring3 + return v1alpha1ApplicationDestination +} +func (c *ConverterImpl) intstrIntOrStringToIntstrIntOrString(source intstr.IntOrString) intstr.IntOrString { + var intstrIntOrString intstr.IntOrString + intstrIntOrString.Type = intstr.Type(source.Type) + intstrIntOrString.IntVal = source.IntVal + intstrIntOrString.StrVal = source.StrVal + return intstrIntOrString +} +func (c *ConverterImpl) pIntstrIntOrStringToPIntstrIntOrString(source *intstr.IntOrString) *intstr.IntOrString { + var pIntstrIntOrString *intstr.IntOrString + if source != nil { + intstrIntOrString := c.intstrIntOrStringToIntstrIntOrString((*source)) + pIntstrIntOrString = &intstrIntOrString + } + return pIntstrIntOrString +} +func (c *ConverterImpl) pRuntimeRawExtensionToV1JSON(source *runtime.RawExtension) v1.JSON { + var v1JSON v1.JSON + if source != nil { + var v1JSON2 v1.JSON + var byteList []uint8 + if (*source).Raw != nil { + byteList = make([]uint8, len((*source).Raw)) + for i := 0; i < len((*source).Raw); i++ { + byteList[i] = (*source).Raw[i] + } + } + v1JSON2.Raw = byteList + v1JSON = v1JSON2 + } + return v1JSON +} +func (c *ConverterImpl) pV1JSONToPV1JSON(source *v1.JSON) *v1.JSON { + var pV1JSON *v1.JSON + if source != nil { + v1JSON := c.v1JSONToV1JSON((*source)) + pV1JSON = &v1JSON + } + return pV1JSON +} +func (c *ConverterImpl) pV1LabelSelectorToPV1LabelSelector(source *v11.LabelSelector) *v11.LabelSelector { + var pV1LabelSelector *v11.LabelSelector + if source != nil { + v1LabelSelector := c.v1LabelSelectorToV1LabelSelector((*source)) + pV1LabelSelector = &v1LabelSelector + } + return pV1LabelSelector +} +func (c *ConverterImpl) pV1TimeToPV1Time(source *v11.Time) *v11.Time { + var pV1Time *v11.Time + if source != nil { + var v1Time v11.Time + v1Time.Time = c.timeTimeToTimeTime((*source).Time) + pV1Time = &v1Time + } + return pV1Time +} +func (c *ConverterImpl) pV1alpha1ApplicationPreservedFieldsToPV1alpha1ApplicationPreservedFields(source *v1alpha1.ApplicationPreservedFields) *ApplicationPreservedFields { + var pV1alpha1ApplicationPreservedFields *ApplicationPreservedFields + if source != nil { + var v1alpha1ApplicationPreservedFields ApplicationPreservedFields + var stringList []string + if (*source).Annotations != nil { + stringList = make([]string, len((*source).Annotations)) + for i := 0; i < len((*source).Annotations); i++ { + stringList[i] = (*source).Annotations[i] + } + } + v1alpha1ApplicationPreservedFields.Annotations = stringList + pV1alpha1ApplicationPreservedFields = &v1alpha1ApplicationPreservedFields + } + return pV1alpha1ApplicationPreservedFields +} +func (c *ConverterImpl) pV1alpha1ApplicationPreservedFieldsToPV1alpha1ApplicationPreservedFields2(source *ApplicationPreservedFields) *v1alpha1.ApplicationPreservedFields { + var pV1alpha1ApplicationPreservedFields *v1alpha1.ApplicationPreservedFields + if source != nil { + var v1alpha1ApplicationPreservedFields v1alpha1.ApplicationPreservedFields + var stringList []string + if (*source).Annotations != nil { + stringList = make([]string, len((*source).Annotations)) + for i := 0; i < len((*source).Annotations); i++ { + stringList[i] = (*source).Annotations[i] + } + } + v1alpha1ApplicationPreservedFields.Annotations = stringList + pV1alpha1ApplicationPreservedFields = &v1alpha1ApplicationPreservedFields + } + return pV1alpha1ApplicationPreservedFields +} +func (c *ConverterImpl) pV1alpha1ApplicationSetRolloutStrategyToPV1alpha1ApplicationSetRolloutStrategy(source *v1alpha1.ApplicationSetRolloutStrategy) *ApplicationSetRolloutStrategy { + var pV1alpha1ApplicationSetRolloutStrategy *ApplicationSetRolloutStrategy + if source != nil { + var v1alpha1ApplicationSetRolloutStrategy ApplicationSetRolloutStrategy + var v1alpha1ApplicationSetRolloutStepList []ApplicationSetRolloutStep + if (*source).Steps != nil { + v1alpha1ApplicationSetRolloutStepList = make([]ApplicationSetRolloutStep, len((*source).Steps)) + for i := 0; i < len((*source).Steps); i++ { + v1alpha1ApplicationSetRolloutStepList[i] = c.v1alpha1ApplicationSetRolloutStepToV1alpha1ApplicationSetRolloutStep((*source).Steps[i]) + } + } + v1alpha1ApplicationSetRolloutStrategy.Steps = v1alpha1ApplicationSetRolloutStepList + pV1alpha1ApplicationSetRolloutStrategy = &v1alpha1ApplicationSetRolloutStrategy + } + return pV1alpha1ApplicationSetRolloutStrategy +} +func (c *ConverterImpl) pV1alpha1ApplicationSetRolloutStrategyToPV1alpha1ApplicationSetRolloutStrategy2(source *ApplicationSetRolloutStrategy) *v1alpha1.ApplicationSetRolloutStrategy { + var pV1alpha1ApplicationSetRolloutStrategy *v1alpha1.ApplicationSetRolloutStrategy + if source != nil { + var v1alpha1ApplicationSetRolloutStrategy v1alpha1.ApplicationSetRolloutStrategy + var v1alpha1ApplicationSetRolloutStepList []v1alpha1.ApplicationSetRolloutStep + if (*source).Steps != nil { + v1alpha1ApplicationSetRolloutStepList = make([]v1alpha1.ApplicationSetRolloutStep, len((*source).Steps)) + for i := 0; i < len((*source).Steps); i++ { + v1alpha1ApplicationSetRolloutStepList[i] = c.v1alpha1ApplicationSetRolloutStepToV1alpha1ApplicationSetRolloutStep2((*source).Steps[i]) + } + } + v1alpha1ApplicationSetRolloutStrategy.Steps = v1alpha1ApplicationSetRolloutStepList + pV1alpha1ApplicationSetRolloutStrategy = &v1alpha1ApplicationSetRolloutStrategy + } + return pV1alpha1ApplicationSetRolloutStrategy +} +func (c *ConverterImpl) pV1alpha1ApplicationSetStrategyToPV1alpha1ApplicationSetStrategy(source *v1alpha1.ApplicationSetStrategy) *ApplicationSetStrategy { + var pV1alpha1ApplicationSetStrategy *ApplicationSetStrategy + if source != nil { + var v1alpha1ApplicationSetStrategy ApplicationSetStrategy + v1alpha1ApplicationSetStrategy.Type = (*source).Type + v1alpha1ApplicationSetStrategy.RollingSync = c.pV1alpha1ApplicationSetRolloutStrategyToPV1alpha1ApplicationSetRolloutStrategy((*source).RollingSync) + pV1alpha1ApplicationSetStrategy = &v1alpha1ApplicationSetStrategy + } + return pV1alpha1ApplicationSetStrategy +} +func (c *ConverterImpl) pV1alpha1ApplicationSetStrategyToPV1alpha1ApplicationSetStrategy2(source *ApplicationSetStrategy) *v1alpha1.ApplicationSetStrategy { + var pV1alpha1ApplicationSetStrategy *v1alpha1.ApplicationSetStrategy + if source != nil { + var v1alpha1ApplicationSetStrategy v1alpha1.ApplicationSetStrategy + v1alpha1ApplicationSetStrategy.Type = (*source).Type + v1alpha1ApplicationSetStrategy.RollingSync = c.pV1alpha1ApplicationSetRolloutStrategyToPV1alpha1ApplicationSetRolloutStrategy2((*source).RollingSync) + pV1alpha1ApplicationSetStrategy = &v1alpha1ApplicationSetStrategy + } + return pV1alpha1ApplicationSetStrategy +} +func (c *ConverterImpl) pV1alpha1ApplicationSetSyncPolicyToPV1alpha1ApplicationSetSyncPolicy(source *v1alpha1.ApplicationSetSyncPolicy) *ApplicationSetSyncPolicy { + var pV1alpha1ApplicationSetSyncPolicy *ApplicationSetSyncPolicy + if source != nil { + var v1alpha1ApplicationSetSyncPolicy ApplicationSetSyncPolicy + v1alpha1ApplicationSetSyncPolicy.PreserveResourcesOnDeletion = (*source).PreserveResourcesOnDeletion + var pV1alpha1ApplicationsSyncPolicy *ApplicationsSyncPolicy + if (*source).ApplicationsSync != nil { + v1alpha1ApplicationsSyncPolicy := ApplicationsSyncPolicy(*(*source).ApplicationsSync) + pV1alpha1ApplicationsSyncPolicy = &v1alpha1ApplicationsSyncPolicy + } + v1alpha1ApplicationSetSyncPolicy.ApplicationsSync = pV1alpha1ApplicationsSyncPolicy + pV1alpha1ApplicationSetSyncPolicy = &v1alpha1ApplicationSetSyncPolicy + } + return pV1alpha1ApplicationSetSyncPolicy +} +func (c *ConverterImpl) pV1alpha1ApplicationSetSyncPolicyToPV1alpha1ApplicationSetSyncPolicy2(source *ApplicationSetSyncPolicy) *v1alpha1.ApplicationSetSyncPolicy { + var pV1alpha1ApplicationSetSyncPolicy *v1alpha1.ApplicationSetSyncPolicy + if source != nil { + var v1alpha1ApplicationSetSyncPolicy v1alpha1.ApplicationSetSyncPolicy + v1alpha1ApplicationSetSyncPolicy.PreserveResourcesOnDeletion = (*source).PreserveResourcesOnDeletion + var pV1alpha1ApplicationsSyncPolicy *v1alpha1.ApplicationsSyncPolicy + if (*source).ApplicationsSync != nil { + v1alpha1ApplicationsSyncPolicy := v1alpha1.ApplicationsSyncPolicy(*(*source).ApplicationsSync) + pV1alpha1ApplicationsSyncPolicy = &v1alpha1ApplicationsSyncPolicy + } + v1alpha1ApplicationSetSyncPolicy.ApplicationsSync = pV1alpha1ApplicationsSyncPolicy + pV1alpha1ApplicationSetSyncPolicy = &v1alpha1ApplicationSetSyncPolicy + } + return pV1alpha1ApplicationSetSyncPolicy +} +func (c *ConverterImpl) pV1alpha1ApplicationSourceDirectoryToPV1alpha1ApplicationSourceDirectory(source *v1alpha1.ApplicationSourceDirectory) *ApplicationSourceDirectory { + var pV1alpha1ApplicationSourceDirectory *ApplicationSourceDirectory + if source != nil { + var v1alpha1ApplicationSourceDirectory ApplicationSourceDirectory + pBool := (*source).Recurse + v1alpha1ApplicationSourceDirectory.Recurse = &pBool + v1alpha1ApplicationSourceDirectory.Jsonnet = c.v1alpha1ApplicationSourceJsonnetToV1alpha1ApplicationSourceJsonnet((*source).Jsonnet) + pString := (*source).Exclude + v1alpha1ApplicationSourceDirectory.Exclude = &pString + pString2 := (*source).Include + v1alpha1ApplicationSourceDirectory.Include = &pString2 + pV1alpha1ApplicationSourceDirectory = &v1alpha1ApplicationSourceDirectory + } + return pV1alpha1ApplicationSourceDirectory +} +func (c *ConverterImpl) pV1alpha1ApplicationSourceDirectoryToPV1alpha1ApplicationSourceDirectory2(source *ApplicationSourceDirectory) *v1alpha1.ApplicationSourceDirectory { + var pV1alpha1ApplicationSourceDirectory *v1alpha1.ApplicationSourceDirectory + if source != nil { + var v1alpha1ApplicationSourceDirectory v1alpha1.ApplicationSourceDirectory + var xbool bool + if (*source).Recurse != nil { + xbool = *(*source).Recurse + } + v1alpha1ApplicationSourceDirectory.Recurse = xbool + v1alpha1ApplicationSourceDirectory.Jsonnet = c.v1alpha1ApplicationSourceJsonnetToV1alpha1ApplicationSourceJsonnet2((*source).Jsonnet) + var xstring string + if (*source).Exclude != nil { + xstring = *(*source).Exclude + } + v1alpha1ApplicationSourceDirectory.Exclude = xstring + var xstring2 string + if (*source).Include != nil { + xstring2 = *(*source).Include + } + v1alpha1ApplicationSourceDirectory.Include = xstring2 + pV1alpha1ApplicationSourceDirectory = &v1alpha1ApplicationSourceDirectory + } + return pV1alpha1ApplicationSourceDirectory +} +func (c *ConverterImpl) pV1alpha1ApplicationSourceHelmToPV1alpha1ApplicationSourceHelm(source *v1alpha1.ApplicationSourceHelm) *ApplicationSourceHelm { + var pV1alpha1ApplicationSourceHelm *ApplicationSourceHelm + if source != nil { + var v1alpha1ApplicationSourceHelm ApplicationSourceHelm + var stringList []string + if (*source).ValueFiles != nil { + stringList = make([]string, len((*source).ValueFiles)) + for i := 0; i < len((*source).ValueFiles); i++ { + stringList[i] = (*source).ValueFiles[i] + } + } + v1alpha1ApplicationSourceHelm.ValueFiles = stringList + var v1alpha1HelmParameterList []HelmParameter + if (*source).Parameters != nil { + v1alpha1HelmParameterList = make([]HelmParameter, len((*source).Parameters)) + for j := 0; j < len((*source).Parameters); j++ { + v1alpha1HelmParameterList[j] = c.v1alpha1HelmParameterToV1alpha1HelmParameter((*source).Parameters[j]) + } + } + v1alpha1ApplicationSourceHelm.Parameters = v1alpha1HelmParameterList + pString := (*source).ReleaseName + v1alpha1ApplicationSourceHelm.ReleaseName = &pString + pString2 := (*source).Values + v1alpha1ApplicationSourceHelm.Values = &pString2 + var v1alpha1HelmFileParameterList []HelmFileParameter + if (*source).FileParameters != nil { + v1alpha1HelmFileParameterList = make([]HelmFileParameter, len((*source).FileParameters)) + for k := 0; k < len((*source).FileParameters); k++ { + v1alpha1HelmFileParameterList[k] = c.v1alpha1HelmFileParameterToV1alpha1HelmFileParameter((*source).FileParameters[k]) + } + } + v1alpha1ApplicationSourceHelm.FileParameters = v1alpha1HelmFileParameterList + pString3 := (*source).Version + v1alpha1ApplicationSourceHelm.Version = &pString3 + pBool := (*source).PassCredentials + v1alpha1ApplicationSourceHelm.PassCredentials = &pBool + pBool2 := (*source).IgnoreMissingValueFiles + v1alpha1ApplicationSourceHelm.IgnoreMissingValueFiles = &pBool2 + pBool3 := (*source).SkipCrds + v1alpha1ApplicationSourceHelm.SkipCrds = &pBool3 + v1alpha1ApplicationSourceHelm.ValuesObject = c.pRuntimeRawExtensionToV1JSON((*source).ValuesObject) + pV1alpha1ApplicationSourceHelm = &v1alpha1ApplicationSourceHelm + } + return pV1alpha1ApplicationSourceHelm +} +func (c *ConverterImpl) pV1alpha1ApplicationSourceHelmToPV1alpha1ApplicationSourceHelm2(source *ApplicationSourceHelm) *v1alpha1.ApplicationSourceHelm { + var pV1alpha1ApplicationSourceHelm *v1alpha1.ApplicationSourceHelm + if source != nil { + var v1alpha1ApplicationSourceHelm v1alpha1.ApplicationSourceHelm + var stringList []string + if (*source).ValueFiles != nil { + stringList = make([]string, len((*source).ValueFiles)) + for i := 0; i < len((*source).ValueFiles); i++ { + stringList[i] = (*source).ValueFiles[i] + } + } + v1alpha1ApplicationSourceHelm.ValueFiles = stringList + var v1alpha1HelmParameterList []v1alpha1.HelmParameter + if (*source).Parameters != nil { + v1alpha1HelmParameterList = make([]v1alpha1.HelmParameter, len((*source).Parameters)) + for j := 0; j < len((*source).Parameters); j++ { + v1alpha1HelmParameterList[j] = c.v1alpha1HelmParameterToV1alpha1HelmParameter2((*source).Parameters[j]) + } + } + v1alpha1ApplicationSourceHelm.Parameters = v1alpha1HelmParameterList + var xstring string + if (*source).ReleaseName != nil { + xstring = *(*source).ReleaseName + } + v1alpha1ApplicationSourceHelm.ReleaseName = xstring + var xstring2 string + if (*source).Values != nil { + xstring2 = *(*source).Values + } + v1alpha1ApplicationSourceHelm.Values = xstring2 + var v1alpha1HelmFileParameterList []v1alpha1.HelmFileParameter + if (*source).FileParameters != nil { + v1alpha1HelmFileParameterList = make([]v1alpha1.HelmFileParameter, len((*source).FileParameters)) + for k := 0; k < len((*source).FileParameters); k++ { + v1alpha1HelmFileParameterList[k] = c.v1alpha1HelmFileParameterToV1alpha1HelmFileParameter2((*source).FileParameters[k]) + } + } + v1alpha1ApplicationSourceHelm.FileParameters = v1alpha1HelmFileParameterList + var xstring3 string + if (*source).Version != nil { + xstring3 = *(*source).Version + } + v1alpha1ApplicationSourceHelm.Version = xstring3 + var xbool bool + if (*source).PassCredentials != nil { + xbool = *(*source).PassCredentials + } + v1alpha1ApplicationSourceHelm.PassCredentials = xbool + var xbool2 bool + if (*source).IgnoreMissingValueFiles != nil { + xbool2 = *(*source).IgnoreMissingValueFiles + } + v1alpha1ApplicationSourceHelm.IgnoreMissingValueFiles = xbool2 + var xbool3 bool + if (*source).SkipCrds != nil { + xbool3 = *(*source).SkipCrds + } + v1alpha1ApplicationSourceHelm.SkipCrds = xbool3 + v1alpha1ApplicationSourceHelm.ValuesObject = ExtV1JSONToRuntimeRawExtension((*source).ValuesObject) + pV1alpha1ApplicationSourceHelm = &v1alpha1ApplicationSourceHelm + } + return pV1alpha1ApplicationSourceHelm +} +func (c *ConverterImpl) pV1alpha1ApplicationSourceKustomizeToPV1alpha1ApplicationSourceKustomize(source *v1alpha1.ApplicationSourceKustomize) *ApplicationSourceKustomize { + var pV1alpha1ApplicationSourceKustomize *ApplicationSourceKustomize + if source != nil { + var v1alpha1ApplicationSourceKustomize ApplicationSourceKustomize + pString := (*source).NamePrefix + v1alpha1ApplicationSourceKustomize.NamePrefix = &pString + pString2 := (*source).NameSuffix + v1alpha1ApplicationSourceKustomize.NameSuffix = &pString2 + v1alpha1ApplicationSourceKustomize.Images = c.v1alpha1KustomizeImagesToV1alpha1KustomizeImages((*source).Images) + mapStringString := make(map[string]string, len((*source).CommonLabels)) + for key, value := range (*source).CommonLabels { + mapStringString[key] = value + } + v1alpha1ApplicationSourceKustomize.CommonLabels = mapStringString + pString3 := (*source).Version + v1alpha1ApplicationSourceKustomize.Version = &pString3 + mapStringString2 := make(map[string]string, len((*source).CommonAnnotations)) + for key2, value2 := range (*source).CommonAnnotations { + mapStringString2[key2] = value2 + } + v1alpha1ApplicationSourceKustomize.CommonAnnotations = mapStringString2 + pBool := (*source).ForceCommonLabels + v1alpha1ApplicationSourceKustomize.ForceCommonLabels = &pBool + pBool2 := (*source).ForceCommonAnnotations + v1alpha1ApplicationSourceKustomize.ForceCommonAnnotations = &pBool2 + pString4 := (*source).Namespace + v1alpha1ApplicationSourceKustomize.Namespace = &pString4 + pBool3 := (*source).CommonAnnotationsEnvsubst + v1alpha1ApplicationSourceKustomize.CommonAnnotationsEnvsubst = &pBool3 + v1alpha1ApplicationSourceKustomize.Replicas = c.v1alpha1KustomizeReplicasToV1alpha1KustomizeReplicas((*source).Replicas) + pV1alpha1ApplicationSourceKustomize = &v1alpha1ApplicationSourceKustomize + } + return pV1alpha1ApplicationSourceKustomize +} +func (c *ConverterImpl) pV1alpha1ApplicationSourceKustomizeToPV1alpha1ApplicationSourceKustomize2(source *ApplicationSourceKustomize) *v1alpha1.ApplicationSourceKustomize { + var pV1alpha1ApplicationSourceKustomize *v1alpha1.ApplicationSourceKustomize + if source != nil { + var v1alpha1ApplicationSourceKustomize v1alpha1.ApplicationSourceKustomize + var xstring string + if (*source).NamePrefix != nil { + xstring = *(*source).NamePrefix + } + v1alpha1ApplicationSourceKustomize.NamePrefix = xstring + var xstring2 string + if (*source).NameSuffix != nil { + xstring2 = *(*source).NameSuffix + } + v1alpha1ApplicationSourceKustomize.NameSuffix = xstring2 + v1alpha1ApplicationSourceKustomize.Images = c.v1alpha1KustomizeImagesToV1alpha1KustomizeImages2((*source).Images) + mapStringString := make(map[string]string, len((*source).CommonLabels)) + for key, value := range (*source).CommonLabels { + mapStringString[key] = value + } + v1alpha1ApplicationSourceKustomize.CommonLabels = mapStringString + var xstring3 string + if (*source).Version != nil { + xstring3 = *(*source).Version + } + v1alpha1ApplicationSourceKustomize.Version = xstring3 + mapStringString2 := make(map[string]string, len((*source).CommonAnnotations)) + for key2, value2 := range (*source).CommonAnnotations { + mapStringString2[key2] = value2 + } + v1alpha1ApplicationSourceKustomize.CommonAnnotations = mapStringString2 + var xbool bool + if (*source).ForceCommonLabels != nil { + xbool = *(*source).ForceCommonLabels + } + v1alpha1ApplicationSourceKustomize.ForceCommonLabels = xbool + var xbool2 bool + if (*source).ForceCommonAnnotations != nil { + xbool2 = *(*source).ForceCommonAnnotations + } + v1alpha1ApplicationSourceKustomize.ForceCommonAnnotations = xbool2 + var xstring4 string + if (*source).Namespace != nil { + xstring4 = *(*source).Namespace + } + v1alpha1ApplicationSourceKustomize.Namespace = xstring4 + var xbool3 bool + if (*source).CommonAnnotationsEnvsubst != nil { + xbool3 = *(*source).CommonAnnotationsEnvsubst + } + v1alpha1ApplicationSourceKustomize.CommonAnnotationsEnvsubst = xbool3 + v1alpha1ApplicationSourceKustomize.Replicas = c.v1alpha1KustomizeReplicasToV1alpha1KustomizeReplicas2((*source).Replicas) + pV1alpha1ApplicationSourceKustomize = &v1alpha1ApplicationSourceKustomize + } + return pV1alpha1ApplicationSourceKustomize +} +func (c *ConverterImpl) pV1alpha1ApplicationSourcePluginToPV1alpha1ApplicationSourcePlugin(source *v1alpha1.ApplicationSourcePlugin) *ApplicationSourcePlugin { + var pV1alpha1ApplicationSourcePlugin *ApplicationSourcePlugin + if source != nil { + var v1alpha1ApplicationSourcePlugin ApplicationSourcePlugin + pString := (*source).Name + v1alpha1ApplicationSourcePlugin.Name = &pString + v1alpha1ApplicationSourcePlugin.Env = c.v1alpha1EnvToV1alpha1Env((*source).Env) + v1alpha1ApplicationSourcePlugin.Parameters = c.v1alpha1ApplicationSourcePluginParametersToV1alpha1ApplicationSourcePluginParameters((*source).Parameters) + pV1alpha1ApplicationSourcePlugin = &v1alpha1ApplicationSourcePlugin + } + return pV1alpha1ApplicationSourcePlugin +} +func (c *ConverterImpl) pV1alpha1ApplicationSourcePluginToPV1alpha1ApplicationSourcePlugin2(source *ApplicationSourcePlugin) *v1alpha1.ApplicationSourcePlugin { + var pV1alpha1ApplicationSourcePlugin *v1alpha1.ApplicationSourcePlugin + if source != nil { + var v1alpha1ApplicationSourcePlugin v1alpha1.ApplicationSourcePlugin + var xstring string + if (*source).Name != nil { + xstring = *(*source).Name + } + v1alpha1ApplicationSourcePlugin.Name = xstring + v1alpha1ApplicationSourcePlugin.Env = c.v1alpha1EnvToV1alpha1Env2((*source).Env) + v1alpha1ApplicationSourcePlugin.Parameters = c.v1alpha1ApplicationSourcePluginParametersToV1alpha1ApplicationSourcePluginParameters2((*source).Parameters) + pV1alpha1ApplicationSourcePlugin = &v1alpha1ApplicationSourcePlugin + } + return pV1alpha1ApplicationSourcePlugin +} +func (c *ConverterImpl) pV1alpha1ApplicationSourceToPV1alpha1ApplicationSource(source *v1alpha1.ApplicationSource) *ApplicationSource { + var pV1alpha1ApplicationSource *ApplicationSource + if source != nil { + var v1alpha1ApplicationSource ApplicationSource + v1alpha1ApplicationSource.RepoURL = (*source).RepoURL + pString := (*source).Path + v1alpha1ApplicationSource.Path = &pString + pString2 := (*source).TargetRevision + v1alpha1ApplicationSource.TargetRevision = &pString2 + v1alpha1ApplicationSource.Helm = c.pV1alpha1ApplicationSourceHelmToPV1alpha1ApplicationSourceHelm((*source).Helm) + v1alpha1ApplicationSource.Kustomize = c.pV1alpha1ApplicationSourceKustomizeToPV1alpha1ApplicationSourceKustomize((*source).Kustomize) + v1alpha1ApplicationSource.Directory = c.pV1alpha1ApplicationSourceDirectoryToPV1alpha1ApplicationSourceDirectory((*source).Directory) + v1alpha1ApplicationSource.Plugin = c.pV1alpha1ApplicationSourcePluginToPV1alpha1ApplicationSourcePlugin((*source).Plugin) + pString3 := (*source).Chart + v1alpha1ApplicationSource.Chart = &pString3 + pString4 := (*source).Ref + v1alpha1ApplicationSource.Ref = &pString4 + pV1alpha1ApplicationSource = &v1alpha1ApplicationSource + } + return pV1alpha1ApplicationSource +} +func (c *ConverterImpl) pV1alpha1ApplicationSourceToPV1alpha1ApplicationSource2(source *ApplicationSource) *v1alpha1.ApplicationSource { + var pV1alpha1ApplicationSource *v1alpha1.ApplicationSource + if source != nil { + var v1alpha1ApplicationSource v1alpha1.ApplicationSource + v1alpha1ApplicationSource.RepoURL = (*source).RepoURL + var xstring string + if (*source).Path != nil { + xstring = *(*source).Path + } + v1alpha1ApplicationSource.Path = xstring + var xstring2 string + if (*source).TargetRevision != nil { + xstring2 = *(*source).TargetRevision + } + v1alpha1ApplicationSource.TargetRevision = xstring2 + v1alpha1ApplicationSource.Helm = c.pV1alpha1ApplicationSourceHelmToPV1alpha1ApplicationSourceHelm2((*source).Helm) + v1alpha1ApplicationSource.Kustomize = c.pV1alpha1ApplicationSourceKustomizeToPV1alpha1ApplicationSourceKustomize2((*source).Kustomize) + v1alpha1ApplicationSource.Directory = c.pV1alpha1ApplicationSourceDirectoryToPV1alpha1ApplicationSourceDirectory2((*source).Directory) + v1alpha1ApplicationSource.Plugin = c.pV1alpha1ApplicationSourcePluginToPV1alpha1ApplicationSourcePlugin2((*source).Plugin) + var xstring3 string + if (*source).Chart != nil { + xstring3 = *(*source).Chart + } + v1alpha1ApplicationSource.Chart = xstring3 + var xstring4 string + if (*source).Ref != nil { + xstring4 = *(*source).Ref + } + v1alpha1ApplicationSource.Ref = xstring4 + pV1alpha1ApplicationSource = &v1alpha1ApplicationSource + } + return pV1alpha1ApplicationSource +} +func (c *ConverterImpl) pV1alpha1BackoffToPV1alpha1Backoff(source *v1alpha1.Backoff) *Backoff { + var pV1alpha1Backoff *Backoff + if source != nil { + var v1alpha1Backoff Backoff + pString := (*source).Duration + v1alpha1Backoff.Duration = &pString + var pInt64 *int64 + if (*source).Factor != nil { + xint64 := *(*source).Factor + pInt64 = &xint64 + } + v1alpha1Backoff.Factor = pInt64 + pString2 := (*source).MaxDuration + v1alpha1Backoff.MaxDuration = &pString2 + pV1alpha1Backoff = &v1alpha1Backoff + } + return pV1alpha1Backoff +} +func (c *ConverterImpl) pV1alpha1BackoffToPV1alpha1Backoff2(source *Backoff) *v1alpha1.Backoff { + var pV1alpha1Backoff *v1alpha1.Backoff + if source != nil { + var v1alpha1Backoff v1alpha1.Backoff + var xstring string + if (*source).Duration != nil { + xstring = *(*source).Duration + } + v1alpha1Backoff.Duration = xstring + var pInt64 *int64 + if (*source).Factor != nil { + xint64 := *(*source).Factor + pInt64 = &xint64 + } + v1alpha1Backoff.Factor = pInt64 + var xstring2 string + if (*source).MaxDuration != nil { + xstring2 = *(*source).MaxDuration + } + v1alpha1Backoff.MaxDuration = xstring2 + pV1alpha1Backoff = &v1alpha1Backoff + } + return pV1alpha1Backoff +} +func (c *ConverterImpl) pV1alpha1BasicAuthBitbucketServerToPV1alpha1BasicAuthBitbucketServer(source *v1alpha1.BasicAuthBitbucketServer) *BasicAuthBitbucketServer { + var pV1alpha1BasicAuthBitbucketServer *BasicAuthBitbucketServer + if source != nil { + var v1alpha1BasicAuthBitbucketServer BasicAuthBitbucketServer + v1alpha1BasicAuthBitbucketServer.Username = (*source).Username + v1alpha1BasicAuthBitbucketServer.PasswordRef = c.pV1alpha1SecretRefToPV1alpha1SecretRef((*source).PasswordRef) + pV1alpha1BasicAuthBitbucketServer = &v1alpha1BasicAuthBitbucketServer + } + return pV1alpha1BasicAuthBitbucketServer +} +func (c *ConverterImpl) pV1alpha1BasicAuthBitbucketServerToPV1alpha1BasicAuthBitbucketServer2(source *BasicAuthBitbucketServer) *v1alpha1.BasicAuthBitbucketServer { + var pV1alpha1BasicAuthBitbucketServer *v1alpha1.BasicAuthBitbucketServer + if source != nil { + var v1alpha1BasicAuthBitbucketServer v1alpha1.BasicAuthBitbucketServer + v1alpha1BasicAuthBitbucketServer.Username = (*source).Username + v1alpha1BasicAuthBitbucketServer.PasswordRef = c.pV1alpha1SecretRefToPV1alpha1SecretRef2((*source).PasswordRef) + pV1alpha1BasicAuthBitbucketServer = &v1alpha1BasicAuthBitbucketServer + } + return pV1alpha1BasicAuthBitbucketServer +} +func (c *ConverterImpl) pV1alpha1BearerTokenBitbucketCloudToPV1alpha1BearerTokenBitbucketCloud(source *v1alpha1.BearerTokenBitbucketCloud) *BearerTokenBitbucketCloud { + var pV1alpha1BearerTokenBitbucketCloud *BearerTokenBitbucketCloud + if source != nil { + var v1alpha1BearerTokenBitbucketCloud BearerTokenBitbucketCloud + v1alpha1BearerTokenBitbucketCloud.TokenRef = c.pV1alpha1SecretRefToPV1alpha1SecretRef((*source).TokenRef) + pV1alpha1BearerTokenBitbucketCloud = &v1alpha1BearerTokenBitbucketCloud + } + return pV1alpha1BearerTokenBitbucketCloud +} +func (c *ConverterImpl) pV1alpha1BearerTokenBitbucketCloudToPV1alpha1BearerTokenBitbucketCloud2(source *BearerTokenBitbucketCloud) *v1alpha1.BearerTokenBitbucketCloud { + var pV1alpha1BearerTokenBitbucketCloud *v1alpha1.BearerTokenBitbucketCloud + if source != nil { + var v1alpha1BearerTokenBitbucketCloud v1alpha1.BearerTokenBitbucketCloud + v1alpha1BearerTokenBitbucketCloud.TokenRef = c.pV1alpha1SecretRefToPV1alpha1SecretRef2((*source).TokenRef) + pV1alpha1BearerTokenBitbucketCloud = &v1alpha1BearerTokenBitbucketCloud + } + return pV1alpha1BearerTokenBitbucketCloud +} +func (c *ConverterImpl) pV1alpha1ClusterGeneratorToPV1alpha1ClusterGenerator(source *v1alpha1.ClusterGenerator) *ClusterGenerator { + var pV1alpha1ClusterGenerator *ClusterGenerator + if source != nil { + var v1alpha1ClusterGenerator ClusterGenerator + v1alpha1ClusterGenerator.Selector = c.v1LabelSelectorToV1LabelSelector((*source).Selector) + v1alpha1ClusterGenerator.Template = c.v1alpha1ApplicationSetTemplateToV1alpha1ApplicationSetTemplate((*source).Template) + mapStringString := make(map[string]string, len((*source).Values)) + for key, value := range (*source).Values { + mapStringString[key] = value + } + v1alpha1ClusterGenerator.Values = mapStringString + pV1alpha1ClusterGenerator = &v1alpha1ClusterGenerator + } + return pV1alpha1ClusterGenerator +} +func (c *ConverterImpl) pV1alpha1ClusterGeneratorToPV1alpha1ClusterGenerator2(source *ClusterGenerator) *v1alpha1.ClusterGenerator { + var pV1alpha1ClusterGenerator *v1alpha1.ClusterGenerator + if source != nil { + var v1alpha1ClusterGenerator v1alpha1.ClusterGenerator + v1alpha1ClusterGenerator.Selector = c.v1LabelSelectorToV1LabelSelector((*source).Selector) + v1alpha1ClusterGenerator.Template = c.v1alpha1ApplicationSetTemplateToV1alpha1ApplicationSetTemplate2((*source).Template) + mapStringString := make(map[string]string, len((*source).Values)) + for key, value := range (*source).Values { + mapStringString[key] = value + } + v1alpha1ClusterGenerator.Values = mapStringString + pV1alpha1ClusterGenerator = &v1alpha1ClusterGenerator + } + return pV1alpha1ClusterGenerator +} +func (c *ConverterImpl) pV1alpha1DuckTypeGeneratorToPV1alpha1DuckTypeGenerator(source *v1alpha1.DuckTypeGenerator) *DuckTypeGenerator { + var pV1alpha1DuckTypeGenerator *DuckTypeGenerator + if source != nil { + var v1alpha1DuckTypeGenerator DuckTypeGenerator + v1alpha1DuckTypeGenerator.ConfigMapRef = (*source).ConfigMapRef + v1alpha1DuckTypeGenerator.Name = (*source).Name + var pInt64 *int64 + if (*source).RequeueAfterSeconds != nil { + xint64 := *(*source).RequeueAfterSeconds + pInt64 = &xint64 + } + v1alpha1DuckTypeGenerator.RequeueAfterSeconds = pInt64 + v1alpha1DuckTypeGenerator.LabelSelector = c.v1LabelSelectorToV1LabelSelector((*source).LabelSelector) + v1alpha1DuckTypeGenerator.Template = c.v1alpha1ApplicationSetTemplateToV1alpha1ApplicationSetTemplate((*source).Template) + mapStringString := make(map[string]string, len((*source).Values)) + for key, value := range (*source).Values { + mapStringString[key] = value + } + v1alpha1DuckTypeGenerator.Values = mapStringString + pV1alpha1DuckTypeGenerator = &v1alpha1DuckTypeGenerator + } + return pV1alpha1DuckTypeGenerator +} +func (c *ConverterImpl) pV1alpha1DuckTypeGeneratorToPV1alpha1DuckTypeGenerator2(source *DuckTypeGenerator) *v1alpha1.DuckTypeGenerator { + var pV1alpha1DuckTypeGenerator *v1alpha1.DuckTypeGenerator + if source != nil { + var v1alpha1DuckTypeGenerator v1alpha1.DuckTypeGenerator + v1alpha1DuckTypeGenerator.ConfigMapRef = (*source).ConfigMapRef + v1alpha1DuckTypeGenerator.Name = (*source).Name + var pInt64 *int64 + if (*source).RequeueAfterSeconds != nil { + xint64 := *(*source).RequeueAfterSeconds + pInt64 = &xint64 + } + v1alpha1DuckTypeGenerator.RequeueAfterSeconds = pInt64 + v1alpha1DuckTypeGenerator.LabelSelector = c.v1LabelSelectorToV1LabelSelector((*source).LabelSelector) + v1alpha1DuckTypeGenerator.Template = c.v1alpha1ApplicationSetTemplateToV1alpha1ApplicationSetTemplate2((*source).Template) + mapStringString := make(map[string]string, len((*source).Values)) + for key, value := range (*source).Values { + mapStringString[key] = value + } + v1alpha1DuckTypeGenerator.Values = mapStringString + pV1alpha1DuckTypeGenerator = &v1alpha1DuckTypeGenerator + } + return pV1alpha1DuckTypeGenerator +} +func (c *ConverterImpl) pV1alpha1EnvEntryToPV1alpha1EnvEntry(source *v1alpha1.EnvEntry) *EnvEntry { + var pV1alpha1EnvEntry *EnvEntry + if source != nil { + var v1alpha1EnvEntry EnvEntry + v1alpha1EnvEntry.Name = (*source).Name + v1alpha1EnvEntry.Value = (*source).Value + pV1alpha1EnvEntry = &v1alpha1EnvEntry + } + return pV1alpha1EnvEntry +} +func (c *ConverterImpl) pV1alpha1EnvEntryToPV1alpha1EnvEntry2(source *EnvEntry) *v1alpha1.EnvEntry { + var pV1alpha1EnvEntry *v1alpha1.EnvEntry + if source != nil { + var v1alpha1EnvEntry v1alpha1.EnvEntry + v1alpha1EnvEntry.Name = (*source).Name + v1alpha1EnvEntry.Value = (*source).Value + pV1alpha1EnvEntry = &v1alpha1EnvEntry + } + return pV1alpha1EnvEntry +} +func (c *ConverterImpl) pV1alpha1GitGeneratorToPV1alpha1GitGenerator(source *v1alpha1.GitGenerator) *GitGenerator { + var pV1alpha1GitGenerator *GitGenerator + if source != nil { + var v1alpha1GitGenerator GitGenerator + v1alpha1GitGenerator.RepoURL = (*source).RepoURL + var v1alpha1GitDirectoryGeneratorItemList []GitDirectoryGeneratorItem + if (*source).Directories != nil { + v1alpha1GitDirectoryGeneratorItemList = make([]GitDirectoryGeneratorItem, len((*source).Directories)) + for i := 0; i < len((*source).Directories); i++ { + v1alpha1GitDirectoryGeneratorItemList[i] = c.v1alpha1GitDirectoryGeneratorItemToV1alpha1GitDirectoryGeneratorItem((*source).Directories[i]) + } + } + v1alpha1GitGenerator.Directories = v1alpha1GitDirectoryGeneratorItemList + var v1alpha1GitFileGeneratorItemList []GitFileGeneratorItem + if (*source).Files != nil { + v1alpha1GitFileGeneratorItemList = make([]GitFileGeneratorItem, len((*source).Files)) + for j := 0; j < len((*source).Files); j++ { + v1alpha1GitFileGeneratorItemList[j] = c.v1alpha1GitFileGeneratorItemToV1alpha1GitFileGeneratorItem((*source).Files[j]) + } + } + v1alpha1GitGenerator.Files = v1alpha1GitFileGeneratorItemList + v1alpha1GitGenerator.Revision = (*source).Revision + var pInt64 *int64 + if (*source).RequeueAfterSeconds != nil { + xint64 := *(*source).RequeueAfterSeconds + pInt64 = &xint64 + } + v1alpha1GitGenerator.RequeueAfterSeconds = pInt64 + v1alpha1GitGenerator.Template = c.v1alpha1ApplicationSetTemplateToV1alpha1ApplicationSetTemplate((*source).Template) + v1alpha1GitGenerator.PathParamPrefix = (*source).PathParamPrefix + mapStringString := make(map[string]string, len((*source).Values)) + for key, value := range (*source).Values { + mapStringString[key] = value + } + v1alpha1GitGenerator.Values = mapStringString + pV1alpha1GitGenerator = &v1alpha1GitGenerator + } + return pV1alpha1GitGenerator +} +func (c *ConverterImpl) pV1alpha1GitGeneratorToPV1alpha1GitGenerator2(source *GitGenerator) *v1alpha1.GitGenerator { + var pV1alpha1GitGenerator *v1alpha1.GitGenerator + if source != nil { + var v1alpha1GitGenerator v1alpha1.GitGenerator + v1alpha1GitGenerator.RepoURL = (*source).RepoURL + var v1alpha1GitDirectoryGeneratorItemList []v1alpha1.GitDirectoryGeneratorItem + if (*source).Directories != nil { + v1alpha1GitDirectoryGeneratorItemList = make([]v1alpha1.GitDirectoryGeneratorItem, len((*source).Directories)) + for i := 0; i < len((*source).Directories); i++ { + v1alpha1GitDirectoryGeneratorItemList[i] = c.v1alpha1GitDirectoryGeneratorItemToV1alpha1GitDirectoryGeneratorItem2((*source).Directories[i]) + } + } + v1alpha1GitGenerator.Directories = v1alpha1GitDirectoryGeneratorItemList + var v1alpha1GitFileGeneratorItemList []v1alpha1.GitFileGeneratorItem + if (*source).Files != nil { + v1alpha1GitFileGeneratorItemList = make([]v1alpha1.GitFileGeneratorItem, len((*source).Files)) + for j := 0; j < len((*source).Files); j++ { + v1alpha1GitFileGeneratorItemList[j] = c.v1alpha1GitFileGeneratorItemToV1alpha1GitFileGeneratorItem2((*source).Files[j]) + } + } + v1alpha1GitGenerator.Files = v1alpha1GitFileGeneratorItemList + v1alpha1GitGenerator.Revision = (*source).Revision + var pInt64 *int64 + if (*source).RequeueAfterSeconds != nil { + xint64 := *(*source).RequeueAfterSeconds + pInt64 = &xint64 + } + v1alpha1GitGenerator.RequeueAfterSeconds = pInt64 + v1alpha1GitGenerator.Template = c.v1alpha1ApplicationSetTemplateToV1alpha1ApplicationSetTemplate2((*source).Template) + v1alpha1GitGenerator.PathParamPrefix = (*source).PathParamPrefix + mapStringString := make(map[string]string, len((*source).Values)) + for key, value := range (*source).Values { + mapStringString[key] = value + } + v1alpha1GitGenerator.Values = mapStringString + pV1alpha1GitGenerator = &v1alpha1GitGenerator + } + return pV1alpha1GitGenerator +} +func (c *ConverterImpl) pV1alpha1ListGeneratorToPV1alpha1ListGenerator(source *v1alpha1.ListGenerator) *ListGenerator { + var pV1alpha1ListGenerator *ListGenerator + if source != nil { + var v1alpha1ListGenerator ListGenerator + var v1JSONList []v1.JSON + if (*source).Elements != nil { + v1JSONList = make([]v1.JSON, len((*source).Elements)) + for i := 0; i < len((*source).Elements); i++ { + v1JSONList[i] = c.v1JSONToV1JSON((*source).Elements[i]) + } + } + v1alpha1ListGenerator.Elements = v1JSONList + v1alpha1ListGenerator.Template = c.v1alpha1ApplicationSetTemplateToV1alpha1ApplicationSetTemplate((*source).Template) + v1alpha1ListGenerator.ElementsYaml = (*source).ElementsYaml + pV1alpha1ListGenerator = &v1alpha1ListGenerator + } + return pV1alpha1ListGenerator +} +func (c *ConverterImpl) pV1alpha1ListGeneratorToPV1alpha1ListGenerator2(source *ListGenerator) *v1alpha1.ListGenerator { + var pV1alpha1ListGenerator *v1alpha1.ListGenerator + if source != nil { + var v1alpha1ListGenerator v1alpha1.ListGenerator + var v1JSONList []v1.JSON + if (*source).Elements != nil { + v1JSONList = make([]v1.JSON, len((*source).Elements)) + for i := 0; i < len((*source).Elements); i++ { + v1JSONList[i] = c.v1JSONToV1JSON((*source).Elements[i]) + } + } + v1alpha1ListGenerator.Elements = v1JSONList + v1alpha1ListGenerator.Template = c.v1alpha1ApplicationSetTemplateToV1alpha1ApplicationSetTemplate2((*source).Template) + v1alpha1ListGenerator.ElementsYaml = (*source).ElementsYaml + pV1alpha1ListGenerator = &v1alpha1ListGenerator + } + return pV1alpha1ListGenerator +} +func (c *ConverterImpl) pV1alpha1ManagedNamespaceMetadataToPV1alpha1ManagedNamespaceMetadata(source *v1alpha1.ManagedNamespaceMetadata) *ManagedNamespaceMetadata { + var pV1alpha1ManagedNamespaceMetadata *ManagedNamespaceMetadata + if source != nil { + var v1alpha1ManagedNamespaceMetadata ManagedNamespaceMetadata + mapStringString := make(map[string]string, len((*source).Labels)) + for key, value := range (*source).Labels { + mapStringString[key] = value + } + v1alpha1ManagedNamespaceMetadata.Labels = mapStringString + mapStringString2 := make(map[string]string, len((*source).Annotations)) + for key2, value2 := range (*source).Annotations { + mapStringString2[key2] = value2 + } + v1alpha1ManagedNamespaceMetadata.Annotations = mapStringString2 + pV1alpha1ManagedNamespaceMetadata = &v1alpha1ManagedNamespaceMetadata + } + return pV1alpha1ManagedNamespaceMetadata +} +func (c *ConverterImpl) pV1alpha1ManagedNamespaceMetadataToPV1alpha1ManagedNamespaceMetadata2(source *ManagedNamespaceMetadata) *v1alpha1.ManagedNamespaceMetadata { + var pV1alpha1ManagedNamespaceMetadata *v1alpha1.ManagedNamespaceMetadata + if source != nil { + var v1alpha1ManagedNamespaceMetadata v1alpha1.ManagedNamespaceMetadata + mapStringString := make(map[string]string, len((*source).Labels)) + for key, value := range (*source).Labels { + mapStringString[key] = value + } + v1alpha1ManagedNamespaceMetadata.Labels = mapStringString + mapStringString2 := make(map[string]string, len((*source).Annotations)) + for key2, value2 := range (*source).Annotations { + mapStringString2[key2] = value2 + } + v1alpha1ManagedNamespaceMetadata.Annotations = mapStringString2 + pV1alpha1ManagedNamespaceMetadata = &v1alpha1ManagedNamespaceMetadata + } + return pV1alpha1ManagedNamespaceMetadata +} +func (c *ConverterImpl) pV1alpha1MatrixGeneratorToPV1alpha1MatrixGenerator(source *v1alpha1.MatrixGenerator) *MatrixGenerator { + var pV1alpha1MatrixGenerator *MatrixGenerator + if source != nil { + var v1alpha1MatrixGenerator MatrixGenerator + var v1alpha1ApplicationSetNestedGeneratorList []ApplicationSetNestedGenerator + if (*source).Generators != nil { + v1alpha1ApplicationSetNestedGeneratorList = make([]ApplicationSetNestedGenerator, len((*source).Generators)) + for i := 0; i < len((*source).Generators); i++ { + v1alpha1ApplicationSetNestedGeneratorList[i] = c.v1alpha1ApplicationSetNestedGeneratorToV1alpha1ApplicationSetNestedGenerator((*source).Generators[i]) + } + } + v1alpha1MatrixGenerator.Generators = v1alpha1ApplicationSetNestedGeneratorList + v1alpha1MatrixGenerator.Template = c.v1alpha1ApplicationSetTemplateToV1alpha1ApplicationSetTemplate((*source).Template) + pV1alpha1MatrixGenerator = &v1alpha1MatrixGenerator + } + return pV1alpha1MatrixGenerator +} +func (c *ConverterImpl) pV1alpha1MatrixGeneratorToPV1alpha1MatrixGenerator2(source *MatrixGenerator) *v1alpha1.MatrixGenerator { + var pV1alpha1MatrixGenerator *v1alpha1.MatrixGenerator + if source != nil { + var v1alpha1MatrixGenerator v1alpha1.MatrixGenerator + var v1alpha1ApplicationSetNestedGeneratorList []v1alpha1.ApplicationSetNestedGenerator + if (*source).Generators != nil { + v1alpha1ApplicationSetNestedGeneratorList = make([]v1alpha1.ApplicationSetNestedGenerator, len((*source).Generators)) + for i := 0; i < len((*source).Generators); i++ { + v1alpha1ApplicationSetNestedGeneratorList[i] = c.v1alpha1ApplicationSetNestedGeneratorToV1alpha1ApplicationSetNestedGenerator2((*source).Generators[i]) + } + } + v1alpha1MatrixGenerator.Generators = v1alpha1ApplicationSetNestedGeneratorList + v1alpha1MatrixGenerator.Template = c.v1alpha1ApplicationSetTemplateToV1alpha1ApplicationSetTemplate2((*source).Template) + pV1alpha1MatrixGenerator = &v1alpha1MatrixGenerator + } + return pV1alpha1MatrixGenerator +} +func (c *ConverterImpl) pV1alpha1MergeGeneratorToPV1alpha1MergeGenerator(source *v1alpha1.MergeGenerator) *MergeGenerator { + var pV1alpha1MergeGenerator *MergeGenerator + if source != nil { + var v1alpha1MergeGenerator MergeGenerator + var v1alpha1ApplicationSetNestedGeneratorList []ApplicationSetNestedGenerator + if (*source).Generators != nil { + v1alpha1ApplicationSetNestedGeneratorList = make([]ApplicationSetNestedGenerator, len((*source).Generators)) + for i := 0; i < len((*source).Generators); i++ { + v1alpha1ApplicationSetNestedGeneratorList[i] = c.v1alpha1ApplicationSetNestedGeneratorToV1alpha1ApplicationSetNestedGenerator((*source).Generators[i]) + } + } + v1alpha1MergeGenerator.Generators = v1alpha1ApplicationSetNestedGeneratorList + var stringList []string + if (*source).MergeKeys != nil { + stringList = make([]string, len((*source).MergeKeys)) + for j := 0; j < len((*source).MergeKeys); j++ { + stringList[j] = (*source).MergeKeys[j] + } + } + v1alpha1MergeGenerator.MergeKeys = stringList + v1alpha1MergeGenerator.Template = c.v1alpha1ApplicationSetTemplateToV1alpha1ApplicationSetTemplate((*source).Template) + pV1alpha1MergeGenerator = &v1alpha1MergeGenerator + } + return pV1alpha1MergeGenerator +} +func (c *ConverterImpl) pV1alpha1MergeGeneratorToPV1alpha1MergeGenerator2(source *MergeGenerator) *v1alpha1.MergeGenerator { + var pV1alpha1MergeGenerator *v1alpha1.MergeGenerator + if source != nil { + var v1alpha1MergeGenerator v1alpha1.MergeGenerator + var v1alpha1ApplicationSetNestedGeneratorList []v1alpha1.ApplicationSetNestedGenerator + if (*source).Generators != nil { + v1alpha1ApplicationSetNestedGeneratorList = make([]v1alpha1.ApplicationSetNestedGenerator, len((*source).Generators)) + for i := 0; i < len((*source).Generators); i++ { + v1alpha1ApplicationSetNestedGeneratorList[i] = c.v1alpha1ApplicationSetNestedGeneratorToV1alpha1ApplicationSetNestedGenerator2((*source).Generators[i]) + } + } + v1alpha1MergeGenerator.Generators = v1alpha1ApplicationSetNestedGeneratorList + var stringList []string + if (*source).MergeKeys != nil { + stringList = make([]string, len((*source).MergeKeys)) + for j := 0; j < len((*source).MergeKeys); j++ { + stringList[j] = (*source).MergeKeys[j] + } + } + v1alpha1MergeGenerator.MergeKeys = stringList + v1alpha1MergeGenerator.Template = c.v1alpha1ApplicationSetTemplateToV1alpha1ApplicationSetTemplate2((*source).Template) + pV1alpha1MergeGenerator = &v1alpha1MergeGenerator + } + return pV1alpha1MergeGenerator +} +func (c *ConverterImpl) pV1alpha1OptionalArrayToPV1alpha1OptionalArray(source *v1alpha1.OptionalArray) *OptionalArray { + var pV1alpha1OptionalArray *OptionalArray + if source != nil { + var v1alpha1OptionalArray OptionalArray + var stringList []string + if (*source).Array != nil { + stringList = make([]string, len((*source).Array)) + for i := 0; i < len((*source).Array); i++ { + stringList[i] = (*source).Array[i] + } + } + v1alpha1OptionalArray.Array = stringList + pV1alpha1OptionalArray = &v1alpha1OptionalArray + } + return pV1alpha1OptionalArray +} +func (c *ConverterImpl) pV1alpha1OptionalArrayToPV1alpha1OptionalArray2(source *OptionalArray) *v1alpha1.OptionalArray { + var pV1alpha1OptionalArray *v1alpha1.OptionalArray + if source != nil { + var v1alpha1OptionalArray v1alpha1.OptionalArray + var stringList []string + if (*source).Array != nil { + stringList = make([]string, len((*source).Array)) + for i := 0; i < len((*source).Array); i++ { + stringList[i] = (*source).Array[i] + } + } + v1alpha1OptionalArray.Array = stringList + pV1alpha1OptionalArray = &v1alpha1OptionalArray + } + return pV1alpha1OptionalArray +} +func (c *ConverterImpl) pV1alpha1OptionalMapToPV1alpha1OptionalMap(source *v1alpha1.OptionalMap) *OptionalMap { + var pV1alpha1OptionalMap *OptionalMap + if source != nil { + var v1alpha1OptionalMap OptionalMap + mapStringString := make(map[string]string, len((*source).Map)) + for key, value := range (*source).Map { + mapStringString[key] = value + } + v1alpha1OptionalMap.Map = mapStringString + pV1alpha1OptionalMap = &v1alpha1OptionalMap + } + return pV1alpha1OptionalMap +} +func (c *ConverterImpl) pV1alpha1OptionalMapToPV1alpha1OptionalMap2(source *OptionalMap) *v1alpha1.OptionalMap { + var pV1alpha1OptionalMap *v1alpha1.OptionalMap + if source != nil { + var v1alpha1OptionalMap v1alpha1.OptionalMap + mapStringString := make(map[string]string, len((*source).Map)) + for key, value := range (*source).Map { + mapStringString[key] = value + } + v1alpha1OptionalMap.Map = mapStringString + pV1alpha1OptionalMap = &v1alpha1OptionalMap + } + return pV1alpha1OptionalMap +} +func (c *ConverterImpl) pV1alpha1PluginGeneratorToPV1alpha1PluginGenerator(source *v1alpha1.PluginGenerator) *PluginGenerator { + var pV1alpha1PluginGenerator *PluginGenerator + if source != nil { + var v1alpha1PluginGenerator PluginGenerator + v1alpha1PluginGenerator.ConfigMapRef = c.v1alpha1PluginConfigMapRefToV1alpha1PluginConfigMapRef((*source).ConfigMapRef) + v1alpha1PluginGenerator.Input = c.v1alpha1PluginInputToV1alpha1PluginInput((*source).Input) + var pInt64 *int64 + if (*source).RequeueAfterSeconds != nil { + xint64 := *(*source).RequeueAfterSeconds + pInt64 = &xint64 + } + v1alpha1PluginGenerator.RequeueAfterSeconds = pInt64 + v1alpha1PluginGenerator.Template = c.v1alpha1ApplicationSetTemplateToV1alpha1ApplicationSetTemplate((*source).Template) + mapStringString := make(map[string]string, len((*source).Values)) + for key, value := range (*source).Values { + mapStringString[key] = value + } + v1alpha1PluginGenerator.Values = mapStringString + pV1alpha1PluginGenerator = &v1alpha1PluginGenerator + } + return pV1alpha1PluginGenerator +} +func (c *ConverterImpl) pV1alpha1PluginGeneratorToPV1alpha1PluginGenerator2(source *PluginGenerator) *v1alpha1.PluginGenerator { + var pV1alpha1PluginGenerator *v1alpha1.PluginGenerator + if source != nil { + var v1alpha1PluginGenerator v1alpha1.PluginGenerator + v1alpha1PluginGenerator.ConfigMapRef = c.v1alpha1PluginConfigMapRefToV1alpha1PluginConfigMapRef2((*source).ConfigMapRef) + v1alpha1PluginGenerator.Input = c.v1alpha1PluginInputToV1alpha1PluginInput2((*source).Input) + var pInt64 *int64 + if (*source).RequeueAfterSeconds != nil { + xint64 := *(*source).RequeueAfterSeconds + pInt64 = &xint64 + } + v1alpha1PluginGenerator.RequeueAfterSeconds = pInt64 + v1alpha1PluginGenerator.Template = c.v1alpha1ApplicationSetTemplateToV1alpha1ApplicationSetTemplate2((*source).Template) + mapStringString := make(map[string]string, len((*source).Values)) + for key, value := range (*source).Values { + mapStringString[key] = value + } + v1alpha1PluginGenerator.Values = mapStringString + pV1alpha1PluginGenerator = &v1alpha1PluginGenerator + } + return pV1alpha1PluginGenerator +} +func (c *ConverterImpl) pV1alpha1PullRequestGeneratorAzureDevOpsToPV1alpha1PullRequestGeneratorAzureDevOps(source *v1alpha1.PullRequestGeneratorAzureDevOps) *PullRequestGeneratorAzureDevOps { + var pV1alpha1PullRequestGeneratorAzureDevOps *PullRequestGeneratorAzureDevOps + if source != nil { + var v1alpha1PullRequestGeneratorAzureDevOps PullRequestGeneratorAzureDevOps + v1alpha1PullRequestGeneratorAzureDevOps.Organization = (*source).Organization + v1alpha1PullRequestGeneratorAzureDevOps.Project = (*source).Project + v1alpha1PullRequestGeneratorAzureDevOps.Repo = (*source).Repo + v1alpha1PullRequestGeneratorAzureDevOps.API = (*source).API + v1alpha1PullRequestGeneratorAzureDevOps.TokenRef = c.pV1alpha1SecretRefToPV1alpha1SecretRef((*source).TokenRef) + var stringList []string + if (*source).Labels != nil { + stringList = make([]string, len((*source).Labels)) + for i := 0; i < len((*source).Labels); i++ { + stringList[i] = (*source).Labels[i] + } + } + v1alpha1PullRequestGeneratorAzureDevOps.Labels = stringList + pV1alpha1PullRequestGeneratorAzureDevOps = &v1alpha1PullRequestGeneratorAzureDevOps + } + return pV1alpha1PullRequestGeneratorAzureDevOps +} +func (c *ConverterImpl) pV1alpha1PullRequestGeneratorAzureDevOpsToPV1alpha1PullRequestGeneratorAzureDevOps2(source *PullRequestGeneratorAzureDevOps) *v1alpha1.PullRequestGeneratorAzureDevOps { + var pV1alpha1PullRequestGeneratorAzureDevOps *v1alpha1.PullRequestGeneratorAzureDevOps + if source != nil { + var v1alpha1PullRequestGeneratorAzureDevOps v1alpha1.PullRequestGeneratorAzureDevOps + v1alpha1PullRequestGeneratorAzureDevOps.Organization = (*source).Organization + v1alpha1PullRequestGeneratorAzureDevOps.Project = (*source).Project + v1alpha1PullRequestGeneratorAzureDevOps.Repo = (*source).Repo + v1alpha1PullRequestGeneratorAzureDevOps.API = (*source).API + v1alpha1PullRequestGeneratorAzureDevOps.TokenRef = c.pV1alpha1SecretRefToPV1alpha1SecretRef2((*source).TokenRef) + var stringList []string + if (*source).Labels != nil { + stringList = make([]string, len((*source).Labels)) + for i := 0; i < len((*source).Labels); i++ { + stringList[i] = (*source).Labels[i] + } + } + v1alpha1PullRequestGeneratorAzureDevOps.Labels = stringList + pV1alpha1PullRequestGeneratorAzureDevOps = &v1alpha1PullRequestGeneratorAzureDevOps + } + return pV1alpha1PullRequestGeneratorAzureDevOps +} +func (c *ConverterImpl) pV1alpha1PullRequestGeneratorBitbucketServerToPV1alpha1PullRequestGeneratorBitbucketServer(source *v1alpha1.PullRequestGeneratorBitbucketServer) *PullRequestGeneratorBitbucketServer { + var pV1alpha1PullRequestGeneratorBitbucketServer *PullRequestGeneratorBitbucketServer + if source != nil { + var v1alpha1PullRequestGeneratorBitbucketServer PullRequestGeneratorBitbucketServer + v1alpha1PullRequestGeneratorBitbucketServer.Project = (*source).Project + v1alpha1PullRequestGeneratorBitbucketServer.Repo = (*source).Repo + v1alpha1PullRequestGeneratorBitbucketServer.API = (*source).API + v1alpha1PullRequestGeneratorBitbucketServer.BasicAuth = c.pV1alpha1BasicAuthBitbucketServerToPV1alpha1BasicAuthBitbucketServer((*source).BasicAuth) + pV1alpha1PullRequestGeneratorBitbucketServer = &v1alpha1PullRequestGeneratorBitbucketServer + } + return pV1alpha1PullRequestGeneratorBitbucketServer +} +func (c *ConverterImpl) pV1alpha1PullRequestGeneratorBitbucketServerToPV1alpha1PullRequestGeneratorBitbucketServer2(source *PullRequestGeneratorBitbucketServer) *v1alpha1.PullRequestGeneratorBitbucketServer { + var pV1alpha1PullRequestGeneratorBitbucketServer *v1alpha1.PullRequestGeneratorBitbucketServer + if source != nil { + var v1alpha1PullRequestGeneratorBitbucketServer v1alpha1.PullRequestGeneratorBitbucketServer + v1alpha1PullRequestGeneratorBitbucketServer.Project = (*source).Project + v1alpha1PullRequestGeneratorBitbucketServer.Repo = (*source).Repo + v1alpha1PullRequestGeneratorBitbucketServer.API = (*source).API + v1alpha1PullRequestGeneratorBitbucketServer.BasicAuth = c.pV1alpha1BasicAuthBitbucketServerToPV1alpha1BasicAuthBitbucketServer2((*source).BasicAuth) + pV1alpha1PullRequestGeneratorBitbucketServer = &v1alpha1PullRequestGeneratorBitbucketServer + } + return pV1alpha1PullRequestGeneratorBitbucketServer +} +func (c *ConverterImpl) pV1alpha1PullRequestGeneratorBitbucketToPV1alpha1PullRequestGeneratorBitbucket(source *v1alpha1.PullRequestGeneratorBitbucket) *PullRequestGeneratorBitbucket { + var pV1alpha1PullRequestGeneratorBitbucket *PullRequestGeneratorBitbucket + if source != nil { + var v1alpha1PullRequestGeneratorBitbucket PullRequestGeneratorBitbucket + v1alpha1PullRequestGeneratorBitbucket.Owner = (*source).Owner + v1alpha1PullRequestGeneratorBitbucket.Repo = (*source).Repo + v1alpha1PullRequestGeneratorBitbucket.API = (*source).API + v1alpha1PullRequestGeneratorBitbucket.BasicAuth = c.pV1alpha1BasicAuthBitbucketServerToPV1alpha1BasicAuthBitbucketServer((*source).BasicAuth) + v1alpha1PullRequestGeneratorBitbucket.BearerToken = c.pV1alpha1BearerTokenBitbucketCloudToPV1alpha1BearerTokenBitbucketCloud((*source).BearerToken) + pV1alpha1PullRequestGeneratorBitbucket = &v1alpha1PullRequestGeneratorBitbucket + } + return pV1alpha1PullRequestGeneratorBitbucket +} +func (c *ConverterImpl) pV1alpha1PullRequestGeneratorBitbucketToPV1alpha1PullRequestGeneratorBitbucket2(source *PullRequestGeneratorBitbucket) *v1alpha1.PullRequestGeneratorBitbucket { + var pV1alpha1PullRequestGeneratorBitbucket *v1alpha1.PullRequestGeneratorBitbucket + if source != nil { + var v1alpha1PullRequestGeneratorBitbucket v1alpha1.PullRequestGeneratorBitbucket + v1alpha1PullRequestGeneratorBitbucket.Owner = (*source).Owner + v1alpha1PullRequestGeneratorBitbucket.Repo = (*source).Repo + v1alpha1PullRequestGeneratorBitbucket.API = (*source).API + v1alpha1PullRequestGeneratorBitbucket.BasicAuth = c.pV1alpha1BasicAuthBitbucketServerToPV1alpha1BasicAuthBitbucketServer2((*source).BasicAuth) + v1alpha1PullRequestGeneratorBitbucket.BearerToken = c.pV1alpha1BearerTokenBitbucketCloudToPV1alpha1BearerTokenBitbucketCloud2((*source).BearerToken) + pV1alpha1PullRequestGeneratorBitbucket = &v1alpha1PullRequestGeneratorBitbucket + } + return pV1alpha1PullRequestGeneratorBitbucket +} +func (c *ConverterImpl) pV1alpha1PullRequestGeneratorGitLabToPV1alpha1PullRequestGeneratorGitLab(source *v1alpha1.PullRequestGeneratorGitLab) *PullRequestGeneratorGitLab { + var pV1alpha1PullRequestGeneratorGitLab *PullRequestGeneratorGitLab + if source != nil { + var v1alpha1PullRequestGeneratorGitLab PullRequestGeneratorGitLab + v1alpha1PullRequestGeneratorGitLab.Project = (*source).Project + v1alpha1PullRequestGeneratorGitLab.API = (*source).API + v1alpha1PullRequestGeneratorGitLab.TokenRef = c.pV1alpha1SecretRefToPV1alpha1SecretRef((*source).TokenRef) + var stringList []string + if (*source).Labels != nil { + stringList = make([]string, len((*source).Labels)) + for i := 0; i < len((*source).Labels); i++ { + stringList[i] = (*source).Labels[i] + } + } + v1alpha1PullRequestGeneratorGitLab.Labels = stringList + v1alpha1PullRequestGeneratorGitLab.PullRequestState = (*source).PullRequestState + v1alpha1PullRequestGeneratorGitLab.Insecure = (*source).Insecure + pV1alpha1PullRequestGeneratorGitLab = &v1alpha1PullRequestGeneratorGitLab + } + return pV1alpha1PullRequestGeneratorGitLab +} +func (c *ConverterImpl) pV1alpha1PullRequestGeneratorGitLabToPV1alpha1PullRequestGeneratorGitLab2(source *PullRequestGeneratorGitLab) *v1alpha1.PullRequestGeneratorGitLab { + var pV1alpha1PullRequestGeneratorGitLab *v1alpha1.PullRequestGeneratorGitLab + if source != nil { + var v1alpha1PullRequestGeneratorGitLab v1alpha1.PullRequestGeneratorGitLab + v1alpha1PullRequestGeneratorGitLab.Project = (*source).Project + v1alpha1PullRequestGeneratorGitLab.API = (*source).API + v1alpha1PullRequestGeneratorGitLab.TokenRef = c.pV1alpha1SecretRefToPV1alpha1SecretRef2((*source).TokenRef) + var stringList []string + if (*source).Labels != nil { + stringList = make([]string, len((*source).Labels)) + for i := 0; i < len((*source).Labels); i++ { + stringList[i] = (*source).Labels[i] + } + } + v1alpha1PullRequestGeneratorGitLab.Labels = stringList + v1alpha1PullRequestGeneratorGitLab.PullRequestState = (*source).PullRequestState + v1alpha1PullRequestGeneratorGitLab.Insecure = (*source).Insecure + pV1alpha1PullRequestGeneratorGitLab = &v1alpha1PullRequestGeneratorGitLab + } + return pV1alpha1PullRequestGeneratorGitLab +} +func (c *ConverterImpl) pV1alpha1PullRequestGeneratorGiteaToPV1alpha1PullRequestGeneratorGitea(source *v1alpha1.PullRequestGeneratorGitea) *PullRequestGeneratorGitea { + var pV1alpha1PullRequestGeneratorGitea *PullRequestGeneratorGitea + if source != nil { + var v1alpha1PullRequestGeneratorGitea PullRequestGeneratorGitea + v1alpha1PullRequestGeneratorGitea.Owner = (*source).Owner + v1alpha1PullRequestGeneratorGitea.Repo = (*source).Repo + v1alpha1PullRequestGeneratorGitea.API = (*source).API + v1alpha1PullRequestGeneratorGitea.TokenRef = c.pV1alpha1SecretRefToPV1alpha1SecretRef((*source).TokenRef) + v1alpha1PullRequestGeneratorGitea.Insecure = (*source).Insecure + pV1alpha1PullRequestGeneratorGitea = &v1alpha1PullRequestGeneratorGitea + } + return pV1alpha1PullRequestGeneratorGitea +} +func (c *ConverterImpl) pV1alpha1PullRequestGeneratorGiteaToPV1alpha1PullRequestGeneratorGitea2(source *PullRequestGeneratorGitea) *v1alpha1.PullRequestGeneratorGitea { + var pV1alpha1PullRequestGeneratorGitea *v1alpha1.PullRequestGeneratorGitea + if source != nil { + var v1alpha1PullRequestGeneratorGitea v1alpha1.PullRequestGeneratorGitea + v1alpha1PullRequestGeneratorGitea.Owner = (*source).Owner + v1alpha1PullRequestGeneratorGitea.Repo = (*source).Repo + v1alpha1PullRequestGeneratorGitea.API = (*source).API + v1alpha1PullRequestGeneratorGitea.TokenRef = c.pV1alpha1SecretRefToPV1alpha1SecretRef2((*source).TokenRef) + v1alpha1PullRequestGeneratorGitea.Insecure = (*source).Insecure + pV1alpha1PullRequestGeneratorGitea = &v1alpha1PullRequestGeneratorGitea + } + return pV1alpha1PullRequestGeneratorGitea +} +func (c *ConverterImpl) pV1alpha1PullRequestGeneratorGithubToPV1alpha1PullRequestGeneratorGithub(source *v1alpha1.PullRequestGeneratorGithub) *PullRequestGeneratorGithub { + var pV1alpha1PullRequestGeneratorGithub *PullRequestGeneratorGithub + if source != nil { + var v1alpha1PullRequestGeneratorGithub PullRequestGeneratorGithub + v1alpha1PullRequestGeneratorGithub.Owner = (*source).Owner + v1alpha1PullRequestGeneratorGithub.Repo = (*source).Repo + v1alpha1PullRequestGeneratorGithub.API = (*source).API + v1alpha1PullRequestGeneratorGithub.TokenRef = c.pV1alpha1SecretRefToPV1alpha1SecretRef((*source).TokenRef) + v1alpha1PullRequestGeneratorGithub.AppSecretName = (*source).AppSecretName + var stringList []string + if (*source).Labels != nil { + stringList = make([]string, len((*source).Labels)) + for i := 0; i < len((*source).Labels); i++ { + stringList[i] = (*source).Labels[i] + } + } + v1alpha1PullRequestGeneratorGithub.Labels = stringList + pV1alpha1PullRequestGeneratorGithub = &v1alpha1PullRequestGeneratorGithub + } + return pV1alpha1PullRequestGeneratorGithub +} +func (c *ConverterImpl) pV1alpha1PullRequestGeneratorGithubToPV1alpha1PullRequestGeneratorGithub2(source *PullRequestGeneratorGithub) *v1alpha1.PullRequestGeneratorGithub { + var pV1alpha1PullRequestGeneratorGithub *v1alpha1.PullRequestGeneratorGithub + if source != nil { + var v1alpha1PullRequestGeneratorGithub v1alpha1.PullRequestGeneratorGithub + v1alpha1PullRequestGeneratorGithub.Owner = (*source).Owner + v1alpha1PullRequestGeneratorGithub.Repo = (*source).Repo + v1alpha1PullRequestGeneratorGithub.API = (*source).API + v1alpha1PullRequestGeneratorGithub.TokenRef = c.pV1alpha1SecretRefToPV1alpha1SecretRef2((*source).TokenRef) + v1alpha1PullRequestGeneratorGithub.AppSecretName = (*source).AppSecretName + var stringList []string + if (*source).Labels != nil { + stringList = make([]string, len((*source).Labels)) + for i := 0; i < len((*source).Labels); i++ { + stringList[i] = (*source).Labels[i] + } + } + v1alpha1PullRequestGeneratorGithub.Labels = stringList + pV1alpha1PullRequestGeneratorGithub = &v1alpha1PullRequestGeneratorGithub + } + return pV1alpha1PullRequestGeneratorGithub +} +func (c *ConverterImpl) pV1alpha1PullRequestGeneratorToPV1alpha1PullRequestGenerator(source *v1alpha1.PullRequestGenerator) *PullRequestGenerator { + var pV1alpha1PullRequestGenerator *PullRequestGenerator + if source != nil { + var v1alpha1PullRequestGenerator PullRequestGenerator + v1alpha1PullRequestGenerator.Github = c.pV1alpha1PullRequestGeneratorGithubToPV1alpha1PullRequestGeneratorGithub((*source).Github) + v1alpha1PullRequestGenerator.GitLab = c.pV1alpha1PullRequestGeneratorGitLabToPV1alpha1PullRequestGeneratorGitLab((*source).GitLab) + v1alpha1PullRequestGenerator.Gitea = c.pV1alpha1PullRequestGeneratorGiteaToPV1alpha1PullRequestGeneratorGitea((*source).Gitea) + v1alpha1PullRequestGenerator.BitbucketServer = c.pV1alpha1PullRequestGeneratorBitbucketServerToPV1alpha1PullRequestGeneratorBitbucketServer((*source).BitbucketServer) + var v1alpha1PullRequestGeneratorFilterList []PullRequestGeneratorFilter + if (*source).Filters != nil { + v1alpha1PullRequestGeneratorFilterList = make([]PullRequestGeneratorFilter, len((*source).Filters)) + for i := 0; i < len((*source).Filters); i++ { + v1alpha1PullRequestGeneratorFilterList[i] = c.v1alpha1PullRequestGeneratorFilterToV1alpha1PullRequestGeneratorFilter((*source).Filters[i]) + } + } + v1alpha1PullRequestGenerator.Filters = v1alpha1PullRequestGeneratorFilterList + var pInt64 *int64 + if (*source).RequeueAfterSeconds != nil { + xint64 := *(*source).RequeueAfterSeconds + pInt64 = &xint64 + } + v1alpha1PullRequestGenerator.RequeueAfterSeconds = pInt64 + v1alpha1PullRequestGenerator.Template = c.v1alpha1ApplicationSetTemplateToV1alpha1ApplicationSetTemplate((*source).Template) + v1alpha1PullRequestGenerator.Bitbucket = c.pV1alpha1PullRequestGeneratorBitbucketToPV1alpha1PullRequestGeneratorBitbucket((*source).Bitbucket) + v1alpha1PullRequestGenerator.AzureDevOps = c.pV1alpha1PullRequestGeneratorAzureDevOpsToPV1alpha1PullRequestGeneratorAzureDevOps((*source).AzureDevOps) + pV1alpha1PullRequestGenerator = &v1alpha1PullRequestGenerator + } + return pV1alpha1PullRequestGenerator +} +func (c *ConverterImpl) pV1alpha1PullRequestGeneratorToPV1alpha1PullRequestGenerator2(source *PullRequestGenerator) *v1alpha1.PullRequestGenerator { + var pV1alpha1PullRequestGenerator *v1alpha1.PullRequestGenerator + if source != nil { + var v1alpha1PullRequestGenerator v1alpha1.PullRequestGenerator + v1alpha1PullRequestGenerator.Github = c.pV1alpha1PullRequestGeneratorGithubToPV1alpha1PullRequestGeneratorGithub2((*source).Github) + v1alpha1PullRequestGenerator.GitLab = c.pV1alpha1PullRequestGeneratorGitLabToPV1alpha1PullRequestGeneratorGitLab2((*source).GitLab) + v1alpha1PullRequestGenerator.Gitea = c.pV1alpha1PullRequestGeneratorGiteaToPV1alpha1PullRequestGeneratorGitea2((*source).Gitea) + v1alpha1PullRequestGenerator.BitbucketServer = c.pV1alpha1PullRequestGeneratorBitbucketServerToPV1alpha1PullRequestGeneratorBitbucketServer2((*source).BitbucketServer) + var v1alpha1PullRequestGeneratorFilterList []v1alpha1.PullRequestGeneratorFilter + if (*source).Filters != nil { + v1alpha1PullRequestGeneratorFilterList = make([]v1alpha1.PullRequestGeneratorFilter, len((*source).Filters)) + for i := 0; i < len((*source).Filters); i++ { + v1alpha1PullRequestGeneratorFilterList[i] = c.v1alpha1PullRequestGeneratorFilterToV1alpha1PullRequestGeneratorFilter2((*source).Filters[i]) + } + } + v1alpha1PullRequestGenerator.Filters = v1alpha1PullRequestGeneratorFilterList + var pInt64 *int64 + if (*source).RequeueAfterSeconds != nil { + xint64 := *(*source).RequeueAfterSeconds + pInt64 = &xint64 + } + v1alpha1PullRequestGenerator.RequeueAfterSeconds = pInt64 + v1alpha1PullRequestGenerator.Template = c.v1alpha1ApplicationSetTemplateToV1alpha1ApplicationSetTemplate2((*source).Template) + v1alpha1PullRequestGenerator.Bitbucket = c.pV1alpha1PullRequestGeneratorBitbucketToPV1alpha1PullRequestGeneratorBitbucket2((*source).Bitbucket) + v1alpha1PullRequestGenerator.AzureDevOps = c.pV1alpha1PullRequestGeneratorAzureDevOpsToPV1alpha1PullRequestGeneratorAzureDevOps2((*source).AzureDevOps) + pV1alpha1PullRequestGenerator = &v1alpha1PullRequestGenerator + } + return pV1alpha1PullRequestGenerator +} +func (c *ConverterImpl) pV1alpha1RetryStrategyToPV1alpha1RetryStrategy(source *v1alpha1.RetryStrategy) *RetryStrategy { + var pV1alpha1RetryStrategy *RetryStrategy + if source != nil { + var v1alpha1RetryStrategy RetryStrategy + pInt64 := (*source).Limit + v1alpha1RetryStrategy.Limit = &pInt64 + v1alpha1RetryStrategy.Backoff = c.pV1alpha1BackoffToPV1alpha1Backoff((*source).Backoff) + pV1alpha1RetryStrategy = &v1alpha1RetryStrategy + } + return pV1alpha1RetryStrategy +} +func (c *ConverterImpl) pV1alpha1RetryStrategyToPV1alpha1RetryStrategy2(source *RetryStrategy) *v1alpha1.RetryStrategy { + var pV1alpha1RetryStrategy *v1alpha1.RetryStrategy + if source != nil { + var v1alpha1RetryStrategy v1alpha1.RetryStrategy + var xint64 int64 + if (*source).Limit != nil { + xint64 = *(*source).Limit + } + v1alpha1RetryStrategy.Limit = xint64 + v1alpha1RetryStrategy.Backoff = c.pV1alpha1BackoffToPV1alpha1Backoff2((*source).Backoff) + pV1alpha1RetryStrategy = &v1alpha1RetryStrategy + } + return pV1alpha1RetryStrategy +} +func (c *ConverterImpl) pV1alpha1SCMProviderGeneratorAWSCodeCommitToPV1alpha1SCMProviderGeneratorAWSCodeCommit(source *v1alpha1.SCMProviderGeneratorAWSCodeCommit) *SCMProviderGeneratorAWSCodeCommit { + var pV1alpha1SCMProviderGeneratorAWSCodeCommit *SCMProviderGeneratorAWSCodeCommit + if source != nil { + var v1alpha1SCMProviderGeneratorAWSCodeCommit SCMProviderGeneratorAWSCodeCommit + var pV1alpha1TagFilterList []*TagFilter + if (*source).TagFilters != nil { + pV1alpha1TagFilterList = make([]*TagFilter, len((*source).TagFilters)) + for i := 0; i < len((*source).TagFilters); i++ { + pV1alpha1TagFilterList[i] = c.pV1alpha1TagFilterToPV1alpha1TagFilter((*source).TagFilters[i]) + } + } + v1alpha1SCMProviderGeneratorAWSCodeCommit.TagFilters = pV1alpha1TagFilterList + v1alpha1SCMProviderGeneratorAWSCodeCommit.Role = (*source).Role + v1alpha1SCMProviderGeneratorAWSCodeCommit.Region = (*source).Region + v1alpha1SCMProviderGeneratorAWSCodeCommit.AllBranches = (*source).AllBranches + pV1alpha1SCMProviderGeneratorAWSCodeCommit = &v1alpha1SCMProviderGeneratorAWSCodeCommit + } + return pV1alpha1SCMProviderGeneratorAWSCodeCommit +} +func (c *ConverterImpl) pV1alpha1SCMProviderGeneratorAWSCodeCommitToPV1alpha1SCMProviderGeneratorAWSCodeCommit2(source *SCMProviderGeneratorAWSCodeCommit) *v1alpha1.SCMProviderGeneratorAWSCodeCommit { + var pV1alpha1SCMProviderGeneratorAWSCodeCommit *v1alpha1.SCMProviderGeneratorAWSCodeCommit + if source != nil { + var v1alpha1SCMProviderGeneratorAWSCodeCommit v1alpha1.SCMProviderGeneratorAWSCodeCommit + var pV1alpha1TagFilterList []*v1alpha1.TagFilter + if (*source).TagFilters != nil { + pV1alpha1TagFilterList = make([]*v1alpha1.TagFilter, len((*source).TagFilters)) + for i := 0; i < len((*source).TagFilters); i++ { + pV1alpha1TagFilterList[i] = c.pV1alpha1TagFilterToPV1alpha1TagFilter2((*source).TagFilters[i]) + } + } + v1alpha1SCMProviderGeneratorAWSCodeCommit.TagFilters = pV1alpha1TagFilterList + v1alpha1SCMProviderGeneratorAWSCodeCommit.Role = (*source).Role + v1alpha1SCMProviderGeneratorAWSCodeCommit.Region = (*source).Region + v1alpha1SCMProviderGeneratorAWSCodeCommit.AllBranches = (*source).AllBranches + pV1alpha1SCMProviderGeneratorAWSCodeCommit = &v1alpha1SCMProviderGeneratorAWSCodeCommit + } + return pV1alpha1SCMProviderGeneratorAWSCodeCommit +} +func (c *ConverterImpl) pV1alpha1SCMProviderGeneratorAzureDevOpsToPV1alpha1SCMProviderGeneratorAzureDevOps(source *v1alpha1.SCMProviderGeneratorAzureDevOps) *SCMProviderGeneratorAzureDevOps { + var pV1alpha1SCMProviderGeneratorAzureDevOps *SCMProviderGeneratorAzureDevOps + if source != nil { + var v1alpha1SCMProviderGeneratorAzureDevOps SCMProviderGeneratorAzureDevOps + v1alpha1SCMProviderGeneratorAzureDevOps.Organization = (*source).Organization + v1alpha1SCMProviderGeneratorAzureDevOps.API = (*source).API + v1alpha1SCMProviderGeneratorAzureDevOps.TeamProject = (*source).TeamProject + v1alpha1SCMProviderGeneratorAzureDevOps.AccessTokenRef = c.pV1alpha1SecretRefToPV1alpha1SecretRef((*source).AccessTokenRef) + v1alpha1SCMProviderGeneratorAzureDevOps.AllBranches = (*source).AllBranches + pV1alpha1SCMProviderGeneratorAzureDevOps = &v1alpha1SCMProviderGeneratorAzureDevOps + } + return pV1alpha1SCMProviderGeneratorAzureDevOps +} +func (c *ConverterImpl) pV1alpha1SCMProviderGeneratorAzureDevOpsToPV1alpha1SCMProviderGeneratorAzureDevOps2(source *SCMProviderGeneratorAzureDevOps) *v1alpha1.SCMProviderGeneratorAzureDevOps { + var pV1alpha1SCMProviderGeneratorAzureDevOps *v1alpha1.SCMProviderGeneratorAzureDevOps + if source != nil { + var v1alpha1SCMProviderGeneratorAzureDevOps v1alpha1.SCMProviderGeneratorAzureDevOps + v1alpha1SCMProviderGeneratorAzureDevOps.Organization = (*source).Organization + v1alpha1SCMProviderGeneratorAzureDevOps.API = (*source).API + v1alpha1SCMProviderGeneratorAzureDevOps.TeamProject = (*source).TeamProject + v1alpha1SCMProviderGeneratorAzureDevOps.AccessTokenRef = c.pV1alpha1SecretRefToPV1alpha1SecretRef2((*source).AccessTokenRef) + v1alpha1SCMProviderGeneratorAzureDevOps.AllBranches = (*source).AllBranches + pV1alpha1SCMProviderGeneratorAzureDevOps = &v1alpha1SCMProviderGeneratorAzureDevOps + } + return pV1alpha1SCMProviderGeneratorAzureDevOps +} +func (c *ConverterImpl) pV1alpha1SCMProviderGeneratorBitbucketServerToPV1alpha1SCMProviderGeneratorBitbucketServer(source *v1alpha1.SCMProviderGeneratorBitbucketServer) *SCMProviderGeneratorBitbucketServer { + var pV1alpha1SCMProviderGeneratorBitbucketServer *SCMProviderGeneratorBitbucketServer + if source != nil { + var v1alpha1SCMProviderGeneratorBitbucketServer SCMProviderGeneratorBitbucketServer + v1alpha1SCMProviderGeneratorBitbucketServer.Project = (*source).Project + v1alpha1SCMProviderGeneratorBitbucketServer.API = (*source).API + v1alpha1SCMProviderGeneratorBitbucketServer.BasicAuth = c.pV1alpha1BasicAuthBitbucketServerToPV1alpha1BasicAuthBitbucketServer((*source).BasicAuth) + v1alpha1SCMProviderGeneratorBitbucketServer.AllBranches = (*source).AllBranches + pV1alpha1SCMProviderGeneratorBitbucketServer = &v1alpha1SCMProviderGeneratorBitbucketServer + } + return pV1alpha1SCMProviderGeneratorBitbucketServer +} +func (c *ConverterImpl) pV1alpha1SCMProviderGeneratorBitbucketServerToPV1alpha1SCMProviderGeneratorBitbucketServer2(source *SCMProviderGeneratorBitbucketServer) *v1alpha1.SCMProviderGeneratorBitbucketServer { + var pV1alpha1SCMProviderGeneratorBitbucketServer *v1alpha1.SCMProviderGeneratorBitbucketServer + if source != nil { + var v1alpha1SCMProviderGeneratorBitbucketServer v1alpha1.SCMProviderGeneratorBitbucketServer + v1alpha1SCMProviderGeneratorBitbucketServer.Project = (*source).Project + v1alpha1SCMProviderGeneratorBitbucketServer.API = (*source).API + v1alpha1SCMProviderGeneratorBitbucketServer.BasicAuth = c.pV1alpha1BasicAuthBitbucketServerToPV1alpha1BasicAuthBitbucketServer2((*source).BasicAuth) + v1alpha1SCMProviderGeneratorBitbucketServer.AllBranches = (*source).AllBranches + pV1alpha1SCMProviderGeneratorBitbucketServer = &v1alpha1SCMProviderGeneratorBitbucketServer + } + return pV1alpha1SCMProviderGeneratorBitbucketServer +} +func (c *ConverterImpl) pV1alpha1SCMProviderGeneratorBitbucketToPV1alpha1SCMProviderGeneratorBitbucket(source *v1alpha1.SCMProviderGeneratorBitbucket) *SCMProviderGeneratorBitbucket { + var pV1alpha1SCMProviderGeneratorBitbucket *SCMProviderGeneratorBitbucket + if source != nil { + var v1alpha1SCMProviderGeneratorBitbucket SCMProviderGeneratorBitbucket + v1alpha1SCMProviderGeneratorBitbucket.Owner = (*source).Owner + v1alpha1SCMProviderGeneratorBitbucket.User = (*source).User + v1alpha1SCMProviderGeneratorBitbucket.AppPasswordRef = c.pV1alpha1SecretRefToPV1alpha1SecretRef((*source).AppPasswordRef) + v1alpha1SCMProviderGeneratorBitbucket.AllBranches = (*source).AllBranches + pV1alpha1SCMProviderGeneratorBitbucket = &v1alpha1SCMProviderGeneratorBitbucket + } + return pV1alpha1SCMProviderGeneratorBitbucket +} +func (c *ConverterImpl) pV1alpha1SCMProviderGeneratorBitbucketToPV1alpha1SCMProviderGeneratorBitbucket2(source *SCMProviderGeneratorBitbucket) *v1alpha1.SCMProviderGeneratorBitbucket { + var pV1alpha1SCMProviderGeneratorBitbucket *v1alpha1.SCMProviderGeneratorBitbucket + if source != nil { + var v1alpha1SCMProviderGeneratorBitbucket v1alpha1.SCMProviderGeneratorBitbucket + v1alpha1SCMProviderGeneratorBitbucket.Owner = (*source).Owner + v1alpha1SCMProviderGeneratorBitbucket.User = (*source).User + v1alpha1SCMProviderGeneratorBitbucket.AppPasswordRef = c.pV1alpha1SecretRefToPV1alpha1SecretRef2((*source).AppPasswordRef) + v1alpha1SCMProviderGeneratorBitbucket.AllBranches = (*source).AllBranches + pV1alpha1SCMProviderGeneratorBitbucket = &v1alpha1SCMProviderGeneratorBitbucket + } + return pV1alpha1SCMProviderGeneratorBitbucket +} +func (c *ConverterImpl) pV1alpha1SCMProviderGeneratorGiteaToPV1alpha1SCMProviderGeneratorGitea(source *v1alpha1.SCMProviderGeneratorGitea) *SCMProviderGeneratorGitea { + var pV1alpha1SCMProviderGeneratorGitea *SCMProviderGeneratorGitea + if source != nil { + var v1alpha1SCMProviderGeneratorGitea SCMProviderGeneratorGitea + v1alpha1SCMProviderGeneratorGitea.Owner = (*source).Owner + v1alpha1SCMProviderGeneratorGitea.API = (*source).API + v1alpha1SCMProviderGeneratorGitea.TokenRef = c.pV1alpha1SecretRefToPV1alpha1SecretRef((*source).TokenRef) + v1alpha1SCMProviderGeneratorGitea.AllBranches = (*source).AllBranches + v1alpha1SCMProviderGeneratorGitea.Insecure = (*source).Insecure + pV1alpha1SCMProviderGeneratorGitea = &v1alpha1SCMProviderGeneratorGitea + } + return pV1alpha1SCMProviderGeneratorGitea +} +func (c *ConverterImpl) pV1alpha1SCMProviderGeneratorGiteaToPV1alpha1SCMProviderGeneratorGitea2(source *SCMProviderGeneratorGitea) *v1alpha1.SCMProviderGeneratorGitea { + var pV1alpha1SCMProviderGeneratorGitea *v1alpha1.SCMProviderGeneratorGitea + if source != nil { + var v1alpha1SCMProviderGeneratorGitea v1alpha1.SCMProviderGeneratorGitea + v1alpha1SCMProviderGeneratorGitea.Owner = (*source).Owner + v1alpha1SCMProviderGeneratorGitea.API = (*source).API + v1alpha1SCMProviderGeneratorGitea.TokenRef = c.pV1alpha1SecretRefToPV1alpha1SecretRef2((*source).TokenRef) + v1alpha1SCMProviderGeneratorGitea.AllBranches = (*source).AllBranches + v1alpha1SCMProviderGeneratorGitea.Insecure = (*source).Insecure + pV1alpha1SCMProviderGeneratorGitea = &v1alpha1SCMProviderGeneratorGitea + } + return pV1alpha1SCMProviderGeneratorGitea +} +func (c *ConverterImpl) pV1alpha1SCMProviderGeneratorGithubToPV1alpha1SCMProviderGeneratorGithub(source *v1alpha1.SCMProviderGeneratorGithub) *SCMProviderGeneratorGithub { + var pV1alpha1SCMProviderGeneratorGithub *SCMProviderGeneratorGithub + if source != nil { + var v1alpha1SCMProviderGeneratorGithub SCMProviderGeneratorGithub + v1alpha1SCMProviderGeneratorGithub.Organization = (*source).Organization + v1alpha1SCMProviderGeneratorGithub.API = (*source).API + v1alpha1SCMProviderGeneratorGithub.TokenRef = c.pV1alpha1SecretRefToPV1alpha1SecretRef((*source).TokenRef) + v1alpha1SCMProviderGeneratorGithub.AppSecretName = (*source).AppSecretName + v1alpha1SCMProviderGeneratorGithub.AllBranches = (*source).AllBranches + pV1alpha1SCMProviderGeneratorGithub = &v1alpha1SCMProviderGeneratorGithub + } + return pV1alpha1SCMProviderGeneratorGithub +} +func (c *ConverterImpl) pV1alpha1SCMProviderGeneratorGithubToPV1alpha1SCMProviderGeneratorGithub2(source *SCMProviderGeneratorGithub) *v1alpha1.SCMProviderGeneratorGithub { + var pV1alpha1SCMProviderGeneratorGithub *v1alpha1.SCMProviderGeneratorGithub + if source != nil { + var v1alpha1SCMProviderGeneratorGithub v1alpha1.SCMProviderGeneratorGithub + v1alpha1SCMProviderGeneratorGithub.Organization = (*source).Organization + v1alpha1SCMProviderGeneratorGithub.API = (*source).API + v1alpha1SCMProviderGeneratorGithub.TokenRef = c.pV1alpha1SecretRefToPV1alpha1SecretRef2((*source).TokenRef) + v1alpha1SCMProviderGeneratorGithub.AppSecretName = (*source).AppSecretName + v1alpha1SCMProviderGeneratorGithub.AllBranches = (*source).AllBranches + pV1alpha1SCMProviderGeneratorGithub = &v1alpha1SCMProviderGeneratorGithub + } + return pV1alpha1SCMProviderGeneratorGithub +} +func (c *ConverterImpl) pV1alpha1SCMProviderGeneratorGitlabToPV1alpha1SCMProviderGeneratorGitlab(source *v1alpha1.SCMProviderGeneratorGitlab) *SCMProviderGeneratorGitlab { + var pV1alpha1SCMProviderGeneratorGitlab *SCMProviderGeneratorGitlab + if source != nil { + var v1alpha1SCMProviderGeneratorGitlab SCMProviderGeneratorGitlab + v1alpha1SCMProviderGeneratorGitlab.Group = (*source).Group + v1alpha1SCMProviderGeneratorGitlab.IncludeSubgroups = (*source).IncludeSubgroups + v1alpha1SCMProviderGeneratorGitlab.API = (*source).API + v1alpha1SCMProviderGeneratorGitlab.TokenRef = c.pV1alpha1SecretRefToPV1alpha1SecretRef((*source).TokenRef) + v1alpha1SCMProviderGeneratorGitlab.AllBranches = (*source).AllBranches + v1alpha1SCMProviderGeneratorGitlab.Insecure = (*source).Insecure + pV1alpha1SCMProviderGeneratorGitlab = &v1alpha1SCMProviderGeneratorGitlab + } + return pV1alpha1SCMProviderGeneratorGitlab +} +func (c *ConverterImpl) pV1alpha1SCMProviderGeneratorGitlabToPV1alpha1SCMProviderGeneratorGitlab2(source *SCMProviderGeneratorGitlab) *v1alpha1.SCMProviderGeneratorGitlab { + var pV1alpha1SCMProviderGeneratorGitlab *v1alpha1.SCMProviderGeneratorGitlab + if source != nil { + var v1alpha1SCMProviderGeneratorGitlab v1alpha1.SCMProviderGeneratorGitlab + v1alpha1SCMProviderGeneratorGitlab.Group = (*source).Group + v1alpha1SCMProviderGeneratorGitlab.IncludeSubgroups = (*source).IncludeSubgroups + v1alpha1SCMProviderGeneratorGitlab.API = (*source).API + v1alpha1SCMProviderGeneratorGitlab.TokenRef = c.pV1alpha1SecretRefToPV1alpha1SecretRef2((*source).TokenRef) + v1alpha1SCMProviderGeneratorGitlab.AllBranches = (*source).AllBranches + v1alpha1SCMProviderGeneratorGitlab.Insecure = (*source).Insecure + pV1alpha1SCMProviderGeneratorGitlab = &v1alpha1SCMProviderGeneratorGitlab + } + return pV1alpha1SCMProviderGeneratorGitlab +} +func (c *ConverterImpl) pV1alpha1SCMProviderGeneratorToPV1alpha1SCMProviderGenerator(source *v1alpha1.SCMProviderGenerator) *SCMProviderGenerator { + var pV1alpha1SCMProviderGenerator *SCMProviderGenerator + if source != nil { + var v1alpha1SCMProviderGenerator SCMProviderGenerator + v1alpha1SCMProviderGenerator.Github = c.pV1alpha1SCMProviderGeneratorGithubToPV1alpha1SCMProviderGeneratorGithub((*source).Github) + v1alpha1SCMProviderGenerator.Gitlab = c.pV1alpha1SCMProviderGeneratorGitlabToPV1alpha1SCMProviderGeneratorGitlab((*source).Gitlab) + v1alpha1SCMProviderGenerator.Bitbucket = c.pV1alpha1SCMProviderGeneratorBitbucketToPV1alpha1SCMProviderGeneratorBitbucket((*source).Bitbucket) + v1alpha1SCMProviderGenerator.BitbucketServer = c.pV1alpha1SCMProviderGeneratorBitbucketServerToPV1alpha1SCMProviderGeneratorBitbucketServer((*source).BitbucketServer) + v1alpha1SCMProviderGenerator.Gitea = c.pV1alpha1SCMProviderGeneratorGiteaToPV1alpha1SCMProviderGeneratorGitea((*source).Gitea) + v1alpha1SCMProviderGenerator.AzureDevOps = c.pV1alpha1SCMProviderGeneratorAzureDevOpsToPV1alpha1SCMProviderGeneratorAzureDevOps((*source).AzureDevOps) + var v1alpha1SCMProviderGeneratorFilterList []SCMProviderGeneratorFilter + if (*source).Filters != nil { + v1alpha1SCMProviderGeneratorFilterList = make([]SCMProviderGeneratorFilter, len((*source).Filters)) + for i := 0; i < len((*source).Filters); i++ { + v1alpha1SCMProviderGeneratorFilterList[i] = c.v1alpha1SCMProviderGeneratorFilterToV1alpha1SCMProviderGeneratorFilter((*source).Filters[i]) + } + } + v1alpha1SCMProviderGenerator.Filters = v1alpha1SCMProviderGeneratorFilterList + v1alpha1SCMProviderGenerator.CloneProtocol = (*source).CloneProtocol + var pInt64 *int64 + if (*source).RequeueAfterSeconds != nil { + xint64 := *(*source).RequeueAfterSeconds + pInt64 = &xint64 + } + v1alpha1SCMProviderGenerator.RequeueAfterSeconds = pInt64 + v1alpha1SCMProviderGenerator.Template = c.v1alpha1ApplicationSetTemplateToV1alpha1ApplicationSetTemplate((*source).Template) + mapStringString := make(map[string]string, len((*source).Values)) + for key, value := range (*source).Values { + mapStringString[key] = value + } + v1alpha1SCMProviderGenerator.Values = mapStringString + v1alpha1SCMProviderGenerator.AWSCodeCommit = c.pV1alpha1SCMProviderGeneratorAWSCodeCommitToPV1alpha1SCMProviderGeneratorAWSCodeCommit((*source).AWSCodeCommit) + pV1alpha1SCMProviderGenerator = &v1alpha1SCMProviderGenerator + } + return pV1alpha1SCMProviderGenerator +} +func (c *ConverterImpl) pV1alpha1SCMProviderGeneratorToPV1alpha1SCMProviderGenerator2(source *SCMProviderGenerator) *v1alpha1.SCMProviderGenerator { + var pV1alpha1SCMProviderGenerator *v1alpha1.SCMProviderGenerator + if source != nil { + var v1alpha1SCMProviderGenerator v1alpha1.SCMProviderGenerator + v1alpha1SCMProviderGenerator.Github = c.pV1alpha1SCMProviderGeneratorGithubToPV1alpha1SCMProviderGeneratorGithub2((*source).Github) + v1alpha1SCMProviderGenerator.Gitlab = c.pV1alpha1SCMProviderGeneratorGitlabToPV1alpha1SCMProviderGeneratorGitlab2((*source).Gitlab) + v1alpha1SCMProviderGenerator.Bitbucket = c.pV1alpha1SCMProviderGeneratorBitbucketToPV1alpha1SCMProviderGeneratorBitbucket2((*source).Bitbucket) + v1alpha1SCMProviderGenerator.BitbucketServer = c.pV1alpha1SCMProviderGeneratorBitbucketServerToPV1alpha1SCMProviderGeneratorBitbucketServer2((*source).BitbucketServer) + v1alpha1SCMProviderGenerator.Gitea = c.pV1alpha1SCMProviderGeneratorGiteaToPV1alpha1SCMProviderGeneratorGitea2((*source).Gitea) + v1alpha1SCMProviderGenerator.AzureDevOps = c.pV1alpha1SCMProviderGeneratorAzureDevOpsToPV1alpha1SCMProviderGeneratorAzureDevOps2((*source).AzureDevOps) + var v1alpha1SCMProviderGeneratorFilterList []v1alpha1.SCMProviderGeneratorFilter + if (*source).Filters != nil { + v1alpha1SCMProviderGeneratorFilterList = make([]v1alpha1.SCMProviderGeneratorFilter, len((*source).Filters)) + for i := 0; i < len((*source).Filters); i++ { + v1alpha1SCMProviderGeneratorFilterList[i] = c.v1alpha1SCMProviderGeneratorFilterToV1alpha1SCMProviderGeneratorFilter2((*source).Filters[i]) + } + } + v1alpha1SCMProviderGenerator.Filters = v1alpha1SCMProviderGeneratorFilterList + v1alpha1SCMProviderGenerator.CloneProtocol = (*source).CloneProtocol + var pInt64 *int64 + if (*source).RequeueAfterSeconds != nil { + xint64 := *(*source).RequeueAfterSeconds + pInt64 = &xint64 + } + v1alpha1SCMProviderGenerator.RequeueAfterSeconds = pInt64 + v1alpha1SCMProviderGenerator.Template = c.v1alpha1ApplicationSetTemplateToV1alpha1ApplicationSetTemplate2((*source).Template) + mapStringString := make(map[string]string, len((*source).Values)) + for key, value := range (*source).Values { + mapStringString[key] = value + } + v1alpha1SCMProviderGenerator.Values = mapStringString + v1alpha1SCMProviderGenerator.AWSCodeCommit = c.pV1alpha1SCMProviderGeneratorAWSCodeCommitToPV1alpha1SCMProviderGeneratorAWSCodeCommit2((*source).AWSCodeCommit) + pV1alpha1SCMProviderGenerator = &v1alpha1SCMProviderGenerator + } + return pV1alpha1SCMProviderGenerator +} +func (c *ConverterImpl) pV1alpha1SecretRefToPV1alpha1SecretRef(source *v1alpha1.SecretRef) *SecretRef { + var pV1alpha1SecretRef *SecretRef + if source != nil { + var v1alpha1SecretRef SecretRef + v1alpha1SecretRef.SecretName = (*source).SecretName + v1alpha1SecretRef.Key = (*source).Key + pV1alpha1SecretRef = &v1alpha1SecretRef + } + return pV1alpha1SecretRef +} +func (c *ConverterImpl) pV1alpha1SecretRefToPV1alpha1SecretRef2(source *SecretRef) *v1alpha1.SecretRef { + var pV1alpha1SecretRef *v1alpha1.SecretRef + if source != nil { + var v1alpha1SecretRef v1alpha1.SecretRef + v1alpha1SecretRef.SecretName = (*source).SecretName + v1alpha1SecretRef.Key = (*source).Key + pV1alpha1SecretRef = &v1alpha1SecretRef + } + return pV1alpha1SecretRef +} +func (c *ConverterImpl) pV1alpha1SyncPolicyAutomatedToPV1alpha1SyncPolicyAutomated(source *v1alpha1.SyncPolicyAutomated) *SyncPolicyAutomated { + var pV1alpha1SyncPolicyAutomated *SyncPolicyAutomated + if source != nil { + var v1alpha1SyncPolicyAutomated SyncPolicyAutomated + pBool := (*source).Prune + v1alpha1SyncPolicyAutomated.Prune = &pBool + pBool2 := (*source).SelfHeal + v1alpha1SyncPolicyAutomated.SelfHeal = &pBool2 + pBool3 := (*source).AllowEmpty + v1alpha1SyncPolicyAutomated.AllowEmpty = &pBool3 + pV1alpha1SyncPolicyAutomated = &v1alpha1SyncPolicyAutomated + } + return pV1alpha1SyncPolicyAutomated +} +func (c *ConverterImpl) pV1alpha1SyncPolicyAutomatedToPV1alpha1SyncPolicyAutomated2(source *SyncPolicyAutomated) *v1alpha1.SyncPolicyAutomated { + var pV1alpha1SyncPolicyAutomated *v1alpha1.SyncPolicyAutomated + if source != nil { + var v1alpha1SyncPolicyAutomated v1alpha1.SyncPolicyAutomated + var xbool bool + if (*source).Prune != nil { + xbool = *(*source).Prune + } + v1alpha1SyncPolicyAutomated.Prune = xbool + var xbool2 bool + if (*source).SelfHeal != nil { + xbool2 = *(*source).SelfHeal + } + v1alpha1SyncPolicyAutomated.SelfHeal = xbool2 + var xbool3 bool + if (*source).AllowEmpty != nil { + xbool3 = *(*source).AllowEmpty + } + v1alpha1SyncPolicyAutomated.AllowEmpty = xbool3 + pV1alpha1SyncPolicyAutomated = &v1alpha1SyncPolicyAutomated + } + return pV1alpha1SyncPolicyAutomated +} +func (c *ConverterImpl) pV1alpha1SyncPolicyToPV1alpha1SyncPolicy(source *v1alpha1.SyncPolicy) *SyncPolicy { + var pV1alpha1SyncPolicy *SyncPolicy + if source != nil { + var v1alpha1SyncPolicy SyncPolicy + v1alpha1SyncPolicy.Automated = c.pV1alpha1SyncPolicyAutomatedToPV1alpha1SyncPolicyAutomated((*source).Automated) + v1alpha1SyncPolicy.SyncOptions = c.v1alpha1SyncOptionsToV1alpha1SyncOptions((*source).SyncOptions) + v1alpha1SyncPolicy.Retry = c.pV1alpha1RetryStrategyToPV1alpha1RetryStrategy((*source).Retry) + v1alpha1SyncPolicy.ManagedNamespaceMetadata = c.pV1alpha1ManagedNamespaceMetadataToPV1alpha1ManagedNamespaceMetadata((*source).ManagedNamespaceMetadata) + pV1alpha1SyncPolicy = &v1alpha1SyncPolicy + } + return pV1alpha1SyncPolicy +} +func (c *ConverterImpl) pV1alpha1SyncPolicyToPV1alpha1SyncPolicy2(source *SyncPolicy) *v1alpha1.SyncPolicy { + var pV1alpha1SyncPolicy *v1alpha1.SyncPolicy + if source != nil { + var v1alpha1SyncPolicy v1alpha1.SyncPolicy + v1alpha1SyncPolicy.Automated = c.pV1alpha1SyncPolicyAutomatedToPV1alpha1SyncPolicyAutomated2((*source).Automated) + v1alpha1SyncPolicy.SyncOptions = c.v1alpha1SyncOptionsToV1alpha1SyncOptions2((*source).SyncOptions) + v1alpha1SyncPolicy.Retry = c.pV1alpha1RetryStrategyToPV1alpha1RetryStrategy2((*source).Retry) + v1alpha1SyncPolicy.ManagedNamespaceMetadata = c.pV1alpha1ManagedNamespaceMetadataToPV1alpha1ManagedNamespaceMetadata2((*source).ManagedNamespaceMetadata) + pV1alpha1SyncPolicy = &v1alpha1SyncPolicy + } + return pV1alpha1SyncPolicy +} +func (c *ConverterImpl) pV1alpha1TagFilterToPV1alpha1TagFilter(source *v1alpha1.TagFilter) *TagFilter { + var pV1alpha1TagFilter *TagFilter + if source != nil { + var v1alpha1TagFilter TagFilter + v1alpha1TagFilter.Key = (*source).Key + v1alpha1TagFilter.Value = (*source).Value + pV1alpha1TagFilter = &v1alpha1TagFilter + } + return pV1alpha1TagFilter +} +func (c *ConverterImpl) pV1alpha1TagFilterToPV1alpha1TagFilter2(source *TagFilter) *v1alpha1.TagFilter { + var pV1alpha1TagFilter *v1alpha1.TagFilter + if source != nil { + var v1alpha1TagFilter v1alpha1.TagFilter + v1alpha1TagFilter.Key = (*source).Key + v1alpha1TagFilter.Value = (*source).Value + pV1alpha1TagFilter = &v1alpha1TagFilter + } + return pV1alpha1TagFilter +} +func (c *ConverterImpl) timeTimeToTimeTime(source time.Time) time.Time { + var timeTime time.Time + _ = source + return timeTime +} +func (c *ConverterImpl) v1JSONToV1JSON(source v1.JSON) v1.JSON { + var v1JSON v1.JSON + var byteList []uint8 + if source.Raw != nil { + byteList = make([]uint8, len(source.Raw)) + for i := 0; i < len(source.Raw); i++ { + byteList[i] = source.Raw[i] + } + } + v1JSON.Raw = byteList + return v1JSON +} +func (c *ConverterImpl) v1LabelSelectorRequirementToV1LabelSelectorRequirement(source v11.LabelSelectorRequirement) v11.LabelSelectorRequirement { + var v1LabelSelectorRequirement v11.LabelSelectorRequirement + v1LabelSelectorRequirement.Key = source.Key + v1LabelSelectorRequirement.Operator = v11.LabelSelectorOperator(source.Operator) + var stringList []string + if source.Values != nil { + stringList = make([]string, len(source.Values)) + for i := 0; i < len(source.Values); i++ { + stringList[i] = source.Values[i] + } + } + v1LabelSelectorRequirement.Values = stringList + return v1LabelSelectorRequirement +} +func (c *ConverterImpl) v1LabelSelectorToV1LabelSelector(source v11.LabelSelector) v11.LabelSelector { + var v1LabelSelector v11.LabelSelector + mapStringString := make(map[string]string, len(source.MatchLabels)) + for key, value := range source.MatchLabels { + mapStringString[key] = value + } + v1LabelSelector.MatchLabels = mapStringString + var v1LabelSelectorRequirementList []v11.LabelSelectorRequirement + if source.MatchExpressions != nil { + v1LabelSelectorRequirementList = make([]v11.LabelSelectorRequirement, len(source.MatchExpressions)) + for i := 0; i < len(source.MatchExpressions); i++ { + v1LabelSelectorRequirementList[i] = c.v1LabelSelectorRequirementToV1LabelSelectorRequirement(source.MatchExpressions[i]) + } + } + v1LabelSelector.MatchExpressions = v1LabelSelectorRequirementList + return v1LabelSelector +} +func (c *ConverterImpl) v1alpha1ApplicationMatchExpressionToV1alpha1ApplicationMatchExpression(source v1alpha1.ApplicationMatchExpression) ApplicationMatchExpression { + var v1alpha1ApplicationMatchExpression ApplicationMatchExpression + v1alpha1ApplicationMatchExpression.Key = source.Key + v1alpha1ApplicationMatchExpression.Operator = source.Operator + var stringList []string + if source.Values != nil { + stringList = make([]string, len(source.Values)) + for i := 0; i < len(source.Values); i++ { + stringList[i] = source.Values[i] + } + } + v1alpha1ApplicationMatchExpression.Values = stringList + return v1alpha1ApplicationMatchExpression +} +func (c *ConverterImpl) v1alpha1ApplicationMatchExpressionToV1alpha1ApplicationMatchExpression2(source ApplicationMatchExpression) v1alpha1.ApplicationMatchExpression { + var v1alpha1ApplicationMatchExpression v1alpha1.ApplicationMatchExpression + v1alpha1ApplicationMatchExpression.Key = source.Key + v1alpha1ApplicationMatchExpression.Operator = source.Operator + var stringList []string + if source.Values != nil { + stringList = make([]string, len(source.Values)) + for i := 0; i < len(source.Values); i++ { + stringList[i] = source.Values[i] + } + } + v1alpha1ApplicationMatchExpression.Values = stringList + return v1alpha1ApplicationMatchExpression +} +func (c *ConverterImpl) v1alpha1ApplicationSetApplicationStatusToV1alpha1ApplicationSetApplicationStatus(source v1alpha1.ApplicationSetApplicationStatus) ApplicationSetApplicationStatus { + var v1alpha1ApplicationSetApplicationStatus ApplicationSetApplicationStatus + v1alpha1ApplicationSetApplicationStatus.Application = source.Application + v1alpha1ApplicationSetApplicationStatus.LastTransitionTime = c.pV1TimeToPV1Time(source.LastTransitionTime) + v1alpha1ApplicationSetApplicationStatus.Message = source.Message + v1alpha1ApplicationSetApplicationStatus.Status = source.Status + v1alpha1ApplicationSetApplicationStatus.Step = source.Step + return v1alpha1ApplicationSetApplicationStatus +} +func (c *ConverterImpl) v1alpha1ApplicationSetApplicationStatusToV1alpha1ApplicationSetApplicationStatus2(source ApplicationSetApplicationStatus) v1alpha1.ApplicationSetApplicationStatus { + var v1alpha1ApplicationSetApplicationStatus v1alpha1.ApplicationSetApplicationStatus + v1alpha1ApplicationSetApplicationStatus.Application = source.Application + v1alpha1ApplicationSetApplicationStatus.LastTransitionTime = c.pV1TimeToPV1Time(source.LastTransitionTime) + v1alpha1ApplicationSetApplicationStatus.Message = source.Message + v1alpha1ApplicationSetApplicationStatus.Status = source.Status + v1alpha1ApplicationSetApplicationStatus.Step = source.Step + return v1alpha1ApplicationSetApplicationStatus +} +func (c *ConverterImpl) v1alpha1ApplicationSetConditionToV1alpha1ApplicationSetCondition(source v1alpha1.ApplicationSetCondition) ApplicationSetCondition { + var v1alpha1ApplicationSetCondition ApplicationSetCondition + v1alpha1ApplicationSetCondition.Type = ApplicationSetConditionType(source.Type) + v1alpha1ApplicationSetCondition.Message = source.Message + v1alpha1ApplicationSetCondition.LastTransitionTime = c.pV1TimeToPV1Time(source.LastTransitionTime) + v1alpha1ApplicationSetCondition.Status = ApplicationSetConditionStatus(source.Status) + v1alpha1ApplicationSetCondition.Reason = source.Reason + return v1alpha1ApplicationSetCondition +} +func (c *ConverterImpl) v1alpha1ApplicationSetConditionToV1alpha1ApplicationSetCondition2(source ApplicationSetCondition) v1alpha1.ApplicationSetCondition { + var v1alpha1ApplicationSetCondition v1alpha1.ApplicationSetCondition + v1alpha1ApplicationSetCondition.Type = v1alpha1.ApplicationSetConditionType(source.Type) + v1alpha1ApplicationSetCondition.Message = source.Message + v1alpha1ApplicationSetCondition.LastTransitionTime = c.pV1TimeToPV1Time(source.LastTransitionTime) + v1alpha1ApplicationSetCondition.Status = v1alpha1.ApplicationSetConditionStatus(source.Status) + v1alpha1ApplicationSetCondition.Reason = source.Reason + return v1alpha1ApplicationSetCondition +} +func (c *ConverterImpl) v1alpha1ApplicationSetGeneratorToV1alpha1ApplicationSetGenerator(source v1alpha1.ApplicationSetGenerator) ApplicationSetGenerator { + var v1alpha1ApplicationSetGenerator ApplicationSetGenerator + v1alpha1ApplicationSetGenerator.List = c.pV1alpha1ListGeneratorToPV1alpha1ListGenerator(source.List) + v1alpha1ApplicationSetGenerator.Clusters = c.pV1alpha1ClusterGeneratorToPV1alpha1ClusterGenerator(source.Clusters) + v1alpha1ApplicationSetGenerator.Git = c.pV1alpha1GitGeneratorToPV1alpha1GitGenerator(source.Git) + v1alpha1ApplicationSetGenerator.SCMProvider = c.pV1alpha1SCMProviderGeneratorToPV1alpha1SCMProviderGenerator(source.SCMProvider) + v1alpha1ApplicationSetGenerator.ClusterDecisionResource = c.pV1alpha1DuckTypeGeneratorToPV1alpha1DuckTypeGenerator(source.ClusterDecisionResource) + v1alpha1ApplicationSetGenerator.PullRequest = c.pV1alpha1PullRequestGeneratorToPV1alpha1PullRequestGenerator(source.PullRequest) + v1alpha1ApplicationSetGenerator.Matrix = c.pV1alpha1MatrixGeneratorToPV1alpha1MatrixGenerator(source.Matrix) + v1alpha1ApplicationSetGenerator.Merge = c.pV1alpha1MergeGeneratorToPV1alpha1MergeGenerator(source.Merge) + v1alpha1ApplicationSetGenerator.Selector = c.pV1LabelSelectorToPV1LabelSelector(source.Selector) + v1alpha1ApplicationSetGenerator.Plugin = c.pV1alpha1PluginGeneratorToPV1alpha1PluginGenerator(source.Plugin) + return v1alpha1ApplicationSetGenerator +} +func (c *ConverterImpl) v1alpha1ApplicationSetGeneratorToV1alpha1ApplicationSetGenerator2(source ApplicationSetGenerator) v1alpha1.ApplicationSetGenerator { + var v1alpha1ApplicationSetGenerator v1alpha1.ApplicationSetGenerator + v1alpha1ApplicationSetGenerator.List = c.pV1alpha1ListGeneratorToPV1alpha1ListGenerator2(source.List) + v1alpha1ApplicationSetGenerator.Clusters = c.pV1alpha1ClusterGeneratorToPV1alpha1ClusterGenerator2(source.Clusters) + v1alpha1ApplicationSetGenerator.Git = c.pV1alpha1GitGeneratorToPV1alpha1GitGenerator2(source.Git) + v1alpha1ApplicationSetGenerator.SCMProvider = c.pV1alpha1SCMProviderGeneratorToPV1alpha1SCMProviderGenerator2(source.SCMProvider) + v1alpha1ApplicationSetGenerator.ClusterDecisionResource = c.pV1alpha1DuckTypeGeneratorToPV1alpha1DuckTypeGenerator2(source.ClusterDecisionResource) + v1alpha1ApplicationSetGenerator.PullRequest = c.pV1alpha1PullRequestGeneratorToPV1alpha1PullRequestGenerator2(source.PullRequest) + v1alpha1ApplicationSetGenerator.Matrix = c.pV1alpha1MatrixGeneratorToPV1alpha1MatrixGenerator2(source.Matrix) + v1alpha1ApplicationSetGenerator.Merge = c.pV1alpha1MergeGeneratorToPV1alpha1MergeGenerator2(source.Merge) + v1alpha1ApplicationSetGenerator.Selector = c.pV1LabelSelectorToPV1LabelSelector(source.Selector) + v1alpha1ApplicationSetGenerator.Plugin = c.pV1alpha1PluginGeneratorToPV1alpha1PluginGenerator2(source.Plugin) + return v1alpha1ApplicationSetGenerator +} +func (c *ConverterImpl) v1alpha1ApplicationSetNestedGeneratorToV1alpha1ApplicationSetNestedGenerator(source v1alpha1.ApplicationSetNestedGenerator) ApplicationSetNestedGenerator { + var v1alpha1ApplicationSetNestedGenerator ApplicationSetNestedGenerator + v1alpha1ApplicationSetNestedGenerator.List = c.pV1alpha1ListGeneratorToPV1alpha1ListGenerator(source.List) + v1alpha1ApplicationSetNestedGenerator.Clusters = c.pV1alpha1ClusterGeneratorToPV1alpha1ClusterGenerator(source.Clusters) + v1alpha1ApplicationSetNestedGenerator.Git = c.pV1alpha1GitGeneratorToPV1alpha1GitGenerator(source.Git) + v1alpha1ApplicationSetNestedGenerator.SCMProvider = c.pV1alpha1SCMProviderGeneratorToPV1alpha1SCMProviderGenerator(source.SCMProvider) + v1alpha1ApplicationSetNestedGenerator.ClusterDecisionResource = c.pV1alpha1DuckTypeGeneratorToPV1alpha1DuckTypeGenerator(source.ClusterDecisionResource) + v1alpha1ApplicationSetNestedGenerator.PullRequest = c.pV1alpha1PullRequestGeneratorToPV1alpha1PullRequestGenerator(source.PullRequest) + v1alpha1ApplicationSetNestedGenerator.Matrix = c.pV1JSONToPV1JSON(source.Matrix) + v1alpha1ApplicationSetNestedGenerator.Merge = c.pV1JSONToPV1JSON(source.Merge) + v1alpha1ApplicationSetNestedGenerator.Selector = c.pV1LabelSelectorToPV1LabelSelector(source.Selector) + v1alpha1ApplicationSetNestedGenerator.Plugin = c.pV1alpha1PluginGeneratorToPV1alpha1PluginGenerator(source.Plugin) + return v1alpha1ApplicationSetNestedGenerator +} +func (c *ConverterImpl) v1alpha1ApplicationSetNestedGeneratorToV1alpha1ApplicationSetNestedGenerator2(source ApplicationSetNestedGenerator) v1alpha1.ApplicationSetNestedGenerator { + var v1alpha1ApplicationSetNestedGenerator v1alpha1.ApplicationSetNestedGenerator + v1alpha1ApplicationSetNestedGenerator.List = c.pV1alpha1ListGeneratorToPV1alpha1ListGenerator2(source.List) + v1alpha1ApplicationSetNestedGenerator.Clusters = c.pV1alpha1ClusterGeneratorToPV1alpha1ClusterGenerator2(source.Clusters) + v1alpha1ApplicationSetNestedGenerator.Git = c.pV1alpha1GitGeneratorToPV1alpha1GitGenerator2(source.Git) + v1alpha1ApplicationSetNestedGenerator.SCMProvider = c.pV1alpha1SCMProviderGeneratorToPV1alpha1SCMProviderGenerator2(source.SCMProvider) + v1alpha1ApplicationSetNestedGenerator.ClusterDecisionResource = c.pV1alpha1DuckTypeGeneratorToPV1alpha1DuckTypeGenerator2(source.ClusterDecisionResource) + v1alpha1ApplicationSetNestedGenerator.PullRequest = c.pV1alpha1PullRequestGeneratorToPV1alpha1PullRequestGenerator2(source.PullRequest) + v1alpha1ApplicationSetNestedGenerator.Matrix = c.pV1JSONToPV1JSON(source.Matrix) + v1alpha1ApplicationSetNestedGenerator.Merge = c.pV1JSONToPV1JSON(source.Merge) + v1alpha1ApplicationSetNestedGenerator.Selector = c.pV1LabelSelectorToPV1LabelSelector(source.Selector) + v1alpha1ApplicationSetNestedGenerator.Plugin = c.pV1alpha1PluginGeneratorToPV1alpha1PluginGenerator2(source.Plugin) + return v1alpha1ApplicationSetNestedGenerator +} +func (c *ConverterImpl) v1alpha1ApplicationSetRolloutStepToV1alpha1ApplicationSetRolloutStep(source v1alpha1.ApplicationSetRolloutStep) ApplicationSetRolloutStep { + var v1alpha1ApplicationSetRolloutStep ApplicationSetRolloutStep + var v1alpha1ApplicationMatchExpressionList []ApplicationMatchExpression + if source.MatchExpressions != nil { + v1alpha1ApplicationMatchExpressionList = make([]ApplicationMatchExpression, len(source.MatchExpressions)) + for i := 0; i < len(source.MatchExpressions); i++ { + v1alpha1ApplicationMatchExpressionList[i] = c.v1alpha1ApplicationMatchExpressionToV1alpha1ApplicationMatchExpression(source.MatchExpressions[i]) + } + } + v1alpha1ApplicationSetRolloutStep.MatchExpressions = v1alpha1ApplicationMatchExpressionList + v1alpha1ApplicationSetRolloutStep.MaxUpdate = c.pIntstrIntOrStringToPIntstrIntOrString(source.MaxUpdate) + return v1alpha1ApplicationSetRolloutStep +} +func (c *ConverterImpl) v1alpha1ApplicationSetRolloutStepToV1alpha1ApplicationSetRolloutStep2(source ApplicationSetRolloutStep) v1alpha1.ApplicationSetRolloutStep { + var v1alpha1ApplicationSetRolloutStep v1alpha1.ApplicationSetRolloutStep + var v1alpha1ApplicationMatchExpressionList []v1alpha1.ApplicationMatchExpression + if source.MatchExpressions != nil { + v1alpha1ApplicationMatchExpressionList = make([]v1alpha1.ApplicationMatchExpression, len(source.MatchExpressions)) + for i := 0; i < len(source.MatchExpressions); i++ { + v1alpha1ApplicationMatchExpressionList[i] = c.v1alpha1ApplicationMatchExpressionToV1alpha1ApplicationMatchExpression2(source.MatchExpressions[i]) + } + } + v1alpha1ApplicationSetRolloutStep.MatchExpressions = v1alpha1ApplicationMatchExpressionList + v1alpha1ApplicationSetRolloutStep.MaxUpdate = c.pIntstrIntOrStringToPIntstrIntOrString(source.MaxUpdate) + return v1alpha1ApplicationSetRolloutStep +} +func (c *ConverterImpl) v1alpha1ApplicationSetTemplateMetaToV1alpha1ApplicationSetTemplateMeta(source v1alpha1.ApplicationSetTemplateMeta) ApplicationSetTemplateMeta { + var v1alpha1ApplicationSetTemplateMeta ApplicationSetTemplateMeta + v1alpha1ApplicationSetTemplateMeta.Name = source.Name + v1alpha1ApplicationSetTemplateMeta.Namespace = source.Namespace + mapStringString := make(map[string]string, len(source.Labels)) + for key, value := range source.Labels { + mapStringString[key] = value + } + v1alpha1ApplicationSetTemplateMeta.Labels = mapStringString + mapStringString2 := make(map[string]string, len(source.Annotations)) + for key2, value2 := range source.Annotations { + mapStringString2[key2] = value2 + } + v1alpha1ApplicationSetTemplateMeta.Annotations = mapStringString2 + var stringList []string + if source.Finalizers != nil { + stringList = make([]string, len(source.Finalizers)) + for i := 0; i < len(source.Finalizers); i++ { + stringList[i] = source.Finalizers[i] + } + } + v1alpha1ApplicationSetTemplateMeta.Finalizers = stringList + return v1alpha1ApplicationSetTemplateMeta +} +func (c *ConverterImpl) v1alpha1ApplicationSetTemplateMetaToV1alpha1ApplicationSetTemplateMeta2(source ApplicationSetTemplateMeta) v1alpha1.ApplicationSetTemplateMeta { + var v1alpha1ApplicationSetTemplateMeta v1alpha1.ApplicationSetTemplateMeta + v1alpha1ApplicationSetTemplateMeta.Name = source.Name + v1alpha1ApplicationSetTemplateMeta.Namespace = source.Namespace + mapStringString := make(map[string]string, len(source.Labels)) + for key, value := range source.Labels { + mapStringString[key] = value + } + v1alpha1ApplicationSetTemplateMeta.Labels = mapStringString + mapStringString2 := make(map[string]string, len(source.Annotations)) + for key2, value2 := range source.Annotations { + mapStringString2[key2] = value2 + } + v1alpha1ApplicationSetTemplateMeta.Annotations = mapStringString2 + var stringList []string + if source.Finalizers != nil { + stringList = make([]string, len(source.Finalizers)) + for i := 0; i < len(source.Finalizers); i++ { + stringList[i] = source.Finalizers[i] + } + } + v1alpha1ApplicationSetTemplateMeta.Finalizers = stringList + return v1alpha1ApplicationSetTemplateMeta +} +func (c *ConverterImpl) v1alpha1ApplicationSetTemplateToV1alpha1ApplicationSetTemplate(source v1alpha1.ApplicationSetTemplate) ApplicationSetTemplate { + var v1alpha1ApplicationSetTemplate ApplicationSetTemplate + v1alpha1ApplicationSetTemplate.ApplicationSetTemplateMeta = c.v1alpha1ApplicationSetTemplateMetaToV1alpha1ApplicationSetTemplateMeta(source.ApplicationSetTemplateMeta) + v1alpha1ApplicationSetTemplate.Spec = c.v1alpha1ApplicationSpecToV1alpha1ApplicationSpec(source.Spec) + return v1alpha1ApplicationSetTemplate +} +func (c *ConverterImpl) v1alpha1ApplicationSetTemplateToV1alpha1ApplicationSetTemplate2(source ApplicationSetTemplate) v1alpha1.ApplicationSetTemplate { + var v1alpha1ApplicationSetTemplate v1alpha1.ApplicationSetTemplate + v1alpha1ApplicationSetTemplate.ApplicationSetTemplateMeta = c.v1alpha1ApplicationSetTemplateMetaToV1alpha1ApplicationSetTemplateMeta2(source.ApplicationSetTemplateMeta) + v1alpha1ApplicationSetTemplate.Spec = c.v1alpha1ApplicationSpecToV1alpha1ApplicationSpec2(source.Spec) + return v1alpha1ApplicationSetTemplate +} +func (c *ConverterImpl) v1alpha1ApplicationSourceJsonnetToV1alpha1ApplicationSourceJsonnet(source v1alpha1.ApplicationSourceJsonnet) ApplicationSourceJsonnet { + var v1alpha1ApplicationSourceJsonnet ApplicationSourceJsonnet + var v1alpha1JsonnetVarList []JsonnetVar + if source.ExtVars != nil { + v1alpha1JsonnetVarList = make([]JsonnetVar, len(source.ExtVars)) + for i := 0; i < len(source.ExtVars); i++ { + v1alpha1JsonnetVarList[i] = c.v1alpha1JsonnetVarToV1alpha1JsonnetVar(source.ExtVars[i]) + } + } + v1alpha1ApplicationSourceJsonnet.ExtVars = v1alpha1JsonnetVarList + var v1alpha1JsonnetVarList2 []JsonnetVar + if source.TLAs != nil { + v1alpha1JsonnetVarList2 = make([]JsonnetVar, len(source.TLAs)) + for j := 0; j < len(source.TLAs); j++ { + v1alpha1JsonnetVarList2[j] = c.v1alpha1JsonnetVarToV1alpha1JsonnetVar(source.TLAs[j]) + } + } + v1alpha1ApplicationSourceJsonnet.TLAs = v1alpha1JsonnetVarList2 + var stringList []string + if source.Libs != nil { + stringList = make([]string, len(source.Libs)) + for k := 0; k < len(source.Libs); k++ { + stringList[k] = source.Libs[k] + } + } + v1alpha1ApplicationSourceJsonnet.Libs = stringList + return v1alpha1ApplicationSourceJsonnet +} +func (c *ConverterImpl) v1alpha1ApplicationSourceJsonnetToV1alpha1ApplicationSourceJsonnet2(source ApplicationSourceJsonnet) v1alpha1.ApplicationSourceJsonnet { + var v1alpha1ApplicationSourceJsonnet v1alpha1.ApplicationSourceJsonnet + var v1alpha1JsonnetVarList []v1alpha1.JsonnetVar + if source.ExtVars != nil { + v1alpha1JsonnetVarList = make([]v1alpha1.JsonnetVar, len(source.ExtVars)) + for i := 0; i < len(source.ExtVars); i++ { + v1alpha1JsonnetVarList[i] = c.v1alpha1JsonnetVarToV1alpha1JsonnetVar2(source.ExtVars[i]) + } + } + v1alpha1ApplicationSourceJsonnet.ExtVars = v1alpha1JsonnetVarList + var v1alpha1JsonnetVarList2 []v1alpha1.JsonnetVar + if source.TLAs != nil { + v1alpha1JsonnetVarList2 = make([]v1alpha1.JsonnetVar, len(source.TLAs)) + for j := 0; j < len(source.TLAs); j++ { + v1alpha1JsonnetVarList2[j] = c.v1alpha1JsonnetVarToV1alpha1JsonnetVar2(source.TLAs[j]) + } + } + v1alpha1ApplicationSourceJsonnet.TLAs = v1alpha1JsonnetVarList2 + var stringList []string + if source.Libs != nil { + stringList = make([]string, len(source.Libs)) + for k := 0; k < len(source.Libs); k++ { + stringList[k] = source.Libs[k] + } + } + v1alpha1ApplicationSourceJsonnet.Libs = stringList + return v1alpha1ApplicationSourceJsonnet +} +func (c *ConverterImpl) v1alpha1ApplicationSourcePluginParameterToV1alpha1ApplicationSourcePluginParameter(source v1alpha1.ApplicationSourcePluginParameter) ApplicationSourcePluginParameter { + var v1alpha1ApplicationSourcePluginParameter ApplicationSourcePluginParameter + pString := source.Name + v1alpha1ApplicationSourcePluginParameter.Name = &pString + var pString2 *string + if source.String_ != nil { + xstring := *source.String_ + pString2 = &xstring + } + v1alpha1ApplicationSourcePluginParameter.String_ = pString2 + v1alpha1ApplicationSourcePluginParameter.OptionalMap = c.pV1alpha1OptionalMapToPV1alpha1OptionalMap(source.OptionalMap) + v1alpha1ApplicationSourcePluginParameter.OptionalArray = c.pV1alpha1OptionalArrayToPV1alpha1OptionalArray(source.OptionalArray) + return v1alpha1ApplicationSourcePluginParameter +} +func (c *ConverterImpl) v1alpha1ApplicationSourcePluginParameterToV1alpha1ApplicationSourcePluginParameter2(source ApplicationSourcePluginParameter) v1alpha1.ApplicationSourcePluginParameter { + var v1alpha1ApplicationSourcePluginParameter v1alpha1.ApplicationSourcePluginParameter + var xstring string + if source.Name != nil { + xstring = *source.Name + } + v1alpha1ApplicationSourcePluginParameter.Name = xstring + var pString *string + if source.String_ != nil { + xstring2 := *source.String_ + pString = &xstring2 + } + v1alpha1ApplicationSourcePluginParameter.String_ = pString + v1alpha1ApplicationSourcePluginParameter.OptionalMap = c.pV1alpha1OptionalMapToPV1alpha1OptionalMap2(source.OptionalMap) + v1alpha1ApplicationSourcePluginParameter.OptionalArray = c.pV1alpha1OptionalArrayToPV1alpha1OptionalArray2(source.OptionalArray) + return v1alpha1ApplicationSourcePluginParameter +} +func (c *ConverterImpl) v1alpha1ApplicationSourcePluginParametersToV1alpha1ApplicationSourcePluginParameters(source v1alpha1.ApplicationSourcePluginParameters) ApplicationSourcePluginParameters { + var v1alpha1ApplicationSourcePluginParameters ApplicationSourcePluginParameters + if source != nil { + v1alpha1ApplicationSourcePluginParameters = make(ApplicationSourcePluginParameters, len(source)) + for i := 0; i < len(source); i++ { + v1alpha1ApplicationSourcePluginParameters[i] = c.v1alpha1ApplicationSourcePluginParameterToV1alpha1ApplicationSourcePluginParameter(source[i]) + } + } + return v1alpha1ApplicationSourcePluginParameters +} +func (c *ConverterImpl) v1alpha1ApplicationSourcePluginParametersToV1alpha1ApplicationSourcePluginParameters2(source ApplicationSourcePluginParameters) v1alpha1.ApplicationSourcePluginParameters { + var v1alpha1ApplicationSourcePluginParameters v1alpha1.ApplicationSourcePluginParameters + if source != nil { + v1alpha1ApplicationSourcePluginParameters = make(v1alpha1.ApplicationSourcePluginParameters, len(source)) + for i := 0; i < len(source); i++ { + v1alpha1ApplicationSourcePluginParameters[i] = c.v1alpha1ApplicationSourcePluginParameterToV1alpha1ApplicationSourcePluginParameter2(source[i]) + } + } + return v1alpha1ApplicationSourcePluginParameters +} +func (c *ConverterImpl) v1alpha1ApplicationSourceToV1alpha1ApplicationSource(source v1alpha1.ApplicationSource) ApplicationSource { + var v1alpha1ApplicationSource ApplicationSource + v1alpha1ApplicationSource.RepoURL = source.RepoURL + pString := source.Path + v1alpha1ApplicationSource.Path = &pString + pString2 := source.TargetRevision + v1alpha1ApplicationSource.TargetRevision = &pString2 + v1alpha1ApplicationSource.Helm = c.pV1alpha1ApplicationSourceHelmToPV1alpha1ApplicationSourceHelm(source.Helm) + v1alpha1ApplicationSource.Kustomize = c.pV1alpha1ApplicationSourceKustomizeToPV1alpha1ApplicationSourceKustomize(source.Kustomize) + v1alpha1ApplicationSource.Directory = c.pV1alpha1ApplicationSourceDirectoryToPV1alpha1ApplicationSourceDirectory(source.Directory) + v1alpha1ApplicationSource.Plugin = c.pV1alpha1ApplicationSourcePluginToPV1alpha1ApplicationSourcePlugin(source.Plugin) + pString3 := source.Chart + v1alpha1ApplicationSource.Chart = &pString3 + pString4 := source.Ref + v1alpha1ApplicationSource.Ref = &pString4 + return v1alpha1ApplicationSource +} +func (c *ConverterImpl) v1alpha1ApplicationSourceToV1alpha1ApplicationSource2(source ApplicationSource) v1alpha1.ApplicationSource { + var v1alpha1ApplicationSource v1alpha1.ApplicationSource + v1alpha1ApplicationSource.RepoURL = source.RepoURL + var xstring string + if source.Path != nil { + xstring = *source.Path + } + v1alpha1ApplicationSource.Path = xstring + var xstring2 string + if source.TargetRevision != nil { + xstring2 = *source.TargetRevision + } + v1alpha1ApplicationSource.TargetRevision = xstring2 + v1alpha1ApplicationSource.Helm = c.pV1alpha1ApplicationSourceHelmToPV1alpha1ApplicationSourceHelm2(source.Helm) + v1alpha1ApplicationSource.Kustomize = c.pV1alpha1ApplicationSourceKustomizeToPV1alpha1ApplicationSourceKustomize2(source.Kustomize) + v1alpha1ApplicationSource.Directory = c.pV1alpha1ApplicationSourceDirectoryToPV1alpha1ApplicationSourceDirectory2(source.Directory) + v1alpha1ApplicationSource.Plugin = c.pV1alpha1ApplicationSourcePluginToPV1alpha1ApplicationSourcePlugin2(source.Plugin) + var xstring3 string + if source.Chart != nil { + xstring3 = *source.Chart + } + v1alpha1ApplicationSource.Chart = xstring3 + var xstring4 string + if source.Ref != nil { + xstring4 = *source.Ref + } + v1alpha1ApplicationSource.Ref = xstring4 + return v1alpha1ApplicationSource +} +func (c *ConverterImpl) v1alpha1ApplicationSourcesToV1alpha1ApplicationSources(source v1alpha1.ApplicationSources) ApplicationSources { + var v1alpha1ApplicationSources ApplicationSources + if source != nil { + v1alpha1ApplicationSources = make(ApplicationSources, len(source)) + for i := 0; i < len(source); i++ { + v1alpha1ApplicationSources[i] = c.v1alpha1ApplicationSourceToV1alpha1ApplicationSource(source[i]) + } + } + return v1alpha1ApplicationSources +} +func (c *ConverterImpl) v1alpha1ApplicationSourcesToV1alpha1ApplicationSources2(source ApplicationSources) v1alpha1.ApplicationSources { + var v1alpha1ApplicationSources v1alpha1.ApplicationSources + if source != nil { + v1alpha1ApplicationSources = make(v1alpha1.ApplicationSources, len(source)) + for i := 0; i < len(source); i++ { + v1alpha1ApplicationSources[i] = c.v1alpha1ApplicationSourceToV1alpha1ApplicationSource2(source[i]) + } + } + return v1alpha1ApplicationSources +} +func (c *ConverterImpl) v1alpha1ApplicationSpecToV1alpha1ApplicationSpec(source v1alpha1.ApplicationSpec) ApplicationSpec { + var v1alpha1ApplicationSpec ApplicationSpec + v1alpha1ApplicationSpec.Source = c.pV1alpha1ApplicationSourceToPV1alpha1ApplicationSource(source.Source) + v1alpha1ApplicationSpec.Destination = c.FromArgoDestination(source.Destination) + v1alpha1ApplicationSpec.Project = source.Project + v1alpha1ApplicationSpec.SyncPolicy = c.pV1alpha1SyncPolicyToPV1alpha1SyncPolicy(source.SyncPolicy) + v1alpha1ApplicationSpec.IgnoreDifferences = c.v1alpha1IgnoreDifferencesToV1alpha1ResourceIgnoreDifferencesList(source.IgnoreDifferences) + var v1alpha1InfoList []Info + if source.Info != nil { + v1alpha1InfoList = make([]Info, len(source.Info)) + for i := 0; i < len(source.Info); i++ { + v1alpha1InfoList[i] = c.v1alpha1InfoToV1alpha1Info(source.Info[i]) + } + } + v1alpha1ApplicationSpec.Info = v1alpha1InfoList + var pInt64 *int64 + if source.RevisionHistoryLimit != nil { + xint64 := *source.RevisionHistoryLimit + pInt64 = &xint64 + } + v1alpha1ApplicationSpec.RevisionHistoryLimit = pInt64 + v1alpha1ApplicationSpec.Sources = c.v1alpha1ApplicationSourcesToV1alpha1ApplicationSources(source.Sources) + return v1alpha1ApplicationSpec +} +func (c *ConverterImpl) v1alpha1ApplicationSpecToV1alpha1ApplicationSpec2(source ApplicationSpec) v1alpha1.ApplicationSpec { + var v1alpha1ApplicationSpec v1alpha1.ApplicationSpec + v1alpha1ApplicationSpec.Source = c.pV1alpha1ApplicationSourceToPV1alpha1ApplicationSource2(source.Source) + v1alpha1ApplicationSpec.Destination = c.ToArgoDestination(source.Destination) + v1alpha1ApplicationSpec.Project = source.Project + v1alpha1ApplicationSpec.SyncPolicy = c.pV1alpha1SyncPolicyToPV1alpha1SyncPolicy2(source.SyncPolicy) + v1alpha1ApplicationSpec.IgnoreDifferences = c.v1alpha1ResourceIgnoreDifferencesListToV1alpha1IgnoreDifferences(source.IgnoreDifferences) + var v1alpha1InfoList []v1alpha1.Info + if source.Info != nil { + v1alpha1InfoList = make([]v1alpha1.Info, len(source.Info)) + for i := 0; i < len(source.Info); i++ { + v1alpha1InfoList[i] = c.v1alpha1InfoToV1alpha1Info2(source.Info[i]) + } + } + v1alpha1ApplicationSpec.Info = v1alpha1InfoList + var pInt64 *int64 + if source.RevisionHistoryLimit != nil { + xint64 := *source.RevisionHistoryLimit + pInt64 = &xint64 + } + v1alpha1ApplicationSpec.RevisionHistoryLimit = pInt64 + v1alpha1ApplicationSpec.Sources = c.v1alpha1ApplicationSourcesToV1alpha1ApplicationSources2(source.Sources) + return v1alpha1ApplicationSpec +} +func (c *ConverterImpl) v1alpha1EnvToV1alpha1Env(source v1alpha1.Env) Env { + var v1alpha1Env Env + if source != nil { + v1alpha1Env = make(Env, len(source)) + for i := 0; i < len(source); i++ { + v1alpha1Env[i] = c.pV1alpha1EnvEntryToPV1alpha1EnvEntry(source[i]) + } + } + return v1alpha1Env +} +func (c *ConverterImpl) v1alpha1EnvToV1alpha1Env2(source Env) v1alpha1.Env { + var v1alpha1Env v1alpha1.Env + if source != nil { + v1alpha1Env = make(v1alpha1.Env, len(source)) + for i := 0; i < len(source); i++ { + v1alpha1Env[i] = c.pV1alpha1EnvEntryToPV1alpha1EnvEntry2(source[i]) + } + } + return v1alpha1Env +} +func (c *ConverterImpl) v1alpha1GitDirectoryGeneratorItemToV1alpha1GitDirectoryGeneratorItem(source v1alpha1.GitDirectoryGeneratorItem) GitDirectoryGeneratorItem { + var v1alpha1GitDirectoryGeneratorItem GitDirectoryGeneratorItem + v1alpha1GitDirectoryGeneratorItem.Path = source.Path + v1alpha1GitDirectoryGeneratorItem.Exclude = source.Exclude + return v1alpha1GitDirectoryGeneratorItem +} +func (c *ConverterImpl) v1alpha1GitDirectoryGeneratorItemToV1alpha1GitDirectoryGeneratorItem2(source GitDirectoryGeneratorItem) v1alpha1.GitDirectoryGeneratorItem { + var v1alpha1GitDirectoryGeneratorItem v1alpha1.GitDirectoryGeneratorItem + v1alpha1GitDirectoryGeneratorItem.Path = source.Path + v1alpha1GitDirectoryGeneratorItem.Exclude = source.Exclude + return v1alpha1GitDirectoryGeneratorItem +} +func (c *ConverterImpl) v1alpha1GitFileGeneratorItemToV1alpha1GitFileGeneratorItem(source v1alpha1.GitFileGeneratorItem) GitFileGeneratorItem { + var v1alpha1GitFileGeneratorItem GitFileGeneratorItem + v1alpha1GitFileGeneratorItem.Path = source.Path + return v1alpha1GitFileGeneratorItem +} +func (c *ConverterImpl) v1alpha1GitFileGeneratorItemToV1alpha1GitFileGeneratorItem2(source GitFileGeneratorItem) v1alpha1.GitFileGeneratorItem { + var v1alpha1GitFileGeneratorItem v1alpha1.GitFileGeneratorItem + v1alpha1GitFileGeneratorItem.Path = source.Path + return v1alpha1GitFileGeneratorItem +} +func (c *ConverterImpl) v1alpha1HelmFileParameterToV1alpha1HelmFileParameter(source v1alpha1.HelmFileParameter) HelmFileParameter { + var v1alpha1HelmFileParameter HelmFileParameter + pString := source.Name + v1alpha1HelmFileParameter.Name = &pString + pString2 := source.Path + v1alpha1HelmFileParameter.Path = &pString2 + return v1alpha1HelmFileParameter +} +func (c *ConverterImpl) v1alpha1HelmFileParameterToV1alpha1HelmFileParameter2(source HelmFileParameter) v1alpha1.HelmFileParameter { + var v1alpha1HelmFileParameter v1alpha1.HelmFileParameter + var xstring string + if source.Name != nil { + xstring = *source.Name + } + v1alpha1HelmFileParameter.Name = xstring + var xstring2 string + if source.Path != nil { + xstring2 = *source.Path + } + v1alpha1HelmFileParameter.Path = xstring2 + return v1alpha1HelmFileParameter +} +func (c *ConverterImpl) v1alpha1HelmParameterToV1alpha1HelmParameter(source v1alpha1.HelmParameter) HelmParameter { + var v1alpha1HelmParameter HelmParameter + pString := source.Name + v1alpha1HelmParameter.Name = &pString + pString2 := source.Value + v1alpha1HelmParameter.Value = &pString2 + pBool := source.ForceString + v1alpha1HelmParameter.ForceString = &pBool + return v1alpha1HelmParameter +} +func (c *ConverterImpl) v1alpha1HelmParameterToV1alpha1HelmParameter2(source HelmParameter) v1alpha1.HelmParameter { + var v1alpha1HelmParameter v1alpha1.HelmParameter + var xstring string + if source.Name != nil { + xstring = *source.Name + } + v1alpha1HelmParameter.Name = xstring + var xstring2 string + if source.Value != nil { + xstring2 = *source.Value + } + v1alpha1HelmParameter.Value = xstring2 + var xbool bool + if source.ForceString != nil { + xbool = *source.ForceString + } + v1alpha1HelmParameter.ForceString = xbool + return v1alpha1HelmParameter +} +func (c *ConverterImpl) v1alpha1IgnoreDifferencesToV1alpha1ResourceIgnoreDifferencesList(source v1alpha1.IgnoreDifferences) []ResourceIgnoreDifferences { + var v1alpha1ResourceIgnoreDifferencesList []ResourceIgnoreDifferences + if source != nil { + v1alpha1ResourceIgnoreDifferencesList = make([]ResourceIgnoreDifferences, len(source)) + for i := 0; i < len(source); i++ { + v1alpha1ResourceIgnoreDifferencesList[i] = c.v1alpha1ResourceIgnoreDifferencesToV1alpha1ResourceIgnoreDifferences(source[i]) + } + } + return v1alpha1ResourceIgnoreDifferencesList +} +func (c *ConverterImpl) v1alpha1InfoToV1alpha1Info(source v1alpha1.Info) Info { + var v1alpha1Info Info + v1alpha1Info.Name = source.Name + v1alpha1Info.Value = source.Value + return v1alpha1Info +} +func (c *ConverterImpl) v1alpha1InfoToV1alpha1Info2(source Info) v1alpha1.Info { + var v1alpha1Info v1alpha1.Info + v1alpha1Info.Name = source.Name + v1alpha1Info.Value = source.Value + return v1alpha1Info +} +func (c *ConverterImpl) v1alpha1JsonnetVarToV1alpha1JsonnetVar(source v1alpha1.JsonnetVar) JsonnetVar { + var v1alpha1JsonnetVar JsonnetVar + v1alpha1JsonnetVar.Name = source.Name + v1alpha1JsonnetVar.Value = source.Value + pBool := source.Code + v1alpha1JsonnetVar.Code = &pBool + return v1alpha1JsonnetVar +} +func (c *ConverterImpl) v1alpha1JsonnetVarToV1alpha1JsonnetVar2(source JsonnetVar) v1alpha1.JsonnetVar { + var v1alpha1JsonnetVar v1alpha1.JsonnetVar + v1alpha1JsonnetVar.Name = source.Name + v1alpha1JsonnetVar.Value = source.Value + var xbool bool + if source.Code != nil { + xbool = *source.Code + } + v1alpha1JsonnetVar.Code = xbool + return v1alpha1JsonnetVar +} +func (c *ConverterImpl) v1alpha1KustomizeImagesToV1alpha1KustomizeImages(source v1alpha1.KustomizeImages) KustomizeImages { + var v1alpha1KustomizeImages KustomizeImages + if source != nil { + v1alpha1KustomizeImages = make(KustomizeImages, len(source)) + for i := 0; i < len(source); i++ { + v1alpha1KustomizeImages[i] = KustomizeImage(source[i]) + } + } + return v1alpha1KustomizeImages +} +func (c *ConverterImpl) v1alpha1KustomizeImagesToV1alpha1KustomizeImages2(source KustomizeImages) v1alpha1.KustomizeImages { + var v1alpha1KustomizeImages v1alpha1.KustomizeImages + if source != nil { + v1alpha1KustomizeImages = make(v1alpha1.KustomizeImages, len(source)) + for i := 0; i < len(source); i++ { + v1alpha1KustomizeImages[i] = v1alpha1.KustomizeImage(source[i]) + } + } + return v1alpha1KustomizeImages +} +func (c *ConverterImpl) v1alpha1KustomizeReplicaToV1alpha1KustomizeReplica(source v1alpha1.KustomizeReplica) KustomizeReplica { + var v1alpha1KustomizeReplica KustomizeReplica + v1alpha1KustomizeReplica.Name = source.Name + v1alpha1KustomizeReplica.Count = c.intstrIntOrStringToIntstrIntOrString(source.Count) + return v1alpha1KustomizeReplica +} +func (c *ConverterImpl) v1alpha1KustomizeReplicaToV1alpha1KustomizeReplica2(source KustomizeReplica) v1alpha1.KustomizeReplica { + var v1alpha1KustomizeReplica v1alpha1.KustomizeReplica + v1alpha1KustomizeReplica.Name = source.Name + v1alpha1KustomizeReplica.Count = c.intstrIntOrStringToIntstrIntOrString(source.Count) + return v1alpha1KustomizeReplica +} +func (c *ConverterImpl) v1alpha1KustomizeReplicasToV1alpha1KustomizeReplicas(source v1alpha1.KustomizeReplicas) KustomizeReplicas { + var v1alpha1KustomizeReplicas KustomizeReplicas + if source != nil { + v1alpha1KustomizeReplicas = make(KustomizeReplicas, len(source)) + for i := 0; i < len(source); i++ { + v1alpha1KustomizeReplicas[i] = c.v1alpha1KustomizeReplicaToV1alpha1KustomizeReplica(source[i]) + } + } + return v1alpha1KustomizeReplicas +} +func (c *ConverterImpl) v1alpha1KustomizeReplicasToV1alpha1KustomizeReplicas2(source KustomizeReplicas) v1alpha1.KustomizeReplicas { + var v1alpha1KustomizeReplicas v1alpha1.KustomizeReplicas + if source != nil { + v1alpha1KustomizeReplicas = make(v1alpha1.KustomizeReplicas, len(source)) + for i := 0; i < len(source); i++ { + v1alpha1KustomizeReplicas[i] = c.v1alpha1KustomizeReplicaToV1alpha1KustomizeReplica2(source[i]) + } + } + return v1alpha1KustomizeReplicas +} +func (c *ConverterImpl) v1alpha1PluginConfigMapRefToV1alpha1PluginConfigMapRef(source v1alpha1.PluginConfigMapRef) PluginConfigMapRef { + var v1alpha1PluginConfigMapRef PluginConfigMapRef + v1alpha1PluginConfigMapRef.Name = source.Name + return v1alpha1PluginConfigMapRef +} +func (c *ConverterImpl) v1alpha1PluginConfigMapRefToV1alpha1PluginConfigMapRef2(source PluginConfigMapRef) v1alpha1.PluginConfigMapRef { + var v1alpha1PluginConfigMapRef v1alpha1.PluginConfigMapRef + v1alpha1PluginConfigMapRef.Name = source.Name + return v1alpha1PluginConfigMapRef +} +func (c *ConverterImpl) v1alpha1PluginInputToV1alpha1PluginInput(source v1alpha1.PluginInput) PluginInput { + var v1alpha1PluginInput PluginInput + v1alpha1PluginInput.Parameters = c.v1alpha1PluginParametersToV1alpha1PluginParameters(source.Parameters) + return v1alpha1PluginInput +} +func (c *ConverterImpl) v1alpha1PluginInputToV1alpha1PluginInput2(source PluginInput) v1alpha1.PluginInput { + var v1alpha1PluginInput v1alpha1.PluginInput + v1alpha1PluginInput.Parameters = c.v1alpha1PluginParametersToV1alpha1PluginParameters2(source.Parameters) + return v1alpha1PluginInput +} +func (c *ConverterImpl) v1alpha1PluginParametersToV1alpha1PluginParameters(source v1alpha1.PluginParameters) PluginParameters { + v1alpha1PluginParameters := make(PluginParameters, len(source)) + for key, value := range source { + v1alpha1PluginParameters[key] = c.v1JSONToV1JSON(value) + } + return v1alpha1PluginParameters +} +func (c *ConverterImpl) v1alpha1PluginParametersToV1alpha1PluginParameters2(source PluginParameters) v1alpha1.PluginParameters { + v1alpha1PluginParameters := make(v1alpha1.PluginParameters, len(source)) + for key, value := range source { + v1alpha1PluginParameters[key] = c.v1JSONToV1JSON(value) + } + return v1alpha1PluginParameters +} +func (c *ConverterImpl) v1alpha1PullRequestGeneratorFilterToV1alpha1PullRequestGeneratorFilter(source v1alpha1.PullRequestGeneratorFilter) PullRequestGeneratorFilter { + var v1alpha1PullRequestGeneratorFilter PullRequestGeneratorFilter + var pString *string + if source.BranchMatch != nil { + xstring := *source.BranchMatch + pString = &xstring + } + v1alpha1PullRequestGeneratorFilter.BranchMatch = pString + var pString2 *string + if source.TargetBranchMatch != nil { + xstring2 := *source.TargetBranchMatch + pString2 = &xstring2 + } + v1alpha1PullRequestGeneratorFilter.TargetBranchMatch = pString2 + return v1alpha1PullRequestGeneratorFilter +} +func (c *ConverterImpl) v1alpha1PullRequestGeneratorFilterToV1alpha1PullRequestGeneratorFilter2(source PullRequestGeneratorFilter) v1alpha1.PullRequestGeneratorFilter { + var v1alpha1PullRequestGeneratorFilter v1alpha1.PullRequestGeneratorFilter + var pString *string + if source.BranchMatch != nil { + xstring := *source.BranchMatch + pString = &xstring + } + v1alpha1PullRequestGeneratorFilter.BranchMatch = pString + var pString2 *string + if source.TargetBranchMatch != nil { + xstring2 := *source.TargetBranchMatch + pString2 = &xstring2 + } + v1alpha1PullRequestGeneratorFilter.TargetBranchMatch = pString2 + return v1alpha1PullRequestGeneratorFilter +} +func (c *ConverterImpl) v1alpha1ResourceIgnoreDifferencesListToV1alpha1IgnoreDifferences(source []ResourceIgnoreDifferences) v1alpha1.IgnoreDifferences { + var v1alpha1IgnoreDifferences v1alpha1.IgnoreDifferences + if source != nil { + v1alpha1IgnoreDifferences = make(v1alpha1.IgnoreDifferences, len(source)) + for i := 0; i < len(source); i++ { + v1alpha1IgnoreDifferences[i] = c.v1alpha1ResourceIgnoreDifferencesToV1alpha1ResourceIgnoreDifferences2(source[i]) + } + } + return v1alpha1IgnoreDifferences +} +func (c *ConverterImpl) v1alpha1ResourceIgnoreDifferencesToV1alpha1ResourceIgnoreDifferences(source v1alpha1.ResourceIgnoreDifferences) ResourceIgnoreDifferences { + var v1alpha1ResourceIgnoreDifferences ResourceIgnoreDifferences + v1alpha1ResourceIgnoreDifferences.Group = source.Group + v1alpha1ResourceIgnoreDifferences.Kind = source.Kind + v1alpha1ResourceIgnoreDifferences.Name = source.Name + v1alpha1ResourceIgnoreDifferences.Namespace = source.Namespace + var stringList []string + if source.JSONPointers != nil { + stringList = make([]string, len(source.JSONPointers)) + for i := 0; i < len(source.JSONPointers); i++ { + stringList[i] = source.JSONPointers[i] + } + } + v1alpha1ResourceIgnoreDifferences.JSONPointers = stringList + var stringList2 []string + if source.JQPathExpressions != nil { + stringList2 = make([]string, len(source.JQPathExpressions)) + for j := 0; j < len(source.JQPathExpressions); j++ { + stringList2[j] = source.JQPathExpressions[j] + } + } + v1alpha1ResourceIgnoreDifferences.JQPathExpressions = stringList2 + var stringList3 []string + if source.ManagedFieldsManagers != nil { + stringList3 = make([]string, len(source.ManagedFieldsManagers)) + for k := 0; k < len(source.ManagedFieldsManagers); k++ { + stringList3[k] = source.ManagedFieldsManagers[k] + } + } + v1alpha1ResourceIgnoreDifferences.ManagedFieldsManagers = stringList3 + return v1alpha1ResourceIgnoreDifferences +} +func (c *ConverterImpl) v1alpha1ResourceIgnoreDifferencesToV1alpha1ResourceIgnoreDifferences2(source ResourceIgnoreDifferences) v1alpha1.ResourceIgnoreDifferences { + var v1alpha1ResourceIgnoreDifferences v1alpha1.ResourceIgnoreDifferences + v1alpha1ResourceIgnoreDifferences.Group = source.Group + v1alpha1ResourceIgnoreDifferences.Kind = source.Kind + v1alpha1ResourceIgnoreDifferences.Name = source.Name + v1alpha1ResourceIgnoreDifferences.Namespace = source.Namespace + var stringList []string + if source.JSONPointers != nil { + stringList = make([]string, len(source.JSONPointers)) + for i := 0; i < len(source.JSONPointers); i++ { + stringList[i] = source.JSONPointers[i] + } + } + v1alpha1ResourceIgnoreDifferences.JSONPointers = stringList + var stringList2 []string + if source.JQPathExpressions != nil { + stringList2 = make([]string, len(source.JQPathExpressions)) + for j := 0; j < len(source.JQPathExpressions); j++ { + stringList2[j] = source.JQPathExpressions[j] + } + } + v1alpha1ResourceIgnoreDifferences.JQPathExpressions = stringList2 + var stringList3 []string + if source.ManagedFieldsManagers != nil { + stringList3 = make([]string, len(source.ManagedFieldsManagers)) + for k := 0; k < len(source.ManagedFieldsManagers); k++ { + stringList3[k] = source.ManagedFieldsManagers[k] + } + } + v1alpha1ResourceIgnoreDifferences.ManagedFieldsManagers = stringList3 + return v1alpha1ResourceIgnoreDifferences +} +func (c *ConverterImpl) v1alpha1SCMProviderGeneratorFilterToV1alpha1SCMProviderGeneratorFilter(source v1alpha1.SCMProviderGeneratorFilter) SCMProviderGeneratorFilter { + var v1alpha1SCMProviderGeneratorFilter SCMProviderGeneratorFilter + var pString *string + if source.RepositoryMatch != nil { + xstring := *source.RepositoryMatch + pString = &xstring + } + v1alpha1SCMProviderGeneratorFilter.RepositoryMatch = pString + var stringList []string + if source.PathsExist != nil { + stringList = make([]string, len(source.PathsExist)) + for i := 0; i < len(source.PathsExist); i++ { + stringList[i] = source.PathsExist[i] + } + } + v1alpha1SCMProviderGeneratorFilter.PathsExist = stringList + var stringList2 []string + if source.PathsDoNotExist != nil { + stringList2 = make([]string, len(source.PathsDoNotExist)) + for j := 0; j < len(source.PathsDoNotExist); j++ { + stringList2[j] = source.PathsDoNotExist[j] + } + } + v1alpha1SCMProviderGeneratorFilter.PathsDoNotExist = stringList2 + var pString2 *string + if source.LabelMatch != nil { + xstring2 := *source.LabelMatch + pString2 = &xstring2 + } + v1alpha1SCMProviderGeneratorFilter.LabelMatch = pString2 + var pString3 *string + if source.BranchMatch != nil { + xstring3 := *source.BranchMatch + pString3 = &xstring3 + } + v1alpha1SCMProviderGeneratorFilter.BranchMatch = pString3 + return v1alpha1SCMProviderGeneratorFilter +} +func (c *ConverterImpl) v1alpha1SCMProviderGeneratorFilterToV1alpha1SCMProviderGeneratorFilter2(source SCMProviderGeneratorFilter) v1alpha1.SCMProviderGeneratorFilter { + var v1alpha1SCMProviderGeneratorFilter v1alpha1.SCMProviderGeneratorFilter + var pString *string + if source.RepositoryMatch != nil { + xstring := *source.RepositoryMatch + pString = &xstring + } + v1alpha1SCMProviderGeneratorFilter.RepositoryMatch = pString + var stringList []string + if source.PathsExist != nil { + stringList = make([]string, len(source.PathsExist)) + for i := 0; i < len(source.PathsExist); i++ { + stringList[i] = source.PathsExist[i] + } + } + v1alpha1SCMProviderGeneratorFilter.PathsExist = stringList + var stringList2 []string + if source.PathsDoNotExist != nil { + stringList2 = make([]string, len(source.PathsDoNotExist)) + for j := 0; j < len(source.PathsDoNotExist); j++ { + stringList2[j] = source.PathsDoNotExist[j] + } + } + v1alpha1SCMProviderGeneratorFilter.PathsDoNotExist = stringList2 + var pString2 *string + if source.LabelMatch != nil { + xstring2 := *source.LabelMatch + pString2 = &xstring2 + } + v1alpha1SCMProviderGeneratorFilter.LabelMatch = pString2 + var pString3 *string + if source.BranchMatch != nil { + xstring3 := *source.BranchMatch + pString3 = &xstring3 + } + v1alpha1SCMProviderGeneratorFilter.BranchMatch = pString3 + return v1alpha1SCMProviderGeneratorFilter +} +func (c *ConverterImpl) v1alpha1SyncOptionsToV1alpha1SyncOptions(source v1alpha1.SyncOptions) SyncOptions { + var v1alpha1SyncOptions SyncOptions + if source != nil { + v1alpha1SyncOptions = make(SyncOptions, len(source)) + for i := 0; i < len(source); i++ { + v1alpha1SyncOptions[i] = source[i] + } + } + return v1alpha1SyncOptions +} +func (c *ConverterImpl) v1alpha1SyncOptionsToV1alpha1SyncOptions2(source SyncOptions) v1alpha1.SyncOptions { + var v1alpha1SyncOptions v1alpha1.SyncOptions + if source != nil { + v1alpha1SyncOptions = make(v1alpha1.SyncOptions, len(source)) + for i := 0; i < len(source); i++ { + v1alpha1SyncOptions[i] = source[i] + } + } + return v1alpha1SyncOptions +} diff --git a/apis/applicationsets/v1alpha1/zz_generated.deepcopy.go b/apis/applicationsets/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000..24be0f4 --- /dev/null +++ b/apis/applicationsets/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,2472 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright 2023 The Crossplane Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + "github.com/crossplane/crossplane-runtime/apis/common/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/intstr" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationDestination) DeepCopyInto(out *ApplicationDestination) { + *out = *in + if in.Server != nil { + in, out := &in.Server, &out.Server + *out = new(string) + **out = **in + } + if in.ServerRef != nil { + in, out := &in.ServerRef, &out.ServerRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.ServerSelector != nil { + in, out := &in.ServerSelector, &out.ServerSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } + if in.Namespace != nil { + in, out := &in.Namespace, &out.Namespace + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.NameRef != nil { + in, out := &in.NameRef, &out.NameRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.NameSelector != nil { + in, out := &in.NameSelector, &out.NameSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationDestination. +func (in *ApplicationDestination) DeepCopy() *ApplicationDestination { + if in == nil { + return nil + } + out := new(ApplicationDestination) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationMatchExpression) DeepCopyInto(out *ApplicationMatchExpression) { + *out = *in + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationMatchExpression. +func (in *ApplicationMatchExpression) DeepCopy() *ApplicationMatchExpression { + if in == nil { + return nil + } + out := new(ApplicationMatchExpression) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationPreservedFields) DeepCopyInto(out *ApplicationPreservedFields) { + *out = *in + if in.Annotations != nil { + in, out := &in.Annotations, &out.Annotations + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationPreservedFields. +func (in *ApplicationPreservedFields) DeepCopy() *ApplicationPreservedFields { + if in == nil { + return nil + } + out := new(ApplicationPreservedFields) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSet) DeepCopyInto(out *ApplicationSet) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSet. +func (in *ApplicationSet) DeepCopy() *ApplicationSet { + if in == nil { + return nil + } + out := new(ApplicationSet) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ApplicationSet) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSetApplicationStatus) DeepCopyInto(out *ApplicationSetApplicationStatus) { + *out = *in + if in.LastTransitionTime != nil { + in, out := &in.LastTransitionTime, &out.LastTransitionTime + *out = (*in).DeepCopy() + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSetApplicationStatus. +func (in *ApplicationSetApplicationStatus) DeepCopy() *ApplicationSetApplicationStatus { + if in == nil { + return nil + } + out := new(ApplicationSetApplicationStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSetCondition) DeepCopyInto(out *ApplicationSetCondition) { + *out = *in + if in.LastTransitionTime != nil { + in, out := &in.LastTransitionTime, &out.LastTransitionTime + *out = (*in).DeepCopy() + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSetCondition. +func (in *ApplicationSetCondition) DeepCopy() *ApplicationSetCondition { + if in == nil { + return nil + } + out := new(ApplicationSetCondition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSetGenerator) DeepCopyInto(out *ApplicationSetGenerator) { + *out = *in + if in.List != nil { + in, out := &in.List, &out.List + *out = new(ListGenerator) + (*in).DeepCopyInto(*out) + } + if in.Clusters != nil { + in, out := &in.Clusters, &out.Clusters + *out = new(ClusterGenerator) + (*in).DeepCopyInto(*out) + } + if in.Git != nil { + in, out := &in.Git, &out.Git + *out = new(GitGenerator) + (*in).DeepCopyInto(*out) + } + if in.SCMProvider != nil { + in, out := &in.SCMProvider, &out.SCMProvider + *out = new(SCMProviderGenerator) + (*in).DeepCopyInto(*out) + } + if in.ClusterDecisionResource != nil { + in, out := &in.ClusterDecisionResource, &out.ClusterDecisionResource + *out = new(DuckTypeGenerator) + (*in).DeepCopyInto(*out) + } + if in.PullRequest != nil { + in, out := &in.PullRequest, &out.PullRequest + *out = new(PullRequestGenerator) + (*in).DeepCopyInto(*out) + } + if in.Matrix != nil { + in, out := &in.Matrix, &out.Matrix + *out = new(MatrixGenerator) + (*in).DeepCopyInto(*out) + } + if in.Merge != nil { + in, out := &in.Merge, &out.Merge + *out = new(MergeGenerator) + (*in).DeepCopyInto(*out) + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(metav1.LabelSelector) + (*in).DeepCopyInto(*out) + } + if in.Plugin != nil { + in, out := &in.Plugin, &out.Plugin + *out = new(PluginGenerator) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSetGenerator. +func (in *ApplicationSetGenerator) DeepCopy() *ApplicationSetGenerator { + if in == nil { + return nil + } + out := new(ApplicationSetGenerator) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSetList) DeepCopyInto(out *ApplicationSetList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ApplicationSet, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSetList. +func (in *ApplicationSetList) DeepCopy() *ApplicationSetList { + if in == nil { + return nil + } + out := new(ApplicationSetList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ApplicationSetList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSetNestedGenerator) DeepCopyInto(out *ApplicationSetNestedGenerator) { + *out = *in + if in.List != nil { + in, out := &in.List, &out.List + *out = new(ListGenerator) + (*in).DeepCopyInto(*out) + } + if in.Clusters != nil { + in, out := &in.Clusters, &out.Clusters + *out = new(ClusterGenerator) + (*in).DeepCopyInto(*out) + } + if in.Git != nil { + in, out := &in.Git, &out.Git + *out = new(GitGenerator) + (*in).DeepCopyInto(*out) + } + if in.SCMProvider != nil { + in, out := &in.SCMProvider, &out.SCMProvider + *out = new(SCMProviderGenerator) + (*in).DeepCopyInto(*out) + } + if in.ClusterDecisionResource != nil { + in, out := &in.ClusterDecisionResource, &out.ClusterDecisionResource + *out = new(DuckTypeGenerator) + (*in).DeepCopyInto(*out) + } + if in.PullRequest != nil { + in, out := &in.PullRequest, &out.PullRequest + *out = new(PullRequestGenerator) + (*in).DeepCopyInto(*out) + } + if in.Matrix != nil { + in, out := &in.Matrix, &out.Matrix + *out = new(apiextensionsv1.JSON) + (*in).DeepCopyInto(*out) + } + if in.Merge != nil { + in, out := &in.Merge, &out.Merge + *out = new(apiextensionsv1.JSON) + (*in).DeepCopyInto(*out) + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(metav1.LabelSelector) + (*in).DeepCopyInto(*out) + } + if in.Plugin != nil { + in, out := &in.Plugin, &out.Plugin + *out = new(PluginGenerator) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSetNestedGenerator. +func (in *ApplicationSetNestedGenerator) DeepCopy() *ApplicationSetNestedGenerator { + if in == nil { + return nil + } + out := new(ApplicationSetNestedGenerator) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in ApplicationSetNestedGenerators) DeepCopyInto(out *ApplicationSetNestedGenerators) { + { + in := &in + *out = make(ApplicationSetNestedGenerators, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSetNestedGenerators. +func (in ApplicationSetNestedGenerators) DeepCopy() ApplicationSetNestedGenerators { + if in == nil { + return nil + } + out := new(ApplicationSetNestedGenerators) + in.DeepCopyInto(out) + return *out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSetParameters) DeepCopyInto(out *ApplicationSetParameters) { + *out = *in + if in.Generators != nil { + in, out := &in.Generators, &out.Generators + *out = make([]ApplicationSetGenerator, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + in.Template.DeepCopyInto(&out.Template) + if in.SyncPolicy != nil { + in, out := &in.SyncPolicy, &out.SyncPolicy + *out = new(ApplicationSetSyncPolicy) + (*in).DeepCopyInto(*out) + } + if in.Strategy != nil { + in, out := &in.Strategy, &out.Strategy + *out = new(ApplicationSetStrategy) + (*in).DeepCopyInto(*out) + } + if in.PreservedFields != nil { + in, out := &in.PreservedFields, &out.PreservedFields + *out = new(ApplicationPreservedFields) + (*in).DeepCopyInto(*out) + } + if in.GoTemplateOptions != nil { + in, out := &in.GoTemplateOptions, &out.GoTemplateOptions + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSetParameters. +func (in *ApplicationSetParameters) DeepCopy() *ApplicationSetParameters { + if in == nil { + return nil + } + out := new(ApplicationSetParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSetRolloutStep) DeepCopyInto(out *ApplicationSetRolloutStep) { + *out = *in + if in.MatchExpressions != nil { + in, out := &in.MatchExpressions, &out.MatchExpressions + *out = make([]ApplicationMatchExpression, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.MaxUpdate != nil { + in, out := &in.MaxUpdate, &out.MaxUpdate + *out = new(intstr.IntOrString) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSetRolloutStep. +func (in *ApplicationSetRolloutStep) DeepCopy() *ApplicationSetRolloutStep { + if in == nil { + return nil + } + out := new(ApplicationSetRolloutStep) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSetRolloutStrategy) DeepCopyInto(out *ApplicationSetRolloutStrategy) { + *out = *in + if in.Steps != nil { + in, out := &in.Steps, &out.Steps + *out = make([]ApplicationSetRolloutStep, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSetRolloutStrategy. +func (in *ApplicationSetRolloutStrategy) DeepCopy() *ApplicationSetRolloutStrategy { + if in == nil { + return nil + } + out := new(ApplicationSetRolloutStrategy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSetSpec) DeepCopyInto(out *ApplicationSetSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSetSpec. +func (in *ApplicationSetSpec) DeepCopy() *ApplicationSetSpec { + if in == nil { + return nil + } + out := new(ApplicationSetSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSetStatus) DeepCopyInto(out *ApplicationSetStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSetStatus. +func (in *ApplicationSetStatus) DeepCopy() *ApplicationSetStatus { + if in == nil { + return nil + } + out := new(ApplicationSetStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSetStrategy) DeepCopyInto(out *ApplicationSetStrategy) { + *out = *in + if in.RollingSync != nil { + in, out := &in.RollingSync, &out.RollingSync + *out = new(ApplicationSetRolloutStrategy) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSetStrategy. +func (in *ApplicationSetStrategy) DeepCopy() *ApplicationSetStrategy { + if in == nil { + return nil + } + out := new(ApplicationSetStrategy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSetSyncPolicy) DeepCopyInto(out *ApplicationSetSyncPolicy) { + *out = *in + if in.ApplicationsSync != nil { + in, out := &in.ApplicationsSync, &out.ApplicationsSync + *out = new(ApplicationsSyncPolicy) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSetSyncPolicy. +func (in *ApplicationSetSyncPolicy) DeepCopy() *ApplicationSetSyncPolicy { + if in == nil { + return nil + } + out := new(ApplicationSetSyncPolicy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSetTemplate) DeepCopyInto(out *ApplicationSetTemplate) { + *out = *in + in.ApplicationSetTemplateMeta.DeepCopyInto(&out.ApplicationSetTemplateMeta) + in.Spec.DeepCopyInto(&out.Spec) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSetTemplate. +func (in *ApplicationSetTemplate) DeepCopy() *ApplicationSetTemplate { + if in == nil { + return nil + } + out := new(ApplicationSetTemplate) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSetTemplateMeta) DeepCopyInto(out *ApplicationSetTemplateMeta) { + *out = *in + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Annotations != nil { + in, out := &in.Annotations, &out.Annotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Finalizers != nil { + in, out := &in.Finalizers, &out.Finalizers + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSetTemplateMeta. +func (in *ApplicationSetTemplateMeta) DeepCopy() *ApplicationSetTemplateMeta { + if in == nil { + return nil + } + out := new(ApplicationSetTemplateMeta) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSetTerminalGenerator) DeepCopyInto(out *ApplicationSetTerminalGenerator) { + *out = *in + if in.List != nil { + in, out := &in.List, &out.List + *out = new(ListGenerator) + (*in).DeepCopyInto(*out) + } + if in.Clusters != nil { + in, out := &in.Clusters, &out.Clusters + *out = new(ClusterGenerator) + (*in).DeepCopyInto(*out) + } + if in.Git != nil { + in, out := &in.Git, &out.Git + *out = new(GitGenerator) + (*in).DeepCopyInto(*out) + } + if in.SCMProvider != nil { + in, out := &in.SCMProvider, &out.SCMProvider + *out = new(SCMProviderGenerator) + (*in).DeepCopyInto(*out) + } + if in.ClusterDecisionResource != nil { + in, out := &in.ClusterDecisionResource, &out.ClusterDecisionResource + *out = new(DuckTypeGenerator) + (*in).DeepCopyInto(*out) + } + if in.PullRequest != nil { + in, out := &in.PullRequest, &out.PullRequest + *out = new(PullRequestGenerator) + (*in).DeepCopyInto(*out) + } + if in.Plugin != nil { + in, out := &in.Plugin, &out.Plugin + *out = new(PluginGenerator) + (*in).DeepCopyInto(*out) + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(metav1.LabelSelector) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSetTerminalGenerator. +func (in *ApplicationSetTerminalGenerator) DeepCopy() *ApplicationSetTerminalGenerator { + if in == nil { + return nil + } + out := new(ApplicationSetTerminalGenerator) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in ApplicationSetTerminalGenerators) DeepCopyInto(out *ApplicationSetTerminalGenerators) { + { + in := &in + *out = make(ApplicationSetTerminalGenerators, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSetTerminalGenerators. +func (in ApplicationSetTerminalGenerators) DeepCopy() ApplicationSetTerminalGenerators { + if in == nil { + return nil + } + out := new(ApplicationSetTerminalGenerators) + in.DeepCopyInto(out) + return *out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSource) DeepCopyInto(out *ApplicationSource) { + *out = *in + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(string) + **out = **in + } + if in.TargetRevision != nil { + in, out := &in.TargetRevision, &out.TargetRevision + *out = new(string) + **out = **in + } + if in.Helm != nil { + in, out := &in.Helm, &out.Helm + *out = new(ApplicationSourceHelm) + (*in).DeepCopyInto(*out) + } + if in.Kustomize != nil { + in, out := &in.Kustomize, &out.Kustomize + *out = new(ApplicationSourceKustomize) + (*in).DeepCopyInto(*out) + } + if in.Directory != nil { + in, out := &in.Directory, &out.Directory + *out = new(ApplicationSourceDirectory) + (*in).DeepCopyInto(*out) + } + if in.Plugin != nil { + in, out := &in.Plugin, &out.Plugin + *out = new(ApplicationSourcePlugin) + (*in).DeepCopyInto(*out) + } + if in.Chart != nil { + in, out := &in.Chart, &out.Chart + *out = new(string) + **out = **in + } + if in.Ref != nil { + in, out := &in.Ref, &out.Ref + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSource. +func (in *ApplicationSource) DeepCopy() *ApplicationSource { + if in == nil { + return nil + } + out := new(ApplicationSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSourceDirectory) DeepCopyInto(out *ApplicationSourceDirectory) { + *out = *in + if in.Recurse != nil { + in, out := &in.Recurse, &out.Recurse + *out = new(bool) + **out = **in + } + in.Jsonnet.DeepCopyInto(&out.Jsonnet) + if in.Exclude != nil { + in, out := &in.Exclude, &out.Exclude + *out = new(string) + **out = **in + } + if in.Include != nil { + in, out := &in.Include, &out.Include + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSourceDirectory. +func (in *ApplicationSourceDirectory) DeepCopy() *ApplicationSourceDirectory { + if in == nil { + return nil + } + out := new(ApplicationSourceDirectory) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSourceHelm) DeepCopyInto(out *ApplicationSourceHelm) { + *out = *in + if in.ValueFiles != nil { + in, out := &in.ValueFiles, &out.ValueFiles + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Parameters != nil { + in, out := &in.Parameters, &out.Parameters + *out = make([]HelmParameter, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ReleaseName != nil { + in, out := &in.ReleaseName, &out.ReleaseName + *out = new(string) + **out = **in + } + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = new(string) + **out = **in + } + if in.FileParameters != nil { + in, out := &in.FileParameters, &out.FileParameters + *out = make([]HelmFileParameter, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Version != nil { + in, out := &in.Version, &out.Version + *out = new(string) + **out = **in + } + if in.PassCredentials != nil { + in, out := &in.PassCredentials, &out.PassCredentials + *out = new(bool) + **out = **in + } + if in.IgnoreMissingValueFiles != nil { + in, out := &in.IgnoreMissingValueFiles, &out.IgnoreMissingValueFiles + *out = new(bool) + **out = **in + } + if in.SkipCrds != nil { + in, out := &in.SkipCrds, &out.SkipCrds + *out = new(bool) + **out = **in + } + in.ValuesObject.DeepCopyInto(&out.ValuesObject) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSourceHelm. +func (in *ApplicationSourceHelm) DeepCopy() *ApplicationSourceHelm { + if in == nil { + return nil + } + out := new(ApplicationSourceHelm) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSourceJsonnet) DeepCopyInto(out *ApplicationSourceJsonnet) { + *out = *in + if in.ExtVars != nil { + in, out := &in.ExtVars, &out.ExtVars + *out = make([]JsonnetVar, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.TLAs != nil { + in, out := &in.TLAs, &out.TLAs + *out = make([]JsonnetVar, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Libs != nil { + in, out := &in.Libs, &out.Libs + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSourceJsonnet. +func (in *ApplicationSourceJsonnet) DeepCopy() *ApplicationSourceJsonnet { + if in == nil { + return nil + } + out := new(ApplicationSourceJsonnet) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSourceKustomize) DeepCopyInto(out *ApplicationSourceKustomize) { + *out = *in + if in.NamePrefix != nil { + in, out := &in.NamePrefix, &out.NamePrefix + *out = new(string) + **out = **in + } + if in.NameSuffix != nil { + in, out := &in.NameSuffix, &out.NameSuffix + *out = new(string) + **out = **in + } + if in.Images != nil { + in, out := &in.Images, &out.Images + *out = make(KustomizeImages, len(*in)) + copy(*out, *in) + } + if in.CommonLabels != nil { + in, out := &in.CommonLabels, &out.CommonLabels + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Version != nil { + in, out := &in.Version, &out.Version + *out = new(string) + **out = **in + } + if in.CommonAnnotations != nil { + in, out := &in.CommonAnnotations, &out.CommonAnnotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ForceCommonLabels != nil { + in, out := &in.ForceCommonLabels, &out.ForceCommonLabels + *out = new(bool) + **out = **in + } + if in.ForceCommonAnnotations != nil { + in, out := &in.ForceCommonAnnotations, &out.ForceCommonAnnotations + *out = new(bool) + **out = **in + } + if in.Namespace != nil { + in, out := &in.Namespace, &out.Namespace + *out = new(string) + **out = **in + } + if in.CommonAnnotationsEnvsubst != nil { + in, out := &in.CommonAnnotationsEnvsubst, &out.CommonAnnotationsEnvsubst + *out = new(bool) + **out = **in + } + if in.Replicas != nil { + in, out := &in.Replicas, &out.Replicas + *out = make(KustomizeReplicas, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSourceKustomize. +func (in *ApplicationSourceKustomize) DeepCopy() *ApplicationSourceKustomize { + if in == nil { + return nil + } + out := new(ApplicationSourceKustomize) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSourcePlugin) DeepCopyInto(out *ApplicationSourcePlugin) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make(Env, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(EnvEntry) + **out = **in + } + } + } + if in.Parameters != nil { + in, out := &in.Parameters, &out.Parameters + *out = make(ApplicationSourcePluginParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSourcePlugin. +func (in *ApplicationSourcePlugin) DeepCopy() *ApplicationSourcePlugin { + if in == nil { + return nil + } + out := new(ApplicationSourcePlugin) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSourcePluginParameter) DeepCopyInto(out *ApplicationSourcePluginParameter) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.String_ != nil { + in, out := &in.String_, &out.String_ + *out = new(string) + **out = **in + } + if in.OptionalMap != nil { + in, out := &in.OptionalMap, &out.OptionalMap + *out = new(OptionalMap) + (*in).DeepCopyInto(*out) + } + if in.OptionalArray != nil { + in, out := &in.OptionalArray, &out.OptionalArray + *out = new(OptionalArray) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSourcePluginParameter. +func (in *ApplicationSourcePluginParameter) DeepCopy() *ApplicationSourcePluginParameter { + if in == nil { + return nil + } + out := new(ApplicationSourcePluginParameter) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in ApplicationSourcePluginParameters) DeepCopyInto(out *ApplicationSourcePluginParameters) { + { + in := &in + *out = make(ApplicationSourcePluginParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSourcePluginParameters. +func (in ApplicationSourcePluginParameters) DeepCopy() ApplicationSourcePluginParameters { + if in == nil { + return nil + } + out := new(ApplicationSourcePluginParameters) + in.DeepCopyInto(out) + return *out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in ApplicationSources) DeepCopyInto(out *ApplicationSources) { + { + in := &in + *out = make(ApplicationSources, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSources. +func (in ApplicationSources) DeepCopy() ApplicationSources { + if in == nil { + return nil + } + out := new(ApplicationSources) + in.DeepCopyInto(out) + return *out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSpec) DeepCopyInto(out *ApplicationSpec) { + *out = *in + if in.Source != nil { + in, out := &in.Source, &out.Source + *out = new(ApplicationSource) + (*in).DeepCopyInto(*out) + } + in.Destination.DeepCopyInto(&out.Destination) + if in.SyncPolicy != nil { + in, out := &in.SyncPolicy, &out.SyncPolicy + *out = new(SyncPolicy) + (*in).DeepCopyInto(*out) + } + if in.IgnoreDifferences != nil { + in, out := &in.IgnoreDifferences, &out.IgnoreDifferences + *out = make([]ResourceIgnoreDifferences, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Info != nil { + in, out := &in.Info, &out.Info + *out = make([]Info, len(*in)) + copy(*out, *in) + } + if in.RevisionHistoryLimit != nil { + in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit + *out = new(int64) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make(ApplicationSources, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSpec. +func (in *ApplicationSpec) DeepCopy() *ApplicationSpec { + if in == nil { + return nil + } + out := new(ApplicationSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ArgoApplicationSetStatus) DeepCopyInto(out *ArgoApplicationSetStatus) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]ApplicationSetCondition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ApplicationStatus != nil { + in, out := &in.ApplicationStatus, &out.ApplicationStatus + *out = make([]ApplicationSetApplicationStatus, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArgoApplicationSetStatus. +func (in *ArgoApplicationSetStatus) DeepCopy() *ArgoApplicationSetStatus { + if in == nil { + return nil + } + out := new(ArgoApplicationSetStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Backoff) DeepCopyInto(out *Backoff) { + *out = *in + if in.Duration != nil { + in, out := &in.Duration, &out.Duration + *out = new(string) + **out = **in + } + if in.Factor != nil { + in, out := &in.Factor, &out.Factor + *out = new(int64) + **out = **in + } + if in.MaxDuration != nil { + in, out := &in.MaxDuration, &out.MaxDuration + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Backoff. +func (in *Backoff) DeepCopy() *Backoff { + if in == nil { + return nil + } + out := new(Backoff) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BasicAuthBitbucketServer) DeepCopyInto(out *BasicAuthBitbucketServer) { + *out = *in + if in.PasswordRef != nil { + in, out := &in.PasswordRef, &out.PasswordRef + *out = new(SecretRef) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BasicAuthBitbucketServer. +func (in *BasicAuthBitbucketServer) DeepCopy() *BasicAuthBitbucketServer { + if in == nil { + return nil + } + out := new(BasicAuthBitbucketServer) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BearerTokenBitbucketCloud) DeepCopyInto(out *BearerTokenBitbucketCloud) { + *out = *in + if in.TokenRef != nil { + in, out := &in.TokenRef, &out.TokenRef + *out = new(SecretRef) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BearerTokenBitbucketCloud. +func (in *BearerTokenBitbucketCloud) DeepCopy() *BearerTokenBitbucketCloud { + if in == nil { + return nil + } + out := new(BearerTokenBitbucketCloud) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterGenerator) DeepCopyInto(out *ClusterGenerator) { + *out = *in + in.Selector.DeepCopyInto(&out.Selector) + in.Template.DeepCopyInto(&out.Template) + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterGenerator. +func (in *ClusterGenerator) DeepCopy() *ClusterGenerator { + if in == nil { + return nil + } + out := new(ClusterGenerator) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConnectionState) DeepCopyInto(out *ConnectionState) { + *out = *in + if in.ModifiedAt != nil { + in, out := &in.ModifiedAt, &out.ModifiedAt + *out = (*in).DeepCopy() + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionState. +func (in *ConnectionState) DeepCopy() *ConnectionState { + if in == nil { + return nil + } + out := new(ConnectionState) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DuckTypeGenerator) DeepCopyInto(out *DuckTypeGenerator) { + *out = *in + if in.RequeueAfterSeconds != nil { + in, out := &in.RequeueAfterSeconds, &out.RequeueAfterSeconds + *out = new(int64) + **out = **in + } + in.LabelSelector.DeepCopyInto(&out.LabelSelector) + in.Template.DeepCopyInto(&out.Template) + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DuckTypeGenerator. +func (in *DuckTypeGenerator) DeepCopy() *DuckTypeGenerator { + if in == nil { + return nil + } + out := new(DuckTypeGenerator) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in Env) DeepCopyInto(out *Env) { + { + in := &in + *out = make(Env, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(EnvEntry) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Env. +func (in Env) DeepCopy() Env { + if in == nil { + return nil + } + out := new(Env) + in.DeepCopyInto(out) + return *out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EnvEntry) DeepCopyInto(out *EnvEntry) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvEntry. +func (in *EnvEntry) DeepCopy() *EnvEntry { + if in == nil { + return nil + } + out := new(EnvEntry) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GitDirectoryGeneratorItem) DeepCopyInto(out *GitDirectoryGeneratorItem) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GitDirectoryGeneratorItem. +func (in *GitDirectoryGeneratorItem) DeepCopy() *GitDirectoryGeneratorItem { + if in == nil { + return nil + } + out := new(GitDirectoryGeneratorItem) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GitFileGeneratorItem) DeepCopyInto(out *GitFileGeneratorItem) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GitFileGeneratorItem. +func (in *GitFileGeneratorItem) DeepCopy() *GitFileGeneratorItem { + if in == nil { + return nil + } + out := new(GitFileGeneratorItem) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GitGenerator) DeepCopyInto(out *GitGenerator) { + *out = *in + if in.Directories != nil { + in, out := &in.Directories, &out.Directories + *out = make([]GitDirectoryGeneratorItem, len(*in)) + copy(*out, *in) + } + if in.Files != nil { + in, out := &in.Files, &out.Files + *out = make([]GitFileGeneratorItem, len(*in)) + copy(*out, *in) + } + if in.RequeueAfterSeconds != nil { + in, out := &in.RequeueAfterSeconds, &out.RequeueAfterSeconds + *out = new(int64) + **out = **in + } + in.Template.DeepCopyInto(&out.Template) + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GitGenerator. +func (in *GitGenerator) DeepCopy() *GitGenerator { + if in == nil { + return nil + } + out := new(GitGenerator) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HelmFileParameter) DeepCopyInto(out *HelmFileParameter) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmFileParameter. +func (in *HelmFileParameter) DeepCopy() *HelmFileParameter { + if in == nil { + return nil + } + out := new(HelmFileParameter) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HelmParameter) DeepCopyInto(out *HelmParameter) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } + if in.ForceString != nil { + in, out := &in.ForceString, &out.ForceString + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmParameter. +func (in *HelmParameter) DeepCopy() *HelmParameter { + if in == nil { + return nil + } + out := new(HelmParameter) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Info) DeepCopyInto(out *Info) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Info. +func (in *Info) DeepCopy() *Info { + if in == nil { + return nil + } + out := new(Info) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JsonnetVar) DeepCopyInto(out *JsonnetVar) { + *out = *in + if in.Code != nil { + in, out := &in.Code, &out.Code + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JsonnetVar. +func (in *JsonnetVar) DeepCopy() *JsonnetVar { + if in == nil { + return nil + } + out := new(JsonnetVar) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in KustomizeImages) DeepCopyInto(out *KustomizeImages) { + { + in := &in + *out = make(KustomizeImages, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KustomizeImages. +func (in KustomizeImages) DeepCopy() KustomizeImages { + if in == nil { + return nil + } + out := new(KustomizeImages) + in.DeepCopyInto(out) + return *out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KustomizeReplica) DeepCopyInto(out *KustomizeReplica) { + *out = *in + out.Count = in.Count +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KustomizeReplica. +func (in *KustomizeReplica) DeepCopy() *KustomizeReplica { + if in == nil { + return nil + } + out := new(KustomizeReplica) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in KustomizeReplicas) DeepCopyInto(out *KustomizeReplicas) { + { + in := &in + *out = make(KustomizeReplicas, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KustomizeReplicas. +func (in KustomizeReplicas) DeepCopy() KustomizeReplicas { + if in == nil { + return nil + } + out := new(KustomizeReplicas) + in.DeepCopyInto(out) + return *out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ListGenerator) DeepCopyInto(out *ListGenerator) { + *out = *in + if in.Elements != nil { + in, out := &in.Elements, &out.Elements + *out = make([]apiextensionsv1.JSON, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + in.Template.DeepCopyInto(&out.Template) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ListGenerator. +func (in *ListGenerator) DeepCopy() *ListGenerator { + if in == nil { + return nil + } + out := new(ListGenerator) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ManagedNamespaceMetadata) DeepCopyInto(out *ManagedNamespaceMetadata) { + *out = *in + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Annotations != nil { + in, out := &in.Annotations, &out.Annotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedNamespaceMetadata. +func (in *ManagedNamespaceMetadata) DeepCopy() *ManagedNamespaceMetadata { + if in == nil { + return nil + } + out := new(ManagedNamespaceMetadata) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MatrixGenerator) DeepCopyInto(out *MatrixGenerator) { + *out = *in + if in.Generators != nil { + in, out := &in.Generators, &out.Generators + *out = make([]ApplicationSetNestedGenerator, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + in.Template.DeepCopyInto(&out.Template) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MatrixGenerator. +func (in *MatrixGenerator) DeepCopy() *MatrixGenerator { + if in == nil { + return nil + } + out := new(MatrixGenerator) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MergeGenerator) DeepCopyInto(out *MergeGenerator) { + *out = *in + if in.Generators != nil { + in, out := &in.Generators, &out.Generators + *out = make([]ApplicationSetNestedGenerator, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.MergeKeys != nil { + in, out := &in.MergeKeys, &out.MergeKeys + *out = make([]string, len(*in)) + copy(*out, *in) + } + in.Template.DeepCopyInto(&out.Template) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MergeGenerator. +func (in *MergeGenerator) DeepCopy() *MergeGenerator { + if in == nil { + return nil + } + out := new(MergeGenerator) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NestedMatrixGenerator) DeepCopyInto(out *NestedMatrixGenerator) { + *out = *in + if in.Generators != nil { + in, out := &in.Generators, &out.Generators + *out = make(ApplicationSetTerminalGenerators, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NestedMatrixGenerator. +func (in *NestedMatrixGenerator) DeepCopy() *NestedMatrixGenerator { + if in == nil { + return nil + } + out := new(NestedMatrixGenerator) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OptionalArray) DeepCopyInto(out *OptionalArray) { + *out = *in + if in.Array != nil { + in, out := &in.Array, &out.Array + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionalArray. +func (in *OptionalArray) DeepCopy() *OptionalArray { + if in == nil { + return nil + } + out := new(OptionalArray) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OptionalMap) DeepCopyInto(out *OptionalMap) { + *out = *in + if in.Map != nil { + in, out := &in.Map, &out.Map + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionalMap. +func (in *OptionalMap) DeepCopy() *OptionalMap { + if in == nil { + return nil + } + out := new(OptionalMap) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PluginConfigMapRef) DeepCopyInto(out *PluginConfigMapRef) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PluginConfigMapRef. +func (in *PluginConfigMapRef) DeepCopy() *PluginConfigMapRef { + if in == nil { + return nil + } + out := new(PluginConfigMapRef) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PluginGenerator) DeepCopyInto(out *PluginGenerator) { + *out = *in + out.ConfigMapRef = in.ConfigMapRef + in.Input.DeepCopyInto(&out.Input) + if in.RequeueAfterSeconds != nil { + in, out := &in.RequeueAfterSeconds, &out.RequeueAfterSeconds + *out = new(int64) + **out = **in + } + in.Template.DeepCopyInto(&out.Template) + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PluginGenerator. +func (in *PluginGenerator) DeepCopy() *PluginGenerator { + if in == nil { + return nil + } + out := new(PluginGenerator) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PluginInput) DeepCopyInto(out *PluginInput) { + *out = *in + if in.Parameters != nil { + in, out := &in.Parameters, &out.Parameters + *out = make(PluginParameters, len(*in)) + for key, val := range *in { + (*out)[key] = *val.DeepCopy() + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PluginInput. +func (in *PluginInput) DeepCopy() *PluginInput { + if in == nil { + return nil + } + out := new(PluginInput) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in PluginParameters) DeepCopyInto(out *PluginParameters) { + { + in := &in + *out = make(PluginParameters, len(*in)) + for key, val := range *in { + (*out)[key] = *val.DeepCopy() + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PluginParameters. +func (in PluginParameters) DeepCopy() PluginParameters { + if in == nil { + return nil + } + out := new(PluginParameters) + in.DeepCopyInto(out) + return *out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PullRequestGenerator) DeepCopyInto(out *PullRequestGenerator) { + *out = *in + if in.Github != nil { + in, out := &in.Github, &out.Github + *out = new(PullRequestGeneratorGithub) + (*in).DeepCopyInto(*out) + } + if in.GitLab != nil { + in, out := &in.GitLab, &out.GitLab + *out = new(PullRequestGeneratorGitLab) + (*in).DeepCopyInto(*out) + } + if in.Gitea != nil { + in, out := &in.Gitea, &out.Gitea + *out = new(PullRequestGeneratorGitea) + (*in).DeepCopyInto(*out) + } + if in.BitbucketServer != nil { + in, out := &in.BitbucketServer, &out.BitbucketServer + *out = new(PullRequestGeneratorBitbucketServer) + (*in).DeepCopyInto(*out) + } + if in.Filters != nil { + in, out := &in.Filters, &out.Filters + *out = make([]PullRequestGeneratorFilter, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.RequeueAfterSeconds != nil { + in, out := &in.RequeueAfterSeconds, &out.RequeueAfterSeconds + *out = new(int64) + **out = **in + } + in.Template.DeepCopyInto(&out.Template) + if in.Bitbucket != nil { + in, out := &in.Bitbucket, &out.Bitbucket + *out = new(PullRequestGeneratorBitbucket) + (*in).DeepCopyInto(*out) + } + if in.AzureDevOps != nil { + in, out := &in.AzureDevOps, &out.AzureDevOps + *out = new(PullRequestGeneratorAzureDevOps) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PullRequestGenerator. +func (in *PullRequestGenerator) DeepCopy() *PullRequestGenerator { + if in == nil { + return nil + } + out := new(PullRequestGenerator) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PullRequestGeneratorAzureDevOps) DeepCopyInto(out *PullRequestGeneratorAzureDevOps) { + *out = *in + if in.TokenRef != nil { + in, out := &in.TokenRef, &out.TokenRef + *out = new(SecretRef) + **out = **in + } + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PullRequestGeneratorAzureDevOps. +func (in *PullRequestGeneratorAzureDevOps) DeepCopy() *PullRequestGeneratorAzureDevOps { + if in == nil { + return nil + } + out := new(PullRequestGeneratorAzureDevOps) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PullRequestGeneratorBitbucket) DeepCopyInto(out *PullRequestGeneratorBitbucket) { + *out = *in + if in.BasicAuth != nil { + in, out := &in.BasicAuth, &out.BasicAuth + *out = new(BasicAuthBitbucketServer) + (*in).DeepCopyInto(*out) + } + if in.BearerToken != nil { + in, out := &in.BearerToken, &out.BearerToken + *out = new(BearerTokenBitbucketCloud) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PullRequestGeneratorBitbucket. +func (in *PullRequestGeneratorBitbucket) DeepCopy() *PullRequestGeneratorBitbucket { + if in == nil { + return nil + } + out := new(PullRequestGeneratorBitbucket) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PullRequestGeneratorBitbucketServer) DeepCopyInto(out *PullRequestGeneratorBitbucketServer) { + *out = *in + if in.BasicAuth != nil { + in, out := &in.BasicAuth, &out.BasicAuth + *out = new(BasicAuthBitbucketServer) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PullRequestGeneratorBitbucketServer. +func (in *PullRequestGeneratorBitbucketServer) DeepCopy() *PullRequestGeneratorBitbucketServer { + if in == nil { + return nil + } + out := new(PullRequestGeneratorBitbucketServer) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PullRequestGeneratorFilter) DeepCopyInto(out *PullRequestGeneratorFilter) { + *out = *in + if in.BranchMatch != nil { + in, out := &in.BranchMatch, &out.BranchMatch + *out = new(string) + **out = **in + } + if in.TargetBranchMatch != nil { + in, out := &in.TargetBranchMatch, &out.TargetBranchMatch + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PullRequestGeneratorFilter. +func (in *PullRequestGeneratorFilter) DeepCopy() *PullRequestGeneratorFilter { + if in == nil { + return nil + } + out := new(PullRequestGeneratorFilter) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PullRequestGeneratorGitLab) DeepCopyInto(out *PullRequestGeneratorGitLab) { + *out = *in + if in.TokenRef != nil { + in, out := &in.TokenRef, &out.TokenRef + *out = new(SecretRef) + **out = **in + } + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PullRequestGeneratorGitLab. +func (in *PullRequestGeneratorGitLab) DeepCopy() *PullRequestGeneratorGitLab { + if in == nil { + return nil + } + out := new(PullRequestGeneratorGitLab) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PullRequestGeneratorGitea) DeepCopyInto(out *PullRequestGeneratorGitea) { + *out = *in + if in.TokenRef != nil { + in, out := &in.TokenRef, &out.TokenRef + *out = new(SecretRef) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PullRequestGeneratorGitea. +func (in *PullRequestGeneratorGitea) DeepCopy() *PullRequestGeneratorGitea { + if in == nil { + return nil + } + out := new(PullRequestGeneratorGitea) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PullRequestGeneratorGithub) DeepCopyInto(out *PullRequestGeneratorGithub) { + *out = *in + if in.TokenRef != nil { + in, out := &in.TokenRef, &out.TokenRef + *out = new(SecretRef) + **out = **in + } + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PullRequestGeneratorGithub. +func (in *PullRequestGeneratorGithub) DeepCopy() *PullRequestGeneratorGithub { + if in == nil { + return nil + } + out := new(PullRequestGeneratorGithub) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceIgnoreDifferences) DeepCopyInto(out *ResourceIgnoreDifferences) { + *out = *in + if in.JSONPointers != nil { + in, out := &in.JSONPointers, &out.JSONPointers + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.JQPathExpressions != nil { + in, out := &in.JQPathExpressions, &out.JQPathExpressions + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.ManagedFieldsManagers != nil { + in, out := &in.ManagedFieldsManagers, &out.ManagedFieldsManagers + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceIgnoreDifferences. +func (in *ResourceIgnoreDifferences) DeepCopy() *ResourceIgnoreDifferences { + if in == nil { + return nil + } + out := new(ResourceIgnoreDifferences) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RetryStrategy) DeepCopyInto(out *RetryStrategy) { + *out = *in + if in.Limit != nil { + in, out := &in.Limit, &out.Limit + *out = new(int64) + **out = **in + } + if in.Backoff != nil { + in, out := &in.Backoff, &out.Backoff + *out = new(Backoff) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetryStrategy. +func (in *RetryStrategy) DeepCopy() *RetryStrategy { + if in == nil { + return nil + } + out := new(RetryStrategy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SCMProviderGenerator) DeepCopyInto(out *SCMProviderGenerator) { + *out = *in + if in.Github != nil { + in, out := &in.Github, &out.Github + *out = new(SCMProviderGeneratorGithub) + (*in).DeepCopyInto(*out) + } + if in.Gitlab != nil { + in, out := &in.Gitlab, &out.Gitlab + *out = new(SCMProviderGeneratorGitlab) + (*in).DeepCopyInto(*out) + } + if in.Bitbucket != nil { + in, out := &in.Bitbucket, &out.Bitbucket + *out = new(SCMProviderGeneratorBitbucket) + (*in).DeepCopyInto(*out) + } + if in.BitbucketServer != nil { + in, out := &in.BitbucketServer, &out.BitbucketServer + *out = new(SCMProviderGeneratorBitbucketServer) + (*in).DeepCopyInto(*out) + } + if in.Gitea != nil { + in, out := &in.Gitea, &out.Gitea + *out = new(SCMProviderGeneratorGitea) + (*in).DeepCopyInto(*out) + } + if in.AzureDevOps != nil { + in, out := &in.AzureDevOps, &out.AzureDevOps + *out = new(SCMProviderGeneratorAzureDevOps) + (*in).DeepCopyInto(*out) + } + if in.Filters != nil { + in, out := &in.Filters, &out.Filters + *out = make([]SCMProviderGeneratorFilter, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.RequeueAfterSeconds != nil { + in, out := &in.RequeueAfterSeconds, &out.RequeueAfterSeconds + *out = new(int64) + **out = **in + } + in.Template.DeepCopyInto(&out.Template) + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.AWSCodeCommit != nil { + in, out := &in.AWSCodeCommit, &out.AWSCodeCommit + *out = new(SCMProviderGeneratorAWSCodeCommit) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SCMProviderGenerator. +func (in *SCMProviderGenerator) DeepCopy() *SCMProviderGenerator { + if in == nil { + return nil + } + out := new(SCMProviderGenerator) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SCMProviderGeneratorAWSCodeCommit) DeepCopyInto(out *SCMProviderGeneratorAWSCodeCommit) { + *out = *in + if in.TagFilters != nil { + in, out := &in.TagFilters, &out.TagFilters + *out = make([]*TagFilter, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(TagFilter) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SCMProviderGeneratorAWSCodeCommit. +func (in *SCMProviderGeneratorAWSCodeCommit) DeepCopy() *SCMProviderGeneratorAWSCodeCommit { + if in == nil { + return nil + } + out := new(SCMProviderGeneratorAWSCodeCommit) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SCMProviderGeneratorAzureDevOps) DeepCopyInto(out *SCMProviderGeneratorAzureDevOps) { + *out = *in + if in.AccessTokenRef != nil { + in, out := &in.AccessTokenRef, &out.AccessTokenRef + *out = new(SecretRef) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SCMProviderGeneratorAzureDevOps. +func (in *SCMProviderGeneratorAzureDevOps) DeepCopy() *SCMProviderGeneratorAzureDevOps { + if in == nil { + return nil + } + out := new(SCMProviderGeneratorAzureDevOps) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SCMProviderGeneratorBitbucket) DeepCopyInto(out *SCMProviderGeneratorBitbucket) { + *out = *in + if in.AppPasswordRef != nil { + in, out := &in.AppPasswordRef, &out.AppPasswordRef + *out = new(SecretRef) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SCMProviderGeneratorBitbucket. +func (in *SCMProviderGeneratorBitbucket) DeepCopy() *SCMProviderGeneratorBitbucket { + if in == nil { + return nil + } + out := new(SCMProviderGeneratorBitbucket) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SCMProviderGeneratorBitbucketServer) DeepCopyInto(out *SCMProviderGeneratorBitbucketServer) { + *out = *in + if in.BasicAuth != nil { + in, out := &in.BasicAuth, &out.BasicAuth + *out = new(BasicAuthBitbucketServer) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SCMProviderGeneratorBitbucketServer. +func (in *SCMProviderGeneratorBitbucketServer) DeepCopy() *SCMProviderGeneratorBitbucketServer { + if in == nil { + return nil + } + out := new(SCMProviderGeneratorBitbucketServer) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SCMProviderGeneratorFilter) DeepCopyInto(out *SCMProviderGeneratorFilter) { + *out = *in + if in.RepositoryMatch != nil { + in, out := &in.RepositoryMatch, &out.RepositoryMatch + *out = new(string) + **out = **in + } + if in.PathsExist != nil { + in, out := &in.PathsExist, &out.PathsExist + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.PathsDoNotExist != nil { + in, out := &in.PathsDoNotExist, &out.PathsDoNotExist + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.LabelMatch != nil { + in, out := &in.LabelMatch, &out.LabelMatch + *out = new(string) + **out = **in + } + if in.BranchMatch != nil { + in, out := &in.BranchMatch, &out.BranchMatch + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SCMProviderGeneratorFilter. +func (in *SCMProviderGeneratorFilter) DeepCopy() *SCMProviderGeneratorFilter { + if in == nil { + return nil + } + out := new(SCMProviderGeneratorFilter) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SCMProviderGeneratorGitea) DeepCopyInto(out *SCMProviderGeneratorGitea) { + *out = *in + if in.TokenRef != nil { + in, out := &in.TokenRef, &out.TokenRef + *out = new(SecretRef) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SCMProviderGeneratorGitea. +func (in *SCMProviderGeneratorGitea) DeepCopy() *SCMProviderGeneratorGitea { + if in == nil { + return nil + } + out := new(SCMProviderGeneratorGitea) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SCMProviderGeneratorGithub) DeepCopyInto(out *SCMProviderGeneratorGithub) { + *out = *in + if in.TokenRef != nil { + in, out := &in.TokenRef, &out.TokenRef + *out = new(SecretRef) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SCMProviderGeneratorGithub. +func (in *SCMProviderGeneratorGithub) DeepCopy() *SCMProviderGeneratorGithub { + if in == nil { + return nil + } + out := new(SCMProviderGeneratorGithub) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SCMProviderGeneratorGitlab) DeepCopyInto(out *SCMProviderGeneratorGitlab) { + *out = *in + if in.TokenRef != nil { + in, out := &in.TokenRef, &out.TokenRef + *out = new(SecretRef) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SCMProviderGeneratorGitlab. +func (in *SCMProviderGeneratorGitlab) DeepCopy() *SCMProviderGeneratorGitlab { + if in == nil { + return nil + } + out := new(SCMProviderGeneratorGitlab) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecretRef) DeepCopyInto(out *SecretRef) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretRef. +func (in *SecretRef) DeepCopy() *SecretRef { + if in == nil { + return nil + } + out := new(SecretRef) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in SyncOptions) DeepCopyInto(out *SyncOptions) { + { + in := &in + *out = make(SyncOptions, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SyncOptions. +func (in SyncOptions) DeepCopy() SyncOptions { + if in == nil { + return nil + } + out := new(SyncOptions) + in.DeepCopyInto(out) + return *out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SyncPolicy) DeepCopyInto(out *SyncPolicy) { + *out = *in + if in.Automated != nil { + in, out := &in.Automated, &out.Automated + *out = new(SyncPolicyAutomated) + (*in).DeepCopyInto(*out) + } + if in.SyncOptions != nil { + in, out := &in.SyncOptions, &out.SyncOptions + *out = make(SyncOptions, len(*in)) + copy(*out, *in) + } + if in.Retry != nil { + in, out := &in.Retry, &out.Retry + *out = new(RetryStrategy) + (*in).DeepCopyInto(*out) + } + if in.ManagedNamespaceMetadata != nil { + in, out := &in.ManagedNamespaceMetadata, &out.ManagedNamespaceMetadata + *out = new(ManagedNamespaceMetadata) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SyncPolicy. +func (in *SyncPolicy) DeepCopy() *SyncPolicy { + if in == nil { + return nil + } + out := new(SyncPolicy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SyncPolicyAutomated) DeepCopyInto(out *SyncPolicyAutomated) { + *out = *in + if in.Prune != nil { + in, out := &in.Prune, &out.Prune + *out = new(bool) + **out = **in + } + if in.SelfHeal != nil { + in, out := &in.SelfHeal, &out.SelfHeal + *out = new(bool) + **out = **in + } + if in.AllowEmpty != nil { + in, out := &in.AllowEmpty, &out.AllowEmpty + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SyncPolicyAutomated. +func (in *SyncPolicyAutomated) DeepCopy() *SyncPolicyAutomated { + if in == nil { + return nil + } + out := new(SyncPolicyAutomated) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SyncStrategy) DeepCopyInto(out *SyncStrategy) { + *out = *in + if in.Apply != nil { + in, out := &in.Apply, &out.Apply + *out = new(SyncStrategyApply) + (*in).DeepCopyInto(*out) + } + if in.Hook != nil { + in, out := &in.Hook, &out.Hook + *out = new(SyncStrategyHook) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SyncStrategy. +func (in *SyncStrategy) DeepCopy() *SyncStrategy { + if in == nil { + return nil + } + out := new(SyncStrategy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SyncStrategyApply) DeepCopyInto(out *SyncStrategyApply) { + *out = *in + if in.Force != nil { + in, out := &in.Force, &out.Force + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SyncStrategyApply. +func (in *SyncStrategyApply) DeepCopy() *SyncStrategyApply { + if in == nil { + return nil + } + out := new(SyncStrategyApply) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SyncStrategyHook) DeepCopyInto(out *SyncStrategyHook) { + *out = *in + in.SyncStrategyApply.DeepCopyInto(&out.SyncStrategyApply) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SyncStrategyHook. +func (in *SyncStrategyHook) DeepCopy() *SyncStrategyHook { + if in == nil { + return nil + } + out := new(SyncStrategyHook) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TagFilter) DeepCopyInto(out *TagFilter) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TagFilter. +func (in *TagFilter) DeepCopy() *TagFilter { + if in == nil { + return nil + } + out := new(TagFilter) + in.DeepCopyInto(out) + return out +} diff --git a/apis/applicationsets/v1alpha1/zz_generated.managed.go b/apis/applicationsets/v1alpha1/zz_generated.managed.go new file mode 100644 index 0000000..3ad304a --- /dev/null +++ b/apis/applicationsets/v1alpha1/zz_generated.managed.go @@ -0,0 +1,71 @@ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// GetCondition of this ApplicationSet. +func (mg *ApplicationSet) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this ApplicationSet. +func (mg *ApplicationSet) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this ApplicationSet. +func (mg *ApplicationSet) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this ApplicationSet. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *ApplicationSet) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this ApplicationSet. +func (mg *ApplicationSet) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this ApplicationSet. +func (mg *ApplicationSet) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this ApplicationSet. +func (mg *ApplicationSet) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this ApplicationSet. +func (mg *ApplicationSet) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this ApplicationSet. +func (mg *ApplicationSet) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this ApplicationSet. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *ApplicationSet) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this ApplicationSet. +func (mg *ApplicationSet) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this ApplicationSet. +func (mg *ApplicationSet) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} diff --git a/apis/applicationsets/v1alpha1/zz_generated.managedlist.go b/apis/applicationsets/v1alpha1/zz_generated.managedlist.go new file mode 100644 index 0000000..837818d --- /dev/null +++ b/apis/applicationsets/v1alpha1/zz_generated.managedlist.go @@ -0,0 +1,14 @@ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// GetItems of this ApplicationSetList. +func (l *ApplicationSetList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} diff --git a/apis/applicationsets/v1alpha1/zz_generated.resolvers.go b/apis/applicationsets/v1alpha1/zz_generated.resolvers.go new file mode 100644 index 0000000..0bc0fc9 --- /dev/null +++ b/apis/applicationsets/v1alpha1/zz_generated.resolvers.go @@ -0,0 +1,1085 @@ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "context" + v1alpha1 "github.com/crossplane-contrib/provider-argocd/apis/cluster/v1alpha1" + reference "github.com/crossplane/crossplane-runtime/pkg/reference" + errors "github.com/pkg/errors" + client "sigs.k8s.io/controller-runtime/pkg/client" +) + +// ResolveReferences of this ApplicationSet. +func (mg *ApplicationSet) ResolveReferences(ctx context.Context, c client.Reader) error { + r := reference.NewAPIResolver(c, mg) + + var rsp reference.ResolutionResponse + var err error + + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].List != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].List.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Generators[i3].List.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Generators[i3].List.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].List.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Generators[i3].List.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].List.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].List != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].List.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Generators[i3].List.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Generators[i3].List.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].List.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Generators[i3].List.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].List.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Clusters != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Clusters.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Generators[i3].Clusters.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Generators[i3].Clusters.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Clusters.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Generators[i3].Clusters.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Clusters.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Clusters != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Clusters.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Generators[i3].Clusters.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Generators[i3].Clusters.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Clusters.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Generators[i3].Clusters.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Clusters.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Git != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Git.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Generators[i3].Git.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Generators[i3].Git.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Git.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Generators[i3].Git.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Git.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Git != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Git.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Generators[i3].Git.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Generators[i3].Git.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Git.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Generators[i3].Git.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Git.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].SCMProvider != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].SCMProvider.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Generators[i3].SCMProvider.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Generators[i3].SCMProvider.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].SCMProvider.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Generators[i3].SCMProvider.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].SCMProvider.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].SCMProvider != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].SCMProvider.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Generators[i3].SCMProvider.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Generators[i3].SCMProvider.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].SCMProvider.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Generators[i3].SCMProvider.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].SCMProvider.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].ClusterDecisionResource != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].ClusterDecisionResource.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Generators[i3].ClusterDecisionResource.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Generators[i3].ClusterDecisionResource.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].ClusterDecisionResource.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Generators[i3].ClusterDecisionResource.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].ClusterDecisionResource.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].ClusterDecisionResource != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].ClusterDecisionResource.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Generators[i3].ClusterDecisionResource.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Generators[i3].ClusterDecisionResource.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].ClusterDecisionResource.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Generators[i3].ClusterDecisionResource.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].ClusterDecisionResource.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].PullRequest != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].PullRequest.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Generators[i3].PullRequest.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Generators[i3].PullRequest.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].PullRequest.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Generators[i3].PullRequest.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].PullRequest.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].PullRequest != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].PullRequest.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Generators[i3].PullRequest.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Generators[i3].PullRequest.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].PullRequest.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Generators[i3].PullRequest.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].PullRequest.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Matrix != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Matrix.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].List != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].List.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].List.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].List.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].List.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].List.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].List.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Matrix != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Matrix.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].List != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].List.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].List.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].List.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].List.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].List.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].List.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Matrix != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Matrix.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Clusters != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Clusters.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Clusters.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Clusters.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Clusters.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Clusters.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Clusters.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Matrix != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Matrix.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Clusters != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Clusters.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Clusters.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Clusters.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Clusters.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Clusters.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Clusters.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Matrix != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Matrix.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Git != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Git.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Git.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Git.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Git.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Git.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Git.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Matrix != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Matrix.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Git != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Git.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Git.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Git.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Git.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Git.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Git.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Matrix != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Matrix.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].SCMProvider != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].SCMProvider.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].SCMProvider.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].SCMProvider.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].SCMProvider.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].SCMProvider.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].SCMProvider.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Matrix != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Matrix.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].SCMProvider != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].SCMProvider.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].SCMProvider.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].SCMProvider.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].SCMProvider.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].SCMProvider.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].SCMProvider.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Matrix != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Matrix.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].ClusterDecisionResource != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Matrix != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Matrix.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].ClusterDecisionResource != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Matrix != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Matrix.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].PullRequest != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].PullRequest.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].PullRequest.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].PullRequest.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].PullRequest.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].PullRequest.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].PullRequest.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Matrix != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Matrix.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].PullRequest != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].PullRequest.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].PullRequest.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].PullRequest.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].PullRequest.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].PullRequest.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].PullRequest.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Matrix != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Matrix.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Plugin != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Plugin.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Plugin.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Plugin.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Plugin.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Plugin.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Plugin.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Matrix != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Matrix.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Plugin != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Plugin.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Plugin.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Plugin.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Plugin.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Plugin.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Matrix.Generators[i5].Plugin.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Matrix != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Matrix.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Generators[i3].Matrix.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Generators[i3].Matrix.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Matrix.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Generators[i3].Matrix.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Matrix.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Matrix != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Matrix.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Generators[i3].Matrix.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Generators[i3].Matrix.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Matrix.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Generators[i3].Matrix.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Matrix.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Merge != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Merge.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].List != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].List.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].List.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].List.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].List.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].List.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].List.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Merge != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Merge.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].List != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].List.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].List.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].List.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].List.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].List.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].List.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Merge != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Merge.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Clusters != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Clusters.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Clusters.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Clusters.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Clusters.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Clusters.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Clusters.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Merge != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Merge.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Clusters != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Clusters.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Clusters.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Clusters.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Clusters.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Clusters.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Clusters.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Merge != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Merge.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Git != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Git.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Git.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Git.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Git.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Git.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Git.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Merge != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Merge.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Git != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Git.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Git.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Git.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Git.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Git.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Git.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Merge != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Merge.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].SCMProvider != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].SCMProvider.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].SCMProvider.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].SCMProvider.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].SCMProvider.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].SCMProvider.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].SCMProvider.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Merge != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Merge.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].SCMProvider != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].SCMProvider.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].SCMProvider.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].SCMProvider.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].SCMProvider.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].SCMProvider.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].SCMProvider.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Merge != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Merge.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].ClusterDecisionResource != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Merge != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Merge.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].ClusterDecisionResource != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].ClusterDecisionResource.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Merge != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Merge.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].PullRequest != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].PullRequest.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].PullRequest.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].PullRequest.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].PullRequest.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].PullRequest.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].PullRequest.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Merge != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Merge.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].PullRequest != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].PullRequest.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].PullRequest.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].PullRequest.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].PullRequest.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].PullRequest.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].PullRequest.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Merge != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Merge.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Plugin != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Plugin.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Plugin.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Plugin.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Plugin.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Plugin.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Plugin.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Merge != nil { + for i5 := 0; i5 < len(mg.Spec.ForProvider.Generators[i3].Merge.Generators); i5++ { + if mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Plugin != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Plugin.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Plugin.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Plugin.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Plugin.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Plugin.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Merge.Generators[i5].Plugin.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + } + } + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Merge != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Merge.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Generators[i3].Merge.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Generators[i3].Merge.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Merge.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Generators[i3].Merge.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Merge.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Merge != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Merge.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Generators[i3].Merge.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Generators[i3].Merge.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Merge.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Generators[i3].Merge.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Merge.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Plugin != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Plugin.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Generators[i3].Plugin.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Generators[i3].Plugin.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Plugin.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Generators[i3].Plugin.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Plugin.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + } + } + for i3 := 0; i3 < len(mg.Spec.ForProvider.Generators); i3++ { + if mg.Spec.ForProvider.Generators[i3].Plugin != nil { + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Generators[i3].Plugin.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Generators[i3].Plugin.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Generators[i3].Plugin.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Generators[i3].Plugin.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Generators[i3].Plugin.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Generators[i3].Plugin.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + } + } + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Template.Spec.Destination.Server), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.Template.Spec.Destination.ServerRef, + Selector: mg.Spec.ForProvider.Template.Spec.Destination.ServerSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Template.Spec.Destination.Server") + } + mg.Spec.ForProvider.Template.Spec.Destination.Server = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Template.Spec.Destination.ServerRef = rsp.ResolvedReference + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Template.Spec.Destination.Name), + Extract: v1alpha1.ServerName(), + Reference: mg.Spec.ForProvider.Template.Spec.Destination.NameRef, + Selector: mg.Spec.ForProvider.Template.Spec.Destination.NameSelector, + To: reference.To{ + List: &v1alpha1.ClusterList{}, + Managed: &v1alpha1.Cluster{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Template.Spec.Destination.Name") + } + mg.Spec.ForProvider.Template.Spec.Destination.Name = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.Template.Spec.Destination.NameRef = rsp.ResolvedReference + + return nil +} diff --git a/apis/argocd.go b/apis/argocd.go index 6753508..55c20c3 100644 --- a/apis/argocd.go +++ b/apis/argocd.go @@ -21,10 +21,11 @@ import ( "k8s.io/apimachinery/pkg/runtime" applicationv1alpha1 "github.com/crossplane-contrib/provider-argocd/apis/applications/v1alpha1" + applicationsetsv1alpha1 "github.com/crossplane-contrib/provider-argocd/apis/applicationsets/v1alpha1" clusterv1alpha1 "github.com/crossplane-contrib/provider-argocd/apis/cluster/v1alpha1" projectsv1alpha1 "github.com/crossplane-contrib/provider-argocd/apis/projects/v1alpha1" repositoriesv1alpha1 "github.com/crossplane-contrib/provider-argocd/apis/repositories/v1alpha1" - v1alpha1 "github.com/crossplane-contrib/provider-argocd/apis/v1alpha1" + "github.com/crossplane-contrib/provider-argocd/apis/v1alpha1" ) func init() { @@ -35,6 +36,7 @@ func init() { projectsv1alpha1.SchemeBuilder.AddToScheme, clusterv1alpha1.SchemeBuilder.AddToScheme, applicationv1alpha1.SchemeBuilder.AddToScheme, + applicationsetsv1alpha1.SchemeBuilder.AddToScheme, ) } diff --git a/apis/cluster/v1alpha1/referencers.go b/apis/cluster/v1alpha1/referencers.go new file mode 100644 index 0000000..f32e033 --- /dev/null +++ b/apis/cluster/v1alpha1/referencers.go @@ -0,0 +1,34 @@ +package v1alpha1 + +import ( + "github.com/crossplane/crossplane-runtime/pkg/reference" + "github.com/crossplane/crossplane-runtime/pkg/resource" +) + +// ServerName returns the Spec.ForProvider.Name of an Cluster. +func ServerName() reference.ExtractValueFn { + return func(mg resource.Managed) string { + r, ok := mg.(*Cluster) + if !ok { + return "" + } + if r.Spec.ForProvider.Name == nil { + return "" + } + return *r.Spec.ForProvider.Name + } +} + +// ServerAddress returns the Spec.ForProvider.Server of a Cluster +func ServerAddress() reference.ExtractValueFn { + return func(mg resource.Managed) string { + r, ok := mg.(*Cluster) + if !ok { + return "" + } + if r.Spec.ForProvider.Server == nil { + return "" + } + return *r.Spec.ForProvider.Server + } +} diff --git a/apis/generate.go b/apis/generate.go index e7f95e3..2f52455 100644 --- a/apis/generate.go +++ b/apis/generate.go @@ -29,8 +29,7 @@ limitations under the License. //go:generate go run -tags generate github.com/crossplane/crossplane-tools/cmd/angryjet generate-methodsets --header-file=../hack/boilerplate.go.txt ./... // Generate conversion code -// -//go:generate go run -tags generate github.com/jmattheis/goverter/cmd/goverter -wrapErrors -output ./applications/v1alpha1/zz_generated.conversion.go -packageName v1alpha1 -packagePath=github.com/crossplane-contrib/provider-argocd/apis/applications/v1alpha1 ./applications/v1alpha1 +//go:generate go run -tags generate github.com/jmattheis/goverter/cmd/goverter gen -output-constraint !ignore_autogenerated ./... package apis diff --git a/examples/application/application-with-references.yaml b/examples/application/application-with-references.yaml new file mode 100644 index 0000000..f1b0608 --- /dev/null +++ b/examples/application/application-with-references.yaml @@ -0,0 +1,39 @@ +--- +# Example using a KubeconfigSecretRef +apiVersion: applications.argocd.crossplane.io/v1alpha1 +kind: Application +metadata: + name: example-application-server-name-ref +spec: + providerConfigRef: + name: argocd-provider + forProvider: + destination: + namespace: default + serverSelector: + matchLabels: + purpose: dev + project: default + source: + repoURL: https://github.com/stefanprodan/podinfo/ + path: charts/podinfo + targetRevision: HEAD +--- +apiVersion: applications.argocd.crossplane.io/v1alpha1 +kind: Application +metadata: + name: example-application-destination-name-ref +spec: + providerConfigRef: + name: argocd-provider + forProvider: + destination: + namespace: default + nameSelector: + matchLabels: + purpose: dev + project: default + source: + repoURL: https://github.com/stefanprodan/podinfo/ + path: charts/podinfo + targetRevision: HEAD diff --git a/examples/applicationset/applicationset-with-ref.yaml b/examples/applicationset/applicationset-with-ref.yaml new file mode 100644 index 0000000..9308689 --- /dev/null +++ b/examples/applicationset/applicationset-with-ref.yaml @@ -0,0 +1,35 @@ +--- +apiVersion: applicationsets.argocd.crossplane.io/v1alpha1 +kind: ApplicationSet +metadata: + name: example-application-ref +spec: + providerConfigRef: + name: argocd-provider + forProvider: + generators: + - list: + elements: + - cluster: engineering-dev + - cluster: engineering-prod + template: + metadata: + name: '{{cluster}}-guestbook' + spec: + project: default + syncPolicy: + syncOptions: + - CreateNamespace=true + automated: + prune: true + selfHeal: true + source: + repoURL: https://github.com/argoproj/argo-cd.git + targetRevision: HEAD + path: applicationset/examples/list-generator/guestbook/{{cluster}} + destination: + namespace: guestbook-{{cluster}} + nameSelector: + matchLabels: + purpose: dev + diff --git a/examples/applicationset/applicationset.yaml b/examples/applicationset/applicationset.yaml new file mode 100644 index 0000000..0d8544d --- /dev/null +++ b/examples/applicationset/applicationset.yaml @@ -0,0 +1,33 @@ +--- +apiVersion: applicationsets.argocd.crossplane.io/v1alpha1 +kind: ApplicationSet +metadata: + name: example-application +spec: + providerConfigRef: + name: argocd-provider + forProvider: + generators: + - list: + elements: + - cluster: engineering-dev + - cluster: engineering-prod + template: + metadata: + name: '{{cluster}}-guestbook' + spec: + project: default + syncPolicy: + syncOptions: + - CreateNamespace=true + automated: + prune: true + selfHeal: true + source: + repoURL: https://github.com/argoproj/argo-cd.git + targetRevision: HEAD + path: applicationset/examples/list-generator/guestbook/{{cluster}} + destination: + namespace: guestbook-{{cluster}} + name: in-cluster + diff --git a/examples/cluster/cluster-kubeconfig.yaml b/examples/cluster/cluster-kubeconfig.yaml index 64bd957..3d2bd53 100644 --- a/examples/cluster/cluster-kubeconfig.yaml +++ b/examples/cluster/cluster-kubeconfig.yaml @@ -3,12 +3,14 @@ apiVersion: cluster.argocd.crossplane.io/v1alpha1 kind: Cluster metadata: name: example-cluster-kubeconfig + labels: + purpose: dev spec: forProvider: name: example-cluster-kubeconfig config: kubeconfigSecretRef: - name: cluster-conn + name: cluster-conn namespace: crossplane-system key: kubeconfig providerConfigRef: diff --git a/go.mod b/go.mod index 0432f55..9e7a077 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/crossplane/crossplane-tools v0.0.0-20220901191540-806c0b01097b github.com/golang/mock v1.6.0 github.com/google/go-cmp v0.5.9 - github.com/jmattheis/goverter v0.17.4 + github.com/jmattheis/goverter v1.3.0 github.com/pkg/errors v0.9.1 google.golang.org/grpc v1.58.2 gopkg.in/alecthomas/kingpin.v2 v2.2.6 diff --git a/go.sum b/go.sum index a33a88c..95d9f1b 100644 --- a/go.sum +++ b/go.sum @@ -344,8 +344,8 @@ github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLf github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jmattheis/goverter v0.17.4 h1:h2A8HNudoQ1JJCX17DgBlNHw3hmTSCmlyMmdxkofFc0= -github.com/jmattheis/goverter v0.17.4/go.mod h1:cKOfZ0hADOS3Ef0+raoD3uBEgs2Qzbd3DhE3JXEnqJo= +github.com/jmattheis/goverter v1.3.0 h1:PLVb0wIvfI6LuZtqAQxgJHRdrZs2hdQ39lqFVlqr/j4= +github.com/jmattheis/goverter v1.3.0/go.mod h1:Il/E+0riIfIgRBUpM+Fnh2s8/sJhMp5NeDZZenTd6S4= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jonboulle/clockwork v0.2.2 h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9qUBdQ= diff --git a/hack/local-argocd-setup.sh b/hack/local-argocd-setup.sh index 49b1728..39e1683 100755 --- a/hack/local-argocd-setup.sh +++ b/hack/local-argocd-setup.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Debug -set -x +#set -x # Be defensive set -euo pipefail # -m Job control is enabled @@ -14,7 +14,7 @@ logInfo () { echo -e "${GREEN}[INFO] $@ ${NOCOLOR}"; } logInfo "Waiting for Argo CD to become available." -kubectl wait --for condition=available --namespace argocd deployment.apps --all +kubectl wait --for condition=available --namespace argocd deployment.apps --all --timeout=300s logInfo "Patching configmaps" kubectl patch configmap/argocd-cm \ @@ -63,4 +63,4 @@ logInfo "Password: $ARGOCD_ADMIN_SECRET" logInfo "Port Forwarding to Argo CD at http://localhost:8443." logInfo "ctrl-c to abort, happy developing 🧑‍💻🦄" -fg \ No newline at end of file +fg diff --git a/package/crds/applications.argocd.crossplane.io_applications.yaml b/package/crds/applications.argocd.crossplane.io_applications.yaml index 087477a..9a06f83 100644 --- a/package/crds/applications.argocd.crossplane.io_applications.yaml +++ b/package/crds/applications.argocd.crossplane.io_applications.yaml @@ -71,6 +71,82 @@ spec: description: Name is an alternate way of specifying the target cluster by its symbolic name type: string + nameRef: + description: NameRef is a reference to a Cluster used to set + Name + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution + of this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference + should be resolved. The default is 'IfNotPresent', + which will attempt to resolve the reference only + when the corresponding field is not present. Use + 'Always' to resolve the reference on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a reference to a Cluster used + to set Name + properties: + matchControllerRef: + description: MatchControllerRef ensures an object with + the same controller reference as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching + labels is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution + of this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference + should be resolved. The default is 'IfNotPresent', + which will attempt to resolve the reference only + when the corresponding field is not present. Use + 'Always' to resolve the reference on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object namespace: description: Namespace specifies the target namespace for the application's resources. The namespace will only be @@ -82,8 +158,8 @@ spec: and must be set to the Kubernetes control plane API type: string serverRef: - description: ServerRef is a reference to an Cluster used to - set Server + description: ServerRef is a reference to Cluster used to set + Server properties: name: description: Name of the referenced object. @@ -117,8 +193,8 @@ spec: - name type: object serverSelector: - description: SourceReposSelector selects references to Repositories - used to set SourceRepos + description: ServerSelector selects references to Cluster + used to set Server properties: matchControllerRef: description: MatchControllerRef ensures an object with @@ -3428,6 +3504,86 @@ spec: description: Name is an alternate way of specifying the target cluster by its symbolic name type: string + nameRef: + description: NameRef is a reference to a Cluster used + to set Name + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether + resolution of this reference is required. + The default is 'Required', which means the + reconcile will fail if the reference cannot + be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference + should be resolved. The default is 'IfNotPresent', + which will attempt to resolve the reference + only when the corresponding field is not + present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a reference to a Cluster + used to set Name + properties: + matchControllerRef: + description: MatchControllerRef ensures an object + with the same controller reference as the selecting + object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with + matching labels is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies whether + resolution of this reference is required. + The default is 'Required', which means the + reconcile will fail if the reference cannot + be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference + should be resolved. The default is 'IfNotPresent', + which will attempt to resolve the reference + only when the corresponding field is not + present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object namespace: description: Namespace specifies the target namespace for the application's resources. The namespace will @@ -3440,8 +3596,8 @@ spec: plane API type: string serverRef: - description: ServerRef is a reference to an Cluster - used to set Server + description: ServerRef is a reference to Cluster used + to set Server properties: name: description: Name of the referenced object. @@ -3477,8 +3633,8 @@ spec: - name type: object serverSelector: - description: SourceReposSelector selects references - to Repositories used to set SourceRepos + description: ServerSelector selects references to + Cluster used to set Server properties: matchControllerRef: description: MatchControllerRef ensures an object diff --git a/package/crds/applicationsets.argocd.crossplane.io_applicationsets.yaml b/package/crds/applicationsets.argocd.crossplane.io_applicationsets.yaml new file mode 100644 index 0000000..058a6f5 --- /dev/null +++ b/package/crds/applicationsets.argocd.crossplane.io_applicationsets.yaml @@ -0,0 +1,31715 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.12.0 + name: applicationsets.applicationsets.argocd.crossplane.io +spec: + group: applicationsets.argocd.crossplane.io + names: + categories: + - crossplane + - managed + - argocd + kind: ApplicationSet + listKind: ApplicationSetList + plural: applicationsets + singular: applicationset + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: A ApplicationSet is an example API type. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: A ApplicationSetSpec defines the desired state of a ApplicationSet. + properties: + deletionPolicy: + default: Delete + description: DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. + enum: + - Orphan + - Delete + type: string + forProvider: + description: ApplicationSetParameters are the configurable fields + of a ApplicationSet. + properties: + applyNestedSelectors: + description: ApplyNestedSelectors enables selectors defined within + the generators of two level-nested matrix or merge generators + type: boolean + generators: + items: + description: ApplicationSetGenerator defines the generators + for the ApplicationSet + properties: + clusterDecisionResource: + description: DuckTypeGenerator defines a generator to match + against clusters registered with ArgoCD. + properties: + configMapRef: + description: ConfigMapRef is a ConfigMap with the duck + type definitions needed to retrieve the data this + includes apiVersion(group/version), kind, matchKey + and validation settings Name is the resource name + of the kind, group and version, defined in the ConfigMapRef + RequeueAfterSeconds is how long before the duckType + will be rechecked for a change + type: string + labelSelector: + description: A label selector is a label query over + a set of resources. The result of matchLabels and + matchExpressions are ANDed. An empty label selector + matches all objects. A null label selector matches + no objects. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a + selector that contains values, a key, and an + operator that relates the key and values. + properties: + key: + description: key is the label key that the + selector applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. If the + operator is Exists or DoesNotExist, the + values array must be empty. This array is + replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is "In", + and the values array contains only "value". The + requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + name: + type: string + requeueAfterSeconds: + format: int64 + type: integer + template: + description: ApplicationSetTemplate represents argocd + ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta represents + the Argo CD application fields that may be used + for Applications generated from the ApplicationSet + (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the desired + state of an ArgoCD Git Application + properties: + destination: + description: Destination is a reference to the + target Kubernetes server and namespace + properties: + name: + description: Name is an alternate way of + specifying the target cluster by its symbolic + name + type: string + nameRef: + description: NameRef is a reference to a + Cluster used to set Name + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a reference + to a Cluster used to set Name + properties: + matchControllerRef: + description: MatchControllerRef ensures + an object with the same controller + reference as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an + object with matching labels is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies the target + namespace for the application's resources. + The namespace will only be set for namespace-scoped + resources that have not set a value for + .metadata.namespace + type: string + server: + description: Server specifies the URL of + the target cluster and must be set to + the Kubernetes control plane API + type: string + serverRef: + description: ServerRef is a reference to + an Cluster used to set Server + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector selects + references to Repositories used to set + SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef ensures + an object with the same controller + reference as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an + object with matching labels is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is a list of + resources and their fields which should be + ignored during comparison + items: + description: ResourceIgnoreDifferences contains + resource filter and list of json paths which + should be ignored during comparison with + live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers is + a list of trusted managers. Fields mutated + by those managers will take precedence + over the desired state defined in the + SCM and won't be displayed in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list of information + (URLs, email addresses, and plain text) that + relates to the application + items: + description: Info is a list of informational + items for this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference to the project + this application belongs to. The empty string + means that application belongs to the 'default' + project. + type: string + revisionHistoryLimit: + description: 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. This should only be changed in exceptional + circumstances. Setting to zero will store + no history. This will reduce storage used. + Increasing will increase the space used to + store the history, so we do not recommend + increasing it. Default is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains all + required information about the source of an + application + properties: + chart: + description: Chart is a Helm chart name, + and must be specified for applications + sourced from a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains a glob + pattern to match paths against that + should be explicitly excluded from + being used during manifest generation + type: string + include: + description: Include contains a glob + pattern to match paths against that + should be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds options specific + to Jsonnet + properties: + extVars: + description: ExtVars is a list of + Jsonnet External Variables + items: + description: JsonnetVar represents + a variable to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library + search dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar represents + a variable to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies whether + to scan a directory recursively for + manifests + type: boolean + type: object + helm: + description: Helm holds helm specific options + properties: + fileParameters: + description: FileParameters are file + parameters to the helm template + items: + description: HelmFileParameter is + a file parameter that's passed to + helm template during manifest generation + properties: + name: + description: Name is the name + of the Helm parameter + type: string + path: + description: Path is the path + to the file containing the values + for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from failing + when valueFiles do not exist locally + by not appending them to helm template + --values + type: boolean + parameters: + description: Parameters is a list of + Helm parameters which are passed to + the helm template command upon manifest + generation + items: + description: HelmParameter is a parameter + that's passed to helm template during + manifest generation + properties: + forceString: + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings + type: boolean + name: + description: Name is the name + of the Helm parameter + type: string + value: + description: Value is the value + for the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials pass credentials + to all domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is the Helm + release name to use. If omitted it + will use the application name + type: string + skipCrds: + description: SkipCrds skips custom resource + definition installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is a list of + Helm value files to use when generating + a template + items: + type: string + type: array + values: + description: Values specifies Helm values + to be passed to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject specifies + Helm values to be passed to helm template, + defined as a map. This takes precedence + over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the Helm version + to use for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize specific + options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations is a + list of additional annotations to + add to rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply env variables + substitution for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels is a list + of additional labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force applying + common annotations to resources for + Kustomize apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels specifies + whether to force applying common labels + to resources for Kustomize apps + type: boolean + images: + description: Images is a list of Kustomize + image override specifications + items: + description: KustomizeImage represents + a Kustomize image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix + appended to resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix is a suffix + appended to resources for Kustomize + apps + type: string + namespace: + description: Namespace sets the namespace + that Kustomize adds to all resources + type: string + replicas: + description: Replicas is a list of Kustomize + Replicas override specifications + items: + description: KustomizeReplica override + specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number of replicas + x-kubernetes-int-or-string: true + name: + description: Name of Deployment + or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls which + version of Kustomize to use for rendering + manifests + type: string + type: object + path: + description: Path is a directory path within + the Git repository, and is only valid + for applications sourced from Git. + type: string + plugin: + description: Plugin holds config management + plugin specific options + properties: + env: + description: Env holds options specific + to config management plugins + items: + description: EnvEntry represents an + entry in the application's environment + properties: + name: + description: Name is the name + of the variable, usually expressed + in uppercase + type: string + value: + description: Value is the value + of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config management + parameters + items: + description: ApplicationSourcePluginParameter + holds options specific to config + management parameters + properties: + array: + description: Array is the value + of an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is the value + of a map type parameter. + type: object + name: + description: Name is the name + identifying a parameter. + type: string + string: + description: String_ is the value + of a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference to another + source within sources field. This field + will not be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL to the repository + (Git or Helm) that contains the application + manifests + type: string + targetRevision: + description: TargetRevision defines the + revision of the source to sync the application + to. In case of Git, this can be commit, + tag, or branch. If omitted, will equal + to HEAD. In case of Helm, this is a semver + tag for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference to the location + of the application's manifests or chart + items: + description: ApplicationSource contains all + required information about the source of + an application + properties: + chart: + description: Chart is a Helm chart name, + and must be specified for applications + sourced from a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains a glob + pattern to match paths against that + should be explicitly excluded from + being used during manifest generation + type: string + include: + description: Include contains a glob + pattern to match paths against that + should be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds options + specific to Jsonnet + properties: + extVars: + description: ExtVars is a list + of Jsonnet External Variables + items: + description: JsonnetVar represents + a variable to be passed to + jsonnet during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library + search dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of + Jsonnet Top-level Arguments + items: + description: JsonnetVar represents + a variable to be passed to + jsonnet during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies whether + to scan a directory recursively + for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific + options + properties: + fileParameters: + description: FileParameters are file + parameters to the helm template + items: + description: HelmFileParameter is + a file parameter that's passed + to helm template during manifest + generation + properties: + name: + description: Name is the name + of the Helm parameter + type: string + path: + description: Path is the path + to the file containing the + values for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from failing + when valueFiles do not exist locally + by not appending them to helm template + --values + type: boolean + parameters: + description: Parameters is a list + of Helm parameters which are passed + to the helm template command upon + manifest generation + items: + description: HelmParameter is a + parameter that's passed to helm + template during manifest generation + properties: + forceString: + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings + type: boolean + name: + description: Name is the name + of the Helm parameter + type: string + value: + description: Value is the value + for the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials pass + credentials to all domains (Helm's + --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is the Helm + release name to use. If omitted + it will use the application name + type: string + skipCrds: + description: SkipCrds skips custom + resource definition installation + step (Helm's --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is a list + of Helm value files to use when + generating a template + items: + type: string + type: array + values: + description: Values specifies Helm + values to be passed to helm template, + typically defined as a block + type: string + valuesObject: + description: ValuesObject specifies + Helm values to be passed to helm + template, defined as a map. This + takes precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the Helm version + to use for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize + specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations is + a list of additional annotations + to add to rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply env variables + substitution for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels is a list + of additional labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force applying + common annotations to resources + for Kustomize apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels specifies + whether to force applying common + labels to resources for Kustomize + apps + type: boolean + images: + description: Images is a list of Kustomize + image override specifications + items: + description: KustomizeImage represents + a Kustomize image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix + appended to resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix is a suffix + appended to resources for Kustomize + apps + type: string + namespace: + description: Namespace sets the namespace + that Kustomize adds to all resources + type: string + replicas: + description: Replicas is a list of + Kustomize Replicas override specifications + items: + description: KustomizeReplica override + specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number of replicas + x-kubernetes-int-or-string: true + name: + description: Name of Deployment + or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls which + version of Kustomize to use for + rendering manifests + type: string + type: object + path: + description: Path is a directory path + within the Git repository, and is only + valid for applications sourced from + Git. + type: string + plugin: + description: Plugin holds config management + plugin specific options + properties: + env: + description: Env holds options specific + to config management plugins + items: + description: EnvEntry represents + an entry in the application's + environment + properties: + name: + description: Name is the name + of the variable, usually expressed + in uppercase + type: string + value: + description: Value is the value + of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config management + parameters + items: + description: ApplicationSourcePluginParameter + holds options specific to config + management parameters + properties: + array: + description: Array is the value + of an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is the value + of a map type parameter. + type: object + name: + description: Name is the name + identifying a parameter. + type: string + string: + description: String_ is the + value of a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference to another + source within sources field. This field + will not be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL to the + repository (Git or Helm) that contains + the application manifests + type: string + targetRevision: + description: TargetRevision defines the + revision of the source to sync the application + to. In case of Git, this can be commit, + tag, or branch. If omitted, will equal + to HEAD. In case of Helm, this is a + semver tag for the Chart's version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when and how + a sync will be performed + properties: + automated: + description: Automated will keep an application + synced to the target revision + properties: + allowEmpty: + description: 'AllowEmpty allows apps + have zero live resources (default: + false)' + type: boolean + prune: + description: 'Prune specifies whether + to delete resources from the cluster + that are not found in the sources + anymore as part of automated sync + (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes whether + to revert resources back to their + desired state upon modification in + the cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata controls + metadata in the given namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed sync + retry behavior + properties: + backoff: + description: Backoff controls how to + backoff on subsequent retries of failed + syncs + properties: + duration: + description: Duration is the amount + to back off. Default unit is seconds, + but could also be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is a factor + to multiply the base duration + after each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration is the + maximum amount of time allowed + for the backoff strategy + type: string + type: object + limit: + description: Limit is the maximum number + of attempts for retrying a failed + sync. If set to 0, no retries will + be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you to specify + whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + values: + additionalProperties: + type: string + description: Values contains key/value pairs which are + passed directly as parameters to the template + type: object + required: + - configMapRef + type: object + clusters: + description: ClusterGenerator defines a generator to match + against clusters registered with ArgoCD. + properties: + selector: + description: Selector defines a label selector to match + against all clusters registered with ArgoCD. Clusters + today are stored as Kubernetes Secrets, thus the Secret + labels will be used for matching the selector. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a + selector that contains values, a key, and an + operator that relates the key and values. + properties: + key: + description: key is the label key that the + selector applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. If the + operator is Exists or DoesNotExist, the + values array must be empty. This array is + replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is "In", + and the values array contains only "value". The + requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + template: + description: ApplicationSetTemplate represents argocd + ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta represents + the Argo CD application fields that may be used + for Applications generated from the ApplicationSet + (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the desired + state of an ArgoCD Git Application + properties: + destination: + description: Destination is a reference to the + target Kubernetes server and namespace + properties: + name: + description: Name is an alternate way of + specifying the target cluster by its symbolic + name + type: string + nameRef: + description: NameRef is a reference to a + Cluster used to set Name + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a reference + to a Cluster used to set Name + properties: + matchControllerRef: + description: MatchControllerRef ensures + an object with the same controller + reference as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an + object with matching labels is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies the target + namespace for the application's resources. + The namespace will only be set for namespace-scoped + resources that have not set a value for + .metadata.namespace + type: string + server: + description: Server specifies the URL of + the target cluster and must be set to + the Kubernetes control plane API + type: string + serverRef: + description: ServerRef is a reference to + an Cluster used to set Server + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector selects + references to Repositories used to set + SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef ensures + an object with the same controller + reference as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an + object with matching labels is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is a list of + resources and their fields which should be + ignored during comparison + items: + description: ResourceIgnoreDifferences contains + resource filter and list of json paths which + should be ignored during comparison with + live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers is + a list of trusted managers. Fields mutated + by those managers will take precedence + over the desired state defined in the + SCM and won't be displayed in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list of information + (URLs, email addresses, and plain text) that + relates to the application + items: + description: Info is a list of informational + items for this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference to the project + this application belongs to. The empty string + means that application belongs to the 'default' + project. + type: string + revisionHistoryLimit: + description: 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. This should only be changed in exceptional + circumstances. Setting to zero will store + no history. This will reduce storage used. + Increasing will increase the space used to + store the history, so we do not recommend + increasing it. Default is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains all + required information about the source of an + application + properties: + chart: + description: Chart is a Helm chart name, + and must be specified for applications + sourced from a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains a glob + pattern to match paths against that + should be explicitly excluded from + being used during manifest generation + type: string + include: + description: Include contains a glob + pattern to match paths against that + should be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds options specific + to Jsonnet + properties: + extVars: + description: ExtVars is a list of + Jsonnet External Variables + items: + description: JsonnetVar represents + a variable to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library + search dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar represents + a variable to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies whether + to scan a directory recursively for + manifests + type: boolean + type: object + helm: + description: Helm holds helm specific options + properties: + fileParameters: + description: FileParameters are file + parameters to the helm template + items: + description: HelmFileParameter is + a file parameter that's passed to + helm template during manifest generation + properties: + name: + description: Name is the name + of the Helm parameter + type: string + path: + description: Path is the path + to the file containing the values + for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from failing + when valueFiles do not exist locally + by not appending them to helm template + --values + type: boolean + parameters: + description: Parameters is a list of + Helm parameters which are passed to + the helm template command upon manifest + generation + items: + description: HelmParameter is a parameter + that's passed to helm template during + manifest generation + properties: + forceString: + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings + type: boolean + name: + description: Name is the name + of the Helm parameter + type: string + value: + description: Value is the value + for the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials pass credentials + to all domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is the Helm + release name to use. If omitted it + will use the application name + type: string + skipCrds: + description: SkipCrds skips custom resource + definition installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is a list of + Helm value files to use when generating + a template + items: + type: string + type: array + values: + description: Values specifies Helm values + to be passed to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject specifies + Helm values to be passed to helm template, + defined as a map. This takes precedence + over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the Helm version + to use for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize specific + options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations is a + list of additional annotations to + add to rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply env variables + substitution for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels is a list + of additional labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force applying + common annotations to resources for + Kustomize apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels specifies + whether to force applying common labels + to resources for Kustomize apps + type: boolean + images: + description: Images is a list of Kustomize + image override specifications + items: + description: KustomizeImage represents + a Kustomize image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix + appended to resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix is a suffix + appended to resources for Kustomize + apps + type: string + namespace: + description: Namespace sets the namespace + that Kustomize adds to all resources + type: string + replicas: + description: Replicas is a list of Kustomize + Replicas override specifications + items: + description: KustomizeReplica override + specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number of replicas + x-kubernetes-int-or-string: true + name: + description: Name of Deployment + or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls which + version of Kustomize to use for rendering + manifests + type: string + type: object + path: + description: Path is a directory path within + the Git repository, and is only valid + for applications sourced from Git. + type: string + plugin: + description: Plugin holds config management + plugin specific options + properties: + env: + description: Env holds options specific + to config management plugins + items: + description: EnvEntry represents an + entry in the application's environment + properties: + name: + description: Name is the name + of the variable, usually expressed + in uppercase + type: string + value: + description: Value is the value + of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config management + parameters + items: + description: ApplicationSourcePluginParameter + holds options specific to config + management parameters + properties: + array: + description: Array is the value + of an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is the value + of a map type parameter. + type: object + name: + description: Name is the name + identifying a parameter. + type: string + string: + description: String_ is the value + of a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference to another + source within sources field. This field + will not be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL to the repository + (Git or Helm) that contains the application + manifests + type: string + targetRevision: + description: TargetRevision defines the + revision of the source to sync the application + to. In case of Git, this can be commit, + tag, or branch. If omitted, will equal + to HEAD. In case of Helm, this is a semver + tag for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference to the location + of the application's manifests or chart + items: + description: ApplicationSource contains all + required information about the source of + an application + properties: + chart: + description: Chart is a Helm chart name, + and must be specified for applications + sourced from a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains a glob + pattern to match paths against that + should be explicitly excluded from + being used during manifest generation + type: string + include: + description: Include contains a glob + pattern to match paths against that + should be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds options + specific to Jsonnet + properties: + extVars: + description: ExtVars is a list + of Jsonnet External Variables + items: + description: JsonnetVar represents + a variable to be passed to + jsonnet during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library + search dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of + Jsonnet Top-level Arguments + items: + description: JsonnetVar represents + a variable to be passed to + jsonnet during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies whether + to scan a directory recursively + for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific + options + properties: + fileParameters: + description: FileParameters are file + parameters to the helm template + items: + description: HelmFileParameter is + a file parameter that's passed + to helm template during manifest + generation + properties: + name: + description: Name is the name + of the Helm parameter + type: string + path: + description: Path is the path + to the file containing the + values for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from failing + when valueFiles do not exist locally + by not appending them to helm template + --values + type: boolean + parameters: + description: Parameters is a list + of Helm parameters which are passed + to the helm template command upon + manifest generation + items: + description: HelmParameter is a + parameter that's passed to helm + template during manifest generation + properties: + forceString: + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings + type: boolean + name: + description: Name is the name + of the Helm parameter + type: string + value: + description: Value is the value + for the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials pass + credentials to all domains (Helm's + --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is the Helm + release name to use. If omitted + it will use the application name + type: string + skipCrds: + description: SkipCrds skips custom + resource definition installation + step (Helm's --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is a list + of Helm value files to use when + generating a template + items: + type: string + type: array + values: + description: Values specifies Helm + values to be passed to helm template, + typically defined as a block + type: string + valuesObject: + description: ValuesObject specifies + Helm values to be passed to helm + template, defined as a map. This + takes precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the Helm version + to use for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize + specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations is + a list of additional annotations + to add to rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply env variables + substitution for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels is a list + of additional labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force applying + common annotations to resources + for Kustomize apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels specifies + whether to force applying common + labels to resources for Kustomize + apps + type: boolean + images: + description: Images is a list of Kustomize + image override specifications + items: + description: KustomizeImage represents + a Kustomize image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix + appended to resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix is a suffix + appended to resources for Kustomize + apps + type: string + namespace: + description: Namespace sets the namespace + that Kustomize adds to all resources + type: string + replicas: + description: Replicas is a list of + Kustomize Replicas override specifications + items: + description: KustomizeReplica override + specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number of replicas + x-kubernetes-int-or-string: true + name: + description: Name of Deployment + or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls which + version of Kustomize to use for + rendering manifests + type: string + type: object + path: + description: Path is a directory path + within the Git repository, and is only + valid for applications sourced from + Git. + type: string + plugin: + description: Plugin holds config management + plugin specific options + properties: + env: + description: Env holds options specific + to config management plugins + items: + description: EnvEntry represents + an entry in the application's + environment + properties: + name: + description: Name is the name + of the variable, usually expressed + in uppercase + type: string + value: + description: Value is the value + of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config management + parameters + items: + description: ApplicationSourcePluginParameter + holds options specific to config + management parameters + properties: + array: + description: Array is the value + of an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is the value + of a map type parameter. + type: object + name: + description: Name is the name + identifying a parameter. + type: string + string: + description: String_ is the + value of a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference to another + source within sources field. This field + will not be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL to the + repository (Git or Helm) that contains + the application manifests + type: string + targetRevision: + description: TargetRevision defines the + revision of the source to sync the application + to. In case of Git, this can be commit, + tag, or branch. If omitted, will equal + to HEAD. In case of Helm, this is a + semver tag for the Chart's version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when and how + a sync will be performed + properties: + automated: + description: Automated will keep an application + synced to the target revision + properties: + allowEmpty: + description: 'AllowEmpty allows apps + have zero live resources (default: + false)' + type: boolean + prune: + description: 'Prune specifies whether + to delete resources from the cluster + that are not found in the sources + anymore as part of automated sync + (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes whether + to revert resources back to their + desired state upon modification in + the cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata controls + metadata in the given namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed sync + retry behavior + properties: + backoff: + description: Backoff controls how to + backoff on subsequent retries of failed + syncs + properties: + duration: + description: Duration is the amount + to back off. Default unit is seconds, + but could also be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is a factor + to multiply the base duration + after each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration is the + maximum amount of time allowed + for the backoff strategy + type: string + type: object + limit: + description: Limit is the maximum number + of attempts for retrying a failed + sync. If set to 0, no retries will + be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you to specify + whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + values: + additionalProperties: + type: string + description: Values contains key/value pairs which are + passed directly as parameters to the template + type: object + type: object + git: + description: GitGenerator defines a generator that scrapes + a Git repo to find candidate resources. + properties: + directories: + items: + description: GitDirectoryGeneratorItem defines a directory + to scan for resources. + properties: + exclude: + type: boolean + path: + type: string + required: + - path + type: object + type: array + files: + items: + description: GitFileGeneratorItem defines a file to + scan for resources. + properties: + path: + type: string + required: + - path + type: object + type: array + pathParamPrefix: + type: string + repoURL: + type: string + requeueAfterSeconds: + format: int64 + type: integer + revision: + type: string + template: + description: ApplicationSetTemplate represents argocd + ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta represents + the Argo CD application fields that may be used + for Applications generated from the ApplicationSet + (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the desired + state of an ArgoCD Git Application + properties: + destination: + description: Destination is a reference to the + target Kubernetes server and namespace + properties: + name: + description: Name is an alternate way of + specifying the target cluster by its symbolic + name + type: string + nameRef: + description: NameRef is a reference to a + Cluster used to set Name + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a reference + to a Cluster used to set Name + properties: + matchControllerRef: + description: MatchControllerRef ensures + an object with the same controller + reference as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an + object with matching labels is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies the target + namespace for the application's resources. + The namespace will only be set for namespace-scoped + resources that have not set a value for + .metadata.namespace + type: string + server: + description: Server specifies the URL of + the target cluster and must be set to + the Kubernetes control plane API + type: string + serverRef: + description: ServerRef is a reference to + an Cluster used to set Server + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector selects + references to Repositories used to set + SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef ensures + an object with the same controller + reference as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an + object with matching labels is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is a list of + resources and their fields which should be + ignored during comparison + items: + description: ResourceIgnoreDifferences contains + resource filter and list of json paths which + should be ignored during comparison with + live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers is + a list of trusted managers. Fields mutated + by those managers will take precedence + over the desired state defined in the + SCM and won't be displayed in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list of information + (URLs, email addresses, and plain text) that + relates to the application + items: + description: Info is a list of informational + items for this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference to the project + this application belongs to. The empty string + means that application belongs to the 'default' + project. + type: string + revisionHistoryLimit: + description: 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. This should only be changed in exceptional + circumstances. Setting to zero will store + no history. This will reduce storage used. + Increasing will increase the space used to + store the history, so we do not recommend + increasing it. Default is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains all + required information about the source of an + application + properties: + chart: + description: Chart is a Helm chart name, + and must be specified for applications + sourced from a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains a glob + pattern to match paths against that + should be explicitly excluded from + being used during manifest generation + type: string + include: + description: Include contains a glob + pattern to match paths against that + should be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds options specific + to Jsonnet + properties: + extVars: + description: ExtVars is a list of + Jsonnet External Variables + items: + description: JsonnetVar represents + a variable to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library + search dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar represents + a variable to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies whether + to scan a directory recursively for + manifests + type: boolean + type: object + helm: + description: Helm holds helm specific options + properties: + fileParameters: + description: FileParameters are file + parameters to the helm template + items: + description: HelmFileParameter is + a file parameter that's passed to + helm template during manifest generation + properties: + name: + description: Name is the name + of the Helm parameter + type: string + path: + description: Path is the path + to the file containing the values + for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from failing + when valueFiles do not exist locally + by not appending them to helm template + --values + type: boolean + parameters: + description: Parameters is a list of + Helm parameters which are passed to + the helm template command upon manifest + generation + items: + description: HelmParameter is a parameter + that's passed to helm template during + manifest generation + properties: + forceString: + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings + type: boolean + name: + description: Name is the name + of the Helm parameter + type: string + value: + description: Value is the value + for the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials pass credentials + to all domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is the Helm + release name to use. If omitted it + will use the application name + type: string + skipCrds: + description: SkipCrds skips custom resource + definition installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is a list of + Helm value files to use when generating + a template + items: + type: string + type: array + values: + description: Values specifies Helm values + to be passed to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject specifies + Helm values to be passed to helm template, + defined as a map. This takes precedence + over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the Helm version + to use for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize specific + options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations is a + list of additional annotations to + add to rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply env variables + substitution for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels is a list + of additional labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force applying + common annotations to resources for + Kustomize apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels specifies + whether to force applying common labels + to resources for Kustomize apps + type: boolean + images: + description: Images is a list of Kustomize + image override specifications + items: + description: KustomizeImage represents + a Kustomize image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix + appended to resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix is a suffix + appended to resources for Kustomize + apps + type: string + namespace: + description: Namespace sets the namespace + that Kustomize adds to all resources + type: string + replicas: + description: Replicas is a list of Kustomize + Replicas override specifications + items: + description: KustomizeReplica override + specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number of replicas + x-kubernetes-int-or-string: true + name: + description: Name of Deployment + or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls which + version of Kustomize to use for rendering + manifests + type: string + type: object + path: + description: Path is a directory path within + the Git repository, and is only valid + for applications sourced from Git. + type: string + plugin: + description: Plugin holds config management + plugin specific options + properties: + env: + description: Env holds options specific + to config management plugins + items: + description: EnvEntry represents an + entry in the application's environment + properties: + name: + description: Name is the name + of the variable, usually expressed + in uppercase + type: string + value: + description: Value is the value + of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config management + parameters + items: + description: ApplicationSourcePluginParameter + holds options specific to config + management parameters + properties: + array: + description: Array is the value + of an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is the value + of a map type parameter. + type: object + name: + description: Name is the name + identifying a parameter. + type: string + string: + description: String_ is the value + of a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference to another + source within sources field. This field + will not be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL to the repository + (Git or Helm) that contains the application + manifests + type: string + targetRevision: + description: TargetRevision defines the + revision of the source to sync the application + to. In case of Git, this can be commit, + tag, or branch. If omitted, will equal + to HEAD. In case of Helm, this is a semver + tag for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference to the location + of the application's manifests or chart + items: + description: ApplicationSource contains all + required information about the source of + an application + properties: + chart: + description: Chart is a Helm chart name, + and must be specified for applications + sourced from a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains a glob + pattern to match paths against that + should be explicitly excluded from + being used during manifest generation + type: string + include: + description: Include contains a glob + pattern to match paths against that + should be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds options + specific to Jsonnet + properties: + extVars: + description: ExtVars is a list + of Jsonnet External Variables + items: + description: JsonnetVar represents + a variable to be passed to + jsonnet during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library + search dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of + Jsonnet Top-level Arguments + items: + description: JsonnetVar represents + a variable to be passed to + jsonnet during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies whether + to scan a directory recursively + for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific + options + properties: + fileParameters: + description: FileParameters are file + parameters to the helm template + items: + description: HelmFileParameter is + a file parameter that's passed + to helm template during manifest + generation + properties: + name: + description: Name is the name + of the Helm parameter + type: string + path: + description: Path is the path + to the file containing the + values for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from failing + when valueFiles do not exist locally + by not appending them to helm template + --values + type: boolean + parameters: + description: Parameters is a list + of Helm parameters which are passed + to the helm template command upon + manifest generation + items: + description: HelmParameter is a + parameter that's passed to helm + template during manifest generation + properties: + forceString: + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings + type: boolean + name: + description: Name is the name + of the Helm parameter + type: string + value: + description: Value is the value + for the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials pass + credentials to all domains (Helm's + --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is the Helm + release name to use. If omitted + it will use the application name + type: string + skipCrds: + description: SkipCrds skips custom + resource definition installation + step (Helm's --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is a list + of Helm value files to use when + generating a template + items: + type: string + type: array + values: + description: Values specifies Helm + values to be passed to helm template, + typically defined as a block + type: string + valuesObject: + description: ValuesObject specifies + Helm values to be passed to helm + template, defined as a map. This + takes precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the Helm version + to use for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize + specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations is + a list of additional annotations + to add to rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply env variables + substitution for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels is a list + of additional labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force applying + common annotations to resources + for Kustomize apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels specifies + whether to force applying common + labels to resources for Kustomize + apps + type: boolean + images: + description: Images is a list of Kustomize + image override specifications + items: + description: KustomizeImage represents + a Kustomize image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix + appended to resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix is a suffix + appended to resources for Kustomize + apps + type: string + namespace: + description: Namespace sets the namespace + that Kustomize adds to all resources + type: string + replicas: + description: Replicas is a list of + Kustomize Replicas override specifications + items: + description: KustomizeReplica override + specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number of replicas + x-kubernetes-int-or-string: true + name: + description: Name of Deployment + or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls which + version of Kustomize to use for + rendering manifests + type: string + type: object + path: + description: Path is a directory path + within the Git repository, and is only + valid for applications sourced from + Git. + type: string + plugin: + description: Plugin holds config management + plugin specific options + properties: + env: + description: Env holds options specific + to config management plugins + items: + description: EnvEntry represents + an entry in the application's + environment + properties: + name: + description: Name is the name + of the variable, usually expressed + in uppercase + type: string + value: + description: Value is the value + of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config management + parameters + items: + description: ApplicationSourcePluginParameter + holds options specific to config + management parameters + properties: + array: + description: Array is the value + of an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is the value + of a map type parameter. + type: object + name: + description: Name is the name + identifying a parameter. + type: string + string: + description: String_ is the + value of a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference to another + source within sources field. This field + will not be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL to the + repository (Git or Helm) that contains + the application manifests + type: string + targetRevision: + description: TargetRevision defines the + revision of the source to sync the application + to. In case of Git, this can be commit, + tag, or branch. If omitted, will equal + to HEAD. In case of Helm, this is a + semver tag for the Chart's version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when and how + a sync will be performed + properties: + automated: + description: Automated will keep an application + synced to the target revision + properties: + allowEmpty: + description: 'AllowEmpty allows apps + have zero live resources (default: + false)' + type: boolean + prune: + description: 'Prune specifies whether + to delete resources from the cluster + that are not found in the sources + anymore as part of automated sync + (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes whether + to revert resources back to their + desired state upon modification in + the cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata controls + metadata in the given namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed sync + retry behavior + properties: + backoff: + description: Backoff controls how to + backoff on subsequent retries of failed + syncs + properties: + duration: + description: Duration is the amount + to back off. Default unit is seconds, + but could also be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is a factor + to multiply the base duration + after each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration is the + maximum amount of time allowed + for the backoff strategy + type: string + type: object + limit: + description: Limit is the maximum number + of attempts for retrying a failed + sync. If set to 0, no retries will + be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you to specify + whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + values: + additionalProperties: + type: string + description: Values contains key/value pairs which are + passed directly as parameters to the template + type: object + required: + - repoURL + - revision + type: object + list: + description: ListGenerator include items info + properties: + elements: + items: + x-kubernetes-preserve-unknown-fields: true + type: array + elementsYaml: + type: string + template: + description: ApplicationSetTemplate represents argocd + ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta represents + the Argo CD application fields that may be used + for Applications generated from the ApplicationSet + (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the desired + state of an ArgoCD Git Application + properties: + destination: + description: Destination is a reference to the + target Kubernetes server and namespace + properties: + name: + description: Name is an alternate way of + specifying the target cluster by its symbolic + name + type: string + nameRef: + description: NameRef is a reference to a + Cluster used to set Name + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a reference + to a Cluster used to set Name + properties: + matchControllerRef: + description: MatchControllerRef ensures + an object with the same controller + reference as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an + object with matching labels is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies the target + namespace for the application's resources. + The namespace will only be set for namespace-scoped + resources that have not set a value for + .metadata.namespace + type: string + server: + description: Server specifies the URL of + the target cluster and must be set to + the Kubernetes control plane API + type: string + serverRef: + description: ServerRef is a reference to + an Cluster used to set Server + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector selects + references to Repositories used to set + SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef ensures + an object with the same controller + reference as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an + object with matching labels is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is a list of + resources and their fields which should be + ignored during comparison + items: + description: ResourceIgnoreDifferences contains + resource filter and list of json paths which + should be ignored during comparison with + live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers is + a list of trusted managers. Fields mutated + by those managers will take precedence + over the desired state defined in the + SCM and won't be displayed in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list of information + (URLs, email addresses, and plain text) that + relates to the application + items: + description: Info is a list of informational + items for this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference to the project + this application belongs to. The empty string + means that application belongs to the 'default' + project. + type: string + revisionHistoryLimit: + description: 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. This should only be changed in exceptional + circumstances. Setting to zero will store + no history. This will reduce storage used. + Increasing will increase the space used to + store the history, so we do not recommend + increasing it. Default is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains all + required information about the source of an + application + properties: + chart: + description: Chart is a Helm chart name, + and must be specified for applications + sourced from a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains a glob + pattern to match paths against that + should be explicitly excluded from + being used during manifest generation + type: string + include: + description: Include contains a glob + pattern to match paths against that + should be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds options specific + to Jsonnet + properties: + extVars: + description: ExtVars is a list of + Jsonnet External Variables + items: + description: JsonnetVar represents + a variable to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library + search dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar represents + a variable to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies whether + to scan a directory recursively for + manifests + type: boolean + type: object + helm: + description: Helm holds helm specific options + properties: + fileParameters: + description: FileParameters are file + parameters to the helm template + items: + description: HelmFileParameter is + a file parameter that's passed to + helm template during manifest generation + properties: + name: + description: Name is the name + of the Helm parameter + type: string + path: + description: Path is the path + to the file containing the values + for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from failing + when valueFiles do not exist locally + by not appending them to helm template + --values + type: boolean + parameters: + description: Parameters is a list of + Helm parameters which are passed to + the helm template command upon manifest + generation + items: + description: HelmParameter is a parameter + that's passed to helm template during + manifest generation + properties: + forceString: + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings + type: boolean + name: + description: Name is the name + of the Helm parameter + type: string + value: + description: Value is the value + for the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials pass credentials + to all domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is the Helm + release name to use. If omitted it + will use the application name + type: string + skipCrds: + description: SkipCrds skips custom resource + definition installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is a list of + Helm value files to use when generating + a template + items: + type: string + type: array + values: + description: Values specifies Helm values + to be passed to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject specifies + Helm values to be passed to helm template, + defined as a map. This takes precedence + over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the Helm version + to use for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize specific + options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations is a + list of additional annotations to + add to rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply env variables + substitution for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels is a list + of additional labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force applying + common annotations to resources for + Kustomize apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels specifies + whether to force applying common labels + to resources for Kustomize apps + type: boolean + images: + description: Images is a list of Kustomize + image override specifications + items: + description: KustomizeImage represents + a Kustomize image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix + appended to resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix is a suffix + appended to resources for Kustomize + apps + type: string + namespace: + description: Namespace sets the namespace + that Kustomize adds to all resources + type: string + replicas: + description: Replicas is a list of Kustomize + Replicas override specifications + items: + description: KustomizeReplica override + specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number of replicas + x-kubernetes-int-or-string: true + name: + description: Name of Deployment + or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls which + version of Kustomize to use for rendering + manifests + type: string + type: object + path: + description: Path is a directory path within + the Git repository, and is only valid + for applications sourced from Git. + type: string + plugin: + description: Plugin holds config management + plugin specific options + properties: + env: + description: Env holds options specific + to config management plugins + items: + description: EnvEntry represents an + entry in the application's environment + properties: + name: + description: Name is the name + of the variable, usually expressed + in uppercase + type: string + value: + description: Value is the value + of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config management + parameters + items: + description: ApplicationSourcePluginParameter + holds options specific to config + management parameters + properties: + array: + description: Array is the value + of an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is the value + of a map type parameter. + type: object + name: + description: Name is the name + identifying a parameter. + type: string + string: + description: String_ is the value + of a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference to another + source within sources field. This field + will not be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL to the repository + (Git or Helm) that contains the application + manifests + type: string + targetRevision: + description: TargetRevision defines the + revision of the source to sync the application + to. In case of Git, this can be commit, + tag, or branch. If omitted, will equal + to HEAD. In case of Helm, this is a semver + tag for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference to the location + of the application's manifests or chart + items: + description: ApplicationSource contains all + required information about the source of + an application + properties: + chart: + description: Chart is a Helm chart name, + and must be specified for applications + sourced from a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains a glob + pattern to match paths against that + should be explicitly excluded from + being used during manifest generation + type: string + include: + description: Include contains a glob + pattern to match paths against that + should be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds options + specific to Jsonnet + properties: + extVars: + description: ExtVars is a list + of Jsonnet External Variables + items: + description: JsonnetVar represents + a variable to be passed to + jsonnet during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library + search dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of + Jsonnet Top-level Arguments + items: + description: JsonnetVar represents + a variable to be passed to + jsonnet during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies whether + to scan a directory recursively + for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific + options + properties: + fileParameters: + description: FileParameters are file + parameters to the helm template + items: + description: HelmFileParameter is + a file parameter that's passed + to helm template during manifest + generation + properties: + name: + description: Name is the name + of the Helm parameter + type: string + path: + description: Path is the path + to the file containing the + values for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from failing + when valueFiles do not exist locally + by not appending them to helm template + --values + type: boolean + parameters: + description: Parameters is a list + of Helm parameters which are passed + to the helm template command upon + manifest generation + items: + description: HelmParameter is a + parameter that's passed to helm + template during manifest generation + properties: + forceString: + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings + type: boolean + name: + description: Name is the name + of the Helm parameter + type: string + value: + description: Value is the value + for the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials pass + credentials to all domains (Helm's + --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is the Helm + release name to use. If omitted + it will use the application name + type: string + skipCrds: + description: SkipCrds skips custom + resource definition installation + step (Helm's --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is a list + of Helm value files to use when + generating a template + items: + type: string + type: array + values: + description: Values specifies Helm + values to be passed to helm template, + typically defined as a block + type: string + valuesObject: + description: ValuesObject specifies + Helm values to be passed to helm + template, defined as a map. This + takes precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the Helm version + to use for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize + specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations is + a list of additional annotations + to add to rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply env variables + substitution for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels is a list + of additional labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force applying + common annotations to resources + for Kustomize apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels specifies + whether to force applying common + labels to resources for Kustomize + apps + type: boolean + images: + description: Images is a list of Kustomize + image override specifications + items: + description: KustomizeImage represents + a Kustomize image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix + appended to resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix is a suffix + appended to resources for Kustomize + apps + type: string + namespace: + description: Namespace sets the namespace + that Kustomize adds to all resources + type: string + replicas: + description: Replicas is a list of + Kustomize Replicas override specifications + items: + description: KustomizeReplica override + specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number of replicas + x-kubernetes-int-or-string: true + name: + description: Name of Deployment + or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls which + version of Kustomize to use for + rendering manifests + type: string + type: object + path: + description: Path is a directory path + within the Git repository, and is only + valid for applications sourced from + Git. + type: string + plugin: + description: Plugin holds config management + plugin specific options + properties: + env: + description: Env holds options specific + to config management plugins + items: + description: EnvEntry represents + an entry in the application's + environment + properties: + name: + description: Name is the name + of the variable, usually expressed + in uppercase + type: string + value: + description: Value is the value + of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config management + parameters + items: + description: ApplicationSourcePluginParameter + holds options specific to config + management parameters + properties: + array: + description: Array is the value + of an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is the value + of a map type parameter. + type: object + name: + description: Name is the name + identifying a parameter. + type: string + string: + description: String_ is the + value of a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference to another + source within sources field. This field + will not be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL to the + repository (Git or Helm) that contains + the application manifests + type: string + targetRevision: + description: TargetRevision defines the + revision of the source to sync the application + to. In case of Git, this can be commit, + tag, or branch. If omitted, will equal + to HEAD. In case of Helm, this is a + semver tag for the Chart's version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when and how + a sync will be performed + properties: + automated: + description: Automated will keep an application + synced to the target revision + properties: + allowEmpty: + description: 'AllowEmpty allows apps + have zero live resources (default: + false)' + type: boolean + prune: + description: 'Prune specifies whether + to delete resources from the cluster + that are not found in the sources + anymore as part of automated sync + (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes whether + to revert resources back to their + desired state upon modification in + the cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata controls + metadata in the given namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed sync + retry behavior + properties: + backoff: + description: Backoff controls how to + backoff on subsequent retries of failed + syncs + properties: + duration: + description: Duration is the amount + to back off. Default unit is seconds, + but could also be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is a factor + to multiply the base duration + after each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration is the + maximum amount of time allowed + for the backoff strategy + type: string + type: object + limit: + description: Limit is the maximum number + of attempts for retrying a failed + sync. If set to 0, no retries will + be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you to specify + whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + required: + - elements + type: object + matrix: + description: MatrixGenerator generates the cartesian product + of two sets of parameters. The parameters are defined + by two nested generators. + properties: + generators: + items: + description: ApplicationSetNestedGenerator represents + a generator nested within a combination-type generator + (MatrixGenerator or MergeGenerator). + properties: + clusterDecisionResource: + description: DuckTypeGenerator defines a generator + to match against clusters registered with ArgoCD. + properties: + configMapRef: + description: ConfigMapRef is a ConfigMap with + the duck type definitions needed to retrieve + the data this includes apiVersion(group/version), + kind, matchKey and validation settings Name + is the resource name of the kind, group + and version, defined in the ConfigMapRef + RequeueAfterSeconds is how long before the + duckType will be rechecked for a change + type: string + labelSelector: + description: A label selector is a label query + over a set of resources. The result of matchLabels + and matchExpressions are ANDed. An empty + label selector matches all objects. A null + label selector matches no objects. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + name: + type: string + requeueAfterSeconds: + format: int64 + type: integer + template: + description: ApplicationSetTemplate represents + argocd ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta + represents the Argo CD application fields + that may be used for Applications generated + from the ApplicationSet (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the + desired state of an ArgoCD Git Application + properties: + destination: + description: Destination is a reference + to the target Kubernetes server + and namespace + properties: + name: + description: Name is an alternate + way of specifying the target + cluster by its symbolic name + type: string + nameRef: + description: NameRef is a reference + to a Cluster used to set Name + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a + reference to a Cluster used + to set Name + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies + the target namespace for the + application's resources. The + namespace will only be set for + namespace-scoped resources that + have not set a value for .metadata.namespace + type: string + server: + description: Server specifies + the URL of the target cluster + and must be set to the Kubernetes + control plane API + type: string + serverRef: + description: ServerRef is a reference + to an Cluster used to set Server + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector + selects references to Repositories + used to set SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is + a list of resources and their fields + which should be ignored during comparison + items: + description: ResourceIgnoreDifferences + contains resource filter and list + of json paths which should be + ignored during comparison with + live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers + is a list of trusted managers. + Fields mutated by those managers + will take precedence over + the desired state defined + in the SCM and won't be displayed + in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list + of information (URLs, email addresses, + and plain text) that relates to + the application + items: + description: Info is a list of informational + items for this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference + to the project this application + belongs to. The empty string means + that application belongs to the + 'default' project. + type: string + revisionHistoryLimit: + description: 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. This should + only be changed in exceptional circumstances. + Setting to zero will store no history. + This will reduce storage used. Increasing + will increase the space used to + store the history, so we do not + recommend increasing it. Default + is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains + all required information about the + source of an application + properties: + chart: + description: Chart is a Helm chart + name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded from + being used during manifest + generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars is + a list of Jsonnet External + Variables + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is a + list of Jsonnet Top-level + Arguments + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific + options + properties: + fileParameters: + description: FileParameters + are file parameters to the + helm template + items: + description: HelmFileParameter + is a file parameter that's + passed to helm template + during manifest generation + properties: + name: + description: Name is + the name of the Helm + parameter + type: string + path: + description: Path is + the path to the file + containing the values + for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from + failing when valueFiles + do not exist locally by + not appending them to helm + template --values + type: boolean + parameters: + description: Parameters is + a list of Helm parameters + which are passed to the + helm template command upon + manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to interpret + booleans and numbers + as strings + type: boolean + name: + description: Name is + the name of the Helm + parameter + type: string + value: + description: Value is + the value for the + Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is + the Helm release name to + use. If omitted it will + use the application name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is + a list of Helm value files + to use when generating a + template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values to + be passed to helm template, + defined as a map. This takes + precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the + Helm version to use for + templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize + specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to rendered + manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels to + resources for Kustomize + apps + type: boolean + images: + description: Images is a list + of Kustomize image override + specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in the + format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is + a prefix appended to resources + for Kustomize apps + type: string + nameSuffix: + description: NameSuffix is + a suffix appended to resources + for Kustomize apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is a + list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name of + Deployment or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry represents + an entry in the application's + environment + properties: + name: + description: Name is + the name of the variable, + usually expressed + in uppercase + type: string + value: + description: Value is + the value of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config + management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management parameters + properties: + array: + description: Array is + the value of an array + type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name is + the name identifying + a parameter. + type: string + string: + description: String_ + is the value of a + string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not be + used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL + to the repository (Git or Helm) + that contains the application + manifests + type: string + targetRevision: + description: TargetRevision defines + the revision of the source to + sync the application to. In + case of Git, this can be commit, + tag, or branch. If omitted, + will equal to HEAD. In case + of Helm, this is a semver tag + for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference + to the location of the application's + manifests or chart + items: + description: ApplicationSource contains + all required information about + the source of an application + properties: + chart: + description: Chart is a Helm + chart name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds + path/directory specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded + from being used during + manifest generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included + during manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars + is a list of Jsonnet + External Variables + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is + a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm + specific options + properties: + fileParameters: + description: FileParameters + are file parameters to + the helm template + items: + description: HelmFileParameter + is a file parameter + that's passed to helm + template during manifest + generation + properties: + name: + description: Name + is the name of the + Helm parameter + type: string + path: + description: Path + is the path to the + file containing + the values for the + Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template + from failing when valueFiles + do not exist locally by + not appending them to + helm template --values + type: boolean + parameters: + description: Parameters + is a list of Helm parameters + which are passed to the + helm template command + upon manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to + interpret booleans + and numbers as strings + type: boolean + name: + description: Name + is the name of the + Helm parameter + type: string + value: + description: Value + is the value for + the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName + is the Helm release name + to use. If omitted it + will use the application + name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles + is a list of Helm value + files to use when generating + a template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values + to be passed to helm template, + defined as a map. This + takes precedence over + Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is + the Helm version to use + for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds + kustomize specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to + rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels + to resources for Kustomize + apps + type: boolean + images: + description: Images is a + list of Kustomize image + override specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix + is a prefix appended to + resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix + is a suffix appended to + resources for Kustomize + apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is + a list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name + of Deployment or + StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific + options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry + represents an entry + in the application's + environment + properties: + name: + description: Name + is the name of the + variable, usually + expressed in uppercase + type: string + value: + description: Value + is the value of + the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific + config management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management + parameters + properties: + array: + description: Array + is the value of + an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name + is the name identifying + a parameter. + type: string + string: + description: String_ + is the value of + a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not + be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the + URL to the repository (Git + or Helm) that contains the + application manifests + type: string + targetRevision: + description: TargetRevision + defines the revision of the + source to sync the application + to. In case of Git, this can + be commit, tag, or branch. + If omitted, will equal to + HEAD. In case of Helm, this + is a semver tag for the Chart's + version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when + and how a sync will be performed + properties: + automated: + description: Automated will keep + an application synced to the + target revision + properties: + allowEmpty: + description: 'AllowEmpty allows + apps have zero live resources + (default: false)' + type: boolean + prune: + description: 'Prune specifies + whether to delete resources + from the cluster that are + not found in the sources + anymore as part of automated + sync (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes + whether to revert resources + back to their desired state + upon modification in the + cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata + controls metadata in the given + namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed + sync retry behavior + properties: + backoff: + description: Backoff controls + how to backoff on subsequent + retries of failed syncs + properties: + duration: + description: Duration + is the amount to back + off. Default unit is + seconds, but could also + be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is + a factor to multiply + the base duration after + each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration + is the maximum amount + of time allowed for + the backoff strategy + type: string + type: object + limit: + description: Limit is the + maximum number of attempts + for retrying a failed sync. + If set to 0, no retries + will be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you + to specify whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + values: + additionalProperties: + type: string + description: Values contains key/value pairs + which are passed directly as parameters + to the template + type: object + required: + - configMapRef + type: object + clusters: + description: ClusterGenerator defines a generator + to match against clusters registered with ArgoCD. + properties: + selector: + description: Selector defines a label selector + to match against all clusters registered + with ArgoCD. Clusters today are stored as + Kubernetes Secrets, thus the Secret labels + will be used for matching the selector. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + template: + description: ApplicationSetTemplate represents + argocd ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta + represents the Argo CD application fields + that may be used for Applications generated + from the ApplicationSet (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the + desired state of an ArgoCD Git Application + properties: + destination: + description: Destination is a reference + to the target Kubernetes server + and namespace + properties: + name: + description: Name is an alternate + way of specifying the target + cluster by its symbolic name + type: string + nameRef: + description: NameRef is a reference + to a Cluster used to set Name + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a + reference to a Cluster used + to set Name + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies + the target namespace for the + application's resources. The + namespace will only be set for + namespace-scoped resources that + have not set a value for .metadata.namespace + type: string + server: + description: Server specifies + the URL of the target cluster + and must be set to the Kubernetes + control plane API + type: string + serverRef: + description: ServerRef is a reference + to an Cluster used to set Server + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector + selects references to Repositories + used to set SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is + a list of resources and their fields + which should be ignored during comparison + items: + description: ResourceIgnoreDifferences + contains resource filter and list + of json paths which should be + ignored during comparison with + live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers + is a list of trusted managers. + Fields mutated by those managers + will take precedence over + the desired state defined + in the SCM and won't be displayed + in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list + of information (URLs, email addresses, + and plain text) that relates to + the application + items: + description: Info is a list of informational + items for this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference + to the project this application + belongs to. The empty string means + that application belongs to the + 'default' project. + type: string + revisionHistoryLimit: + description: 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. This should + only be changed in exceptional circumstances. + Setting to zero will store no history. + This will reduce storage used. Increasing + will increase the space used to + store the history, so we do not + recommend increasing it. Default + is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains + all required information about the + source of an application + properties: + chart: + description: Chart is a Helm chart + name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded from + being used during manifest + generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars is + a list of Jsonnet External + Variables + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is a + list of Jsonnet Top-level + Arguments + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific + options + properties: + fileParameters: + description: FileParameters + are file parameters to the + helm template + items: + description: HelmFileParameter + is a file parameter that's + passed to helm template + during manifest generation + properties: + name: + description: Name is + the name of the Helm + parameter + type: string + path: + description: Path is + the path to the file + containing the values + for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from + failing when valueFiles + do not exist locally by + not appending them to helm + template --values + type: boolean + parameters: + description: Parameters is + a list of Helm parameters + which are passed to the + helm template command upon + manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to interpret + booleans and numbers + as strings + type: boolean + name: + description: Name is + the name of the Helm + parameter + type: string + value: + description: Value is + the value for the + Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is + the Helm release name to + use. If omitted it will + use the application name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is + a list of Helm value files + to use when generating a + template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values to + be passed to helm template, + defined as a map. This takes + precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the + Helm version to use for + templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize + specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to rendered + manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels to + resources for Kustomize + apps + type: boolean + images: + description: Images is a list + of Kustomize image override + specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in the + format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is + a prefix appended to resources + for Kustomize apps + type: string + nameSuffix: + description: NameSuffix is + a suffix appended to resources + for Kustomize apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is a + list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name of + Deployment or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry represents + an entry in the application's + environment + properties: + name: + description: Name is + the name of the variable, + usually expressed + in uppercase + type: string + value: + description: Value is + the value of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config + management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management parameters + properties: + array: + description: Array is + the value of an array + type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name is + the name identifying + a parameter. + type: string + string: + description: String_ + is the value of a + string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not be + used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL + to the repository (Git or Helm) + that contains the application + manifests + type: string + targetRevision: + description: TargetRevision defines + the revision of the source to + sync the application to. In + case of Git, this can be commit, + tag, or branch. If omitted, + will equal to HEAD. In case + of Helm, this is a semver tag + for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference + to the location of the application's + manifests or chart + items: + description: ApplicationSource contains + all required information about + the source of an application + properties: + chart: + description: Chart is a Helm + chart name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds + path/directory specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded + from being used during + manifest generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included + during manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars + is a list of Jsonnet + External Variables + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is + a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm + specific options + properties: + fileParameters: + description: FileParameters + are file parameters to + the helm template + items: + description: HelmFileParameter + is a file parameter + that's passed to helm + template during manifest + generation + properties: + name: + description: Name + is the name of the + Helm parameter + type: string + path: + description: Path + is the path to the + file containing + the values for the + Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template + from failing when valueFiles + do not exist locally by + not appending them to + helm template --values + type: boolean + parameters: + description: Parameters + is a list of Helm parameters + which are passed to the + helm template command + upon manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to + interpret booleans + and numbers as strings + type: boolean + name: + description: Name + is the name of the + Helm parameter + type: string + value: + description: Value + is the value for + the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName + is the Helm release name + to use. If omitted it + will use the application + name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles + is a list of Helm value + files to use when generating + a template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values + to be passed to helm template, + defined as a map. This + takes precedence over + Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is + the Helm version to use + for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds + kustomize specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to + rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels + to resources for Kustomize + apps + type: boolean + images: + description: Images is a + list of Kustomize image + override specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix + is a prefix appended to + resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix + is a suffix appended to + resources for Kustomize + apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is + a list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name + of Deployment or + StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific + options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry + represents an entry + in the application's + environment + properties: + name: + description: Name + is the name of the + variable, usually + expressed in uppercase + type: string + value: + description: Value + is the value of + the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific + config management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management + parameters + properties: + array: + description: Array + is the value of + an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name + is the name identifying + a parameter. + type: string + string: + description: String_ + is the value of + a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not + be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the + URL to the repository (Git + or Helm) that contains the + application manifests + type: string + targetRevision: + description: TargetRevision + defines the revision of the + source to sync the application + to. In case of Git, this can + be commit, tag, or branch. + If omitted, will equal to + HEAD. In case of Helm, this + is a semver tag for the Chart's + version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when + and how a sync will be performed + properties: + automated: + description: Automated will keep + an application synced to the + target revision + properties: + allowEmpty: + description: 'AllowEmpty allows + apps have zero live resources + (default: false)' + type: boolean + prune: + description: 'Prune specifies + whether to delete resources + from the cluster that are + not found in the sources + anymore as part of automated + sync (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes + whether to revert resources + back to their desired state + upon modification in the + cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata + controls metadata in the given + namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed + sync retry behavior + properties: + backoff: + description: Backoff controls + how to backoff on subsequent + retries of failed syncs + properties: + duration: + description: Duration + is the amount to back + off. Default unit is + seconds, but could also + be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is + a factor to multiply + the base duration after + each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration + is the maximum amount + of time allowed for + the backoff strategy + type: string + type: object + limit: + description: Limit is the + maximum number of attempts + for retrying a failed sync. + If set to 0, no retries + will be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you + to specify whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + values: + additionalProperties: + type: string + description: Values contains key/value pairs + which are passed directly as parameters + to the template + type: object + type: object + git: + description: GitGenerator defines a generator + that scrapes a Git repo to find candidate resources. + properties: + directories: + items: + description: GitDirectoryGeneratorItem defines + a directory to scan for resources. + properties: + exclude: + type: boolean + path: + type: string + required: + - path + type: object + type: array + files: + items: + description: GitFileGeneratorItem defines + a file to scan for resources. + properties: + path: + type: string + required: + - path + type: object + type: array + pathParamPrefix: + type: string + repoURL: + type: string + requeueAfterSeconds: + format: int64 + type: integer + revision: + type: string + template: + description: ApplicationSetTemplate represents + argocd ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta + represents the Argo CD application fields + that may be used for Applications generated + from the ApplicationSet (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the + desired state of an ArgoCD Git Application + properties: + destination: + description: Destination is a reference + to the target Kubernetes server + and namespace + properties: + name: + description: Name is an alternate + way of specifying the target + cluster by its symbolic name + type: string + nameRef: + description: NameRef is a reference + to a Cluster used to set Name + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a + reference to a Cluster used + to set Name + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies + the target namespace for the + application's resources. The + namespace will only be set for + namespace-scoped resources that + have not set a value for .metadata.namespace + type: string + server: + description: Server specifies + the URL of the target cluster + and must be set to the Kubernetes + control plane API + type: string + serverRef: + description: ServerRef is a reference + to an Cluster used to set Server + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector + selects references to Repositories + used to set SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is + a list of resources and their fields + which should be ignored during comparison + items: + description: ResourceIgnoreDifferences + contains resource filter and list + of json paths which should be + ignored during comparison with + live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers + is a list of trusted managers. + Fields mutated by those managers + will take precedence over + the desired state defined + in the SCM and won't be displayed + in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list + of information (URLs, email addresses, + and plain text) that relates to + the application + items: + description: Info is a list of informational + items for this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference + to the project this application + belongs to. The empty string means + that application belongs to the + 'default' project. + type: string + revisionHistoryLimit: + description: 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. This should + only be changed in exceptional circumstances. + Setting to zero will store no history. + This will reduce storage used. Increasing + will increase the space used to + store the history, so we do not + recommend increasing it. Default + is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains + all required information about the + source of an application + properties: + chart: + description: Chart is a Helm chart + name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded from + being used during manifest + generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars is + a list of Jsonnet External + Variables + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is a + list of Jsonnet Top-level + Arguments + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific + options + properties: + fileParameters: + description: FileParameters + are file parameters to the + helm template + items: + description: HelmFileParameter + is a file parameter that's + passed to helm template + during manifest generation + properties: + name: + description: Name is + the name of the Helm + parameter + type: string + path: + description: Path is + the path to the file + containing the values + for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from + failing when valueFiles + do not exist locally by + not appending them to helm + template --values + type: boolean + parameters: + description: Parameters is + a list of Helm parameters + which are passed to the + helm template command upon + manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to interpret + booleans and numbers + as strings + type: boolean + name: + description: Name is + the name of the Helm + parameter + type: string + value: + description: Value is + the value for the + Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is + the Helm release name to + use. If omitted it will + use the application name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is + a list of Helm value files + to use when generating a + template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values to + be passed to helm template, + defined as a map. This takes + precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the + Helm version to use for + templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize + specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to rendered + manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels to + resources for Kustomize + apps + type: boolean + images: + description: Images is a list + of Kustomize image override + specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in the + format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is + a prefix appended to resources + for Kustomize apps + type: string + nameSuffix: + description: NameSuffix is + a suffix appended to resources + for Kustomize apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is a + list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name of + Deployment or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry represents + an entry in the application's + environment + properties: + name: + description: Name is + the name of the variable, + usually expressed + in uppercase + type: string + value: + description: Value is + the value of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config + management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management parameters + properties: + array: + description: Array is + the value of an array + type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name is + the name identifying + a parameter. + type: string + string: + description: String_ + is the value of a + string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not be + used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL + to the repository (Git or Helm) + that contains the application + manifests + type: string + targetRevision: + description: TargetRevision defines + the revision of the source to + sync the application to. In + case of Git, this can be commit, + tag, or branch. If omitted, + will equal to HEAD. In case + of Helm, this is a semver tag + for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference + to the location of the application's + manifests or chart + items: + description: ApplicationSource contains + all required information about + the source of an application + properties: + chart: + description: Chart is a Helm + chart name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds + path/directory specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded + from being used during + manifest generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included + during manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars + is a list of Jsonnet + External Variables + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is + a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm + specific options + properties: + fileParameters: + description: FileParameters + are file parameters to + the helm template + items: + description: HelmFileParameter + is a file parameter + that's passed to helm + template during manifest + generation + properties: + name: + description: Name + is the name of the + Helm parameter + type: string + path: + description: Path + is the path to the + file containing + the values for the + Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template + from failing when valueFiles + do not exist locally by + not appending them to + helm template --values + type: boolean + parameters: + description: Parameters + is a list of Helm parameters + which are passed to the + helm template command + upon manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to + interpret booleans + and numbers as strings + type: boolean + name: + description: Name + is the name of the + Helm parameter + type: string + value: + description: Value + is the value for + the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName + is the Helm release name + to use. If omitted it + will use the application + name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles + is a list of Helm value + files to use when generating + a template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values + to be passed to helm template, + defined as a map. This + takes precedence over + Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is + the Helm version to use + for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds + kustomize specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to + rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels + to resources for Kustomize + apps + type: boolean + images: + description: Images is a + list of Kustomize image + override specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix + is a prefix appended to + resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix + is a suffix appended to + resources for Kustomize + apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is + a list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name + of Deployment or + StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific + options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry + represents an entry + in the application's + environment + properties: + name: + description: Name + is the name of the + variable, usually + expressed in uppercase + type: string + value: + description: Value + is the value of + the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific + config management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management + parameters + properties: + array: + description: Array + is the value of + an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name + is the name identifying + a parameter. + type: string + string: + description: String_ + is the value of + a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not + be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the + URL to the repository (Git + or Helm) that contains the + application manifests + type: string + targetRevision: + description: TargetRevision + defines the revision of the + source to sync the application + to. In case of Git, this can + be commit, tag, or branch. + If omitted, will equal to + HEAD. In case of Helm, this + is a semver tag for the Chart's + version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when + and how a sync will be performed + properties: + automated: + description: Automated will keep + an application synced to the + target revision + properties: + allowEmpty: + description: 'AllowEmpty allows + apps have zero live resources + (default: false)' + type: boolean + prune: + description: 'Prune specifies + whether to delete resources + from the cluster that are + not found in the sources + anymore as part of automated + sync (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes + whether to revert resources + back to their desired state + upon modification in the + cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata + controls metadata in the given + namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed + sync retry behavior + properties: + backoff: + description: Backoff controls + how to backoff on subsequent + retries of failed syncs + properties: + duration: + description: Duration + is the amount to back + off. Default unit is + seconds, but could also + be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is + a factor to multiply + the base duration after + each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration + is the maximum amount + of time allowed for + the backoff strategy + type: string + type: object + limit: + description: Limit is the + maximum number of attempts + for retrying a failed sync. + If set to 0, no retries + will be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you + to specify whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + values: + additionalProperties: + type: string + description: Values contains key/value pairs + which are passed directly as parameters + to the template + type: object + required: + - repoURL + - revision + type: object + list: + description: ListGenerator include items info + properties: + elements: + items: + x-kubernetes-preserve-unknown-fields: true + type: array + elementsYaml: + type: string + template: + description: ApplicationSetTemplate represents + argocd ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta + represents the Argo CD application fields + that may be used for Applications generated + from the ApplicationSet (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the + desired state of an ArgoCD Git Application + properties: + destination: + description: Destination is a reference + to the target Kubernetes server + and namespace + properties: + name: + description: Name is an alternate + way of specifying the target + cluster by its symbolic name + type: string + nameRef: + description: NameRef is a reference + to a Cluster used to set Name + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a + reference to a Cluster used + to set Name + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies + the target namespace for the + application's resources. The + namespace will only be set for + namespace-scoped resources that + have not set a value for .metadata.namespace + type: string + server: + description: Server specifies + the URL of the target cluster + and must be set to the Kubernetes + control plane API + type: string + serverRef: + description: ServerRef is a reference + to an Cluster used to set Server + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector + selects references to Repositories + used to set SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is + a list of resources and their fields + which should be ignored during comparison + items: + description: ResourceIgnoreDifferences + contains resource filter and list + of json paths which should be + ignored during comparison with + live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers + is a list of trusted managers. + Fields mutated by those managers + will take precedence over + the desired state defined + in the SCM and won't be displayed + in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list + of information (URLs, email addresses, + and plain text) that relates to + the application + items: + description: Info is a list of informational + items for this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference + to the project this application + belongs to. The empty string means + that application belongs to the + 'default' project. + type: string + revisionHistoryLimit: + description: 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. This should + only be changed in exceptional circumstances. + Setting to zero will store no history. + This will reduce storage used. Increasing + will increase the space used to + store the history, so we do not + recommend increasing it. Default + is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains + all required information about the + source of an application + properties: + chart: + description: Chart is a Helm chart + name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded from + being used during manifest + generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars is + a list of Jsonnet External + Variables + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is a + list of Jsonnet Top-level + Arguments + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific + options + properties: + fileParameters: + description: FileParameters + are file parameters to the + helm template + items: + description: HelmFileParameter + is a file parameter that's + passed to helm template + during manifest generation + properties: + name: + description: Name is + the name of the Helm + parameter + type: string + path: + description: Path is + the path to the file + containing the values + for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from + failing when valueFiles + do not exist locally by + not appending them to helm + template --values + type: boolean + parameters: + description: Parameters is + a list of Helm parameters + which are passed to the + helm template command upon + manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to interpret + booleans and numbers + as strings + type: boolean + name: + description: Name is + the name of the Helm + parameter + type: string + value: + description: Value is + the value for the + Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is + the Helm release name to + use. If omitted it will + use the application name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is + a list of Helm value files + to use when generating a + template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values to + be passed to helm template, + defined as a map. This takes + precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the + Helm version to use for + templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize + specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to rendered + manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels to + resources for Kustomize + apps + type: boolean + images: + description: Images is a list + of Kustomize image override + specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in the + format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is + a prefix appended to resources + for Kustomize apps + type: string + nameSuffix: + description: NameSuffix is + a suffix appended to resources + for Kustomize apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is a + list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name of + Deployment or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry represents + an entry in the application's + environment + properties: + name: + description: Name is + the name of the variable, + usually expressed + in uppercase + type: string + value: + description: Value is + the value of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config + management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management parameters + properties: + array: + description: Array is + the value of an array + type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name is + the name identifying + a parameter. + type: string + string: + description: String_ + is the value of a + string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not be + used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL + to the repository (Git or Helm) + that contains the application + manifests + type: string + targetRevision: + description: TargetRevision defines + the revision of the source to + sync the application to. In + case of Git, this can be commit, + tag, or branch. If omitted, + will equal to HEAD. In case + of Helm, this is a semver tag + for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference + to the location of the application's + manifests or chart + items: + description: ApplicationSource contains + all required information about + the source of an application + properties: + chart: + description: Chart is a Helm + chart name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds + path/directory specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded + from being used during + manifest generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included + during manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars + is a list of Jsonnet + External Variables + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is + a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm + specific options + properties: + fileParameters: + description: FileParameters + are file parameters to + the helm template + items: + description: HelmFileParameter + is a file parameter + that's passed to helm + template during manifest + generation + properties: + name: + description: Name + is the name of the + Helm parameter + type: string + path: + description: Path + is the path to the + file containing + the values for the + Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template + from failing when valueFiles + do not exist locally by + not appending them to + helm template --values + type: boolean + parameters: + description: Parameters + is a list of Helm parameters + which are passed to the + helm template command + upon manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to + interpret booleans + and numbers as strings + type: boolean + name: + description: Name + is the name of the + Helm parameter + type: string + value: + description: Value + is the value for + the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName + is the Helm release name + to use. If omitted it + will use the application + name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles + is a list of Helm value + files to use when generating + a template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values + to be passed to helm template, + defined as a map. This + takes precedence over + Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is + the Helm version to use + for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds + kustomize specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to + rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels + to resources for Kustomize + apps + type: boolean + images: + description: Images is a + list of Kustomize image + override specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix + is a prefix appended to + resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix + is a suffix appended to + resources for Kustomize + apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is + a list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name + of Deployment or + StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific + options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry + represents an entry + in the application's + environment + properties: + name: + description: Name + is the name of the + variable, usually + expressed in uppercase + type: string + value: + description: Value + is the value of + the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific + config management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management + parameters + properties: + array: + description: Array + is the value of + an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name + is the name identifying + a parameter. + type: string + string: + description: String_ + is the value of + a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not + be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the + URL to the repository (Git + or Helm) that contains the + application manifests + type: string + targetRevision: + description: TargetRevision + defines the revision of the + source to sync the application + to. In case of Git, this can + be commit, tag, or branch. + If omitted, will equal to + HEAD. In case of Helm, this + is a semver tag for the Chart's + version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when + and how a sync will be performed + properties: + automated: + description: Automated will keep + an application synced to the + target revision + properties: + allowEmpty: + description: 'AllowEmpty allows + apps have zero live resources + (default: false)' + type: boolean + prune: + description: 'Prune specifies + whether to delete resources + from the cluster that are + not found in the sources + anymore as part of automated + sync (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes + whether to revert resources + back to their desired state + upon modification in the + cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata + controls metadata in the given + namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed + sync retry behavior + properties: + backoff: + description: Backoff controls + how to backoff on subsequent + retries of failed syncs + properties: + duration: + description: Duration + is the amount to back + off. Default unit is + seconds, but could also + be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is + a factor to multiply + the base duration after + each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration + is the maximum amount + of time allowed for + the backoff strategy + type: string + type: object + limit: + description: Limit is the + maximum number of attempts + for retrying a failed sync. + If set to 0, no retries + will be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you + to specify whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + required: + - elements + type: object + matrix: + description: Matrix should have the form of NestedMatrixGenerator + x-kubernetes-preserve-unknown-fields: true + merge: + description: Merge should have the form of NestedMergeGenerator + x-kubernetes-preserve-unknown-fields: true + plugin: + description: PluginGenerator defines connection + info specific to Plugin. + properties: + configMapRef: + description: PluginConfigMapRef defines a + reference to a ConfigMap containing a plugin. + properties: + name: + description: Name of the ConfigMap + type: string + required: + - name + type: object + input: + description: PluginInput defines the input + to a plugin. + properties: + parameters: + additionalProperties: + x-kubernetes-preserve-unknown-fields: true + description: Parameters contains the information + to pass to the plugin. It is a map. + The keys must be strings, and the values + can be any type. + type: object + type: object + requeueAfterSeconds: + description: RequeueAfterSeconds determines + how long the ApplicationSet controller will + wait before reconciling the ApplicationSet + again. + format: int64 + type: integer + template: + description: ApplicationSetTemplate represents + argocd ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta + represents the Argo CD application fields + that may be used for Applications generated + from the ApplicationSet (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the + desired state of an ArgoCD Git Application + properties: + destination: + description: Destination is a reference + to the target Kubernetes server + and namespace + properties: + name: + description: Name is an alternate + way of specifying the target + cluster by its symbolic name + type: string + nameRef: + description: NameRef is a reference + to a Cluster used to set Name + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a + reference to a Cluster used + to set Name + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies + the target namespace for the + application's resources. The + namespace will only be set for + namespace-scoped resources that + have not set a value for .metadata.namespace + type: string + server: + description: Server specifies + the URL of the target cluster + and must be set to the Kubernetes + control plane API + type: string + serverRef: + description: ServerRef is a reference + to an Cluster used to set Server + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector + selects references to Repositories + used to set SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is + a list of resources and their fields + which should be ignored during comparison + items: + description: ResourceIgnoreDifferences + contains resource filter and list + of json paths which should be + ignored during comparison with + live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers + is a list of trusted managers. + Fields mutated by those managers + will take precedence over + the desired state defined + in the SCM and won't be displayed + in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list + of information (URLs, email addresses, + and plain text) that relates to + the application + items: + description: Info is a list of informational + items for this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference + to the project this application + belongs to. The empty string means + that application belongs to the + 'default' project. + type: string + revisionHistoryLimit: + description: 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. This should + only be changed in exceptional circumstances. + Setting to zero will store no history. + This will reduce storage used. Increasing + will increase the space used to + store the history, so we do not + recommend increasing it. Default + is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains + all required information about the + source of an application + properties: + chart: + description: Chart is a Helm chart + name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded from + being used during manifest + generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars is + a list of Jsonnet External + Variables + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is a + list of Jsonnet Top-level + Arguments + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific + options + properties: + fileParameters: + description: FileParameters + are file parameters to the + helm template + items: + description: HelmFileParameter + is a file parameter that's + passed to helm template + during manifest generation + properties: + name: + description: Name is + the name of the Helm + parameter + type: string + path: + description: Path is + the path to the file + containing the values + for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from + failing when valueFiles + do not exist locally by + not appending them to helm + template --values + type: boolean + parameters: + description: Parameters is + a list of Helm parameters + which are passed to the + helm template command upon + manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to interpret + booleans and numbers + as strings + type: boolean + name: + description: Name is + the name of the Helm + parameter + type: string + value: + description: Value is + the value for the + Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is + the Helm release name to + use. If omitted it will + use the application name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is + a list of Helm value files + to use when generating a + template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values to + be passed to helm template, + defined as a map. This takes + precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the + Helm version to use for + templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize + specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to rendered + manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels to + resources for Kustomize + apps + type: boolean + images: + description: Images is a list + of Kustomize image override + specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in the + format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is + a prefix appended to resources + for Kustomize apps + type: string + nameSuffix: + description: NameSuffix is + a suffix appended to resources + for Kustomize apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is a + list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name of + Deployment or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry represents + an entry in the application's + environment + properties: + name: + description: Name is + the name of the variable, + usually expressed + in uppercase + type: string + value: + description: Value is + the value of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config + management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management parameters + properties: + array: + description: Array is + the value of an array + type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name is + the name identifying + a parameter. + type: string + string: + description: String_ + is the value of a + string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not be + used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL + to the repository (Git or Helm) + that contains the application + manifests + type: string + targetRevision: + description: TargetRevision defines + the revision of the source to + sync the application to. In + case of Git, this can be commit, + tag, or branch. If omitted, + will equal to HEAD. In case + of Helm, this is a semver tag + for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference + to the location of the application's + manifests or chart + items: + description: ApplicationSource contains + all required information about + the source of an application + properties: + chart: + description: Chart is a Helm + chart name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds + path/directory specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded + from being used during + manifest generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included + during manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars + is a list of Jsonnet + External Variables + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is + a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm + specific options + properties: + fileParameters: + description: FileParameters + are file parameters to + the helm template + items: + description: HelmFileParameter + is a file parameter + that's passed to helm + template during manifest + generation + properties: + name: + description: Name + is the name of the + Helm parameter + type: string + path: + description: Path + is the path to the + file containing + the values for the + Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template + from failing when valueFiles + do not exist locally by + not appending them to + helm template --values + type: boolean + parameters: + description: Parameters + is a list of Helm parameters + which are passed to the + helm template command + upon manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to + interpret booleans + and numbers as strings + type: boolean + name: + description: Name + is the name of the + Helm parameter + type: string + value: + description: Value + is the value for + the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName + is the Helm release name + to use. If omitted it + will use the application + name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles + is a list of Helm value + files to use when generating + a template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values + to be passed to helm template, + defined as a map. This + takes precedence over + Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is + the Helm version to use + for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds + kustomize specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to + rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels + to resources for Kustomize + apps + type: boolean + images: + description: Images is a + list of Kustomize image + override specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix + is a prefix appended to + resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix + is a suffix appended to + resources for Kustomize + apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is + a list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name + of Deployment or + StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific + options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry + represents an entry + in the application's + environment + properties: + name: + description: Name + is the name of the + variable, usually + expressed in uppercase + type: string + value: + description: Value + is the value of + the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific + config management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management + parameters + properties: + array: + description: Array + is the value of + an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name + is the name identifying + a parameter. + type: string + string: + description: String_ + is the value of + a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not + be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the + URL to the repository (Git + or Helm) that contains the + application manifests + type: string + targetRevision: + description: TargetRevision + defines the revision of the + source to sync the application + to. In case of Git, this can + be commit, tag, or branch. + If omitted, will equal to + HEAD. In case of Helm, this + is a semver tag for the Chart's + version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when + and how a sync will be performed + properties: + automated: + description: Automated will keep + an application synced to the + target revision + properties: + allowEmpty: + description: 'AllowEmpty allows + apps have zero live resources + (default: false)' + type: boolean + prune: + description: 'Prune specifies + whether to delete resources + from the cluster that are + not found in the sources + anymore as part of automated + sync (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes + whether to revert resources + back to their desired state + upon modification in the + cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata + controls metadata in the given + namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed + sync retry behavior + properties: + backoff: + description: Backoff controls + how to backoff on subsequent + retries of failed syncs + properties: + duration: + description: Duration + is the amount to back + off. Default unit is + seconds, but could also + be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is + a factor to multiply + the base duration after + each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration + is the maximum amount + of time allowed for + the backoff strategy + type: string + type: object + limit: + description: Limit is the + maximum number of attempts + for retrying a failed sync. + If set to 0, no retries + will be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you + to specify whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + values: + additionalProperties: + type: string + description: Values contains key/value pairs + which are passed directly as parameters + to the template. These values will not be + sent as parameters to the plugin. + type: object + required: + - configMapRef + type: object + pullRequest: + description: PullRequestGenerator defines a generator + that scrapes a PullRequest API to find candidate + pull requests. + properties: + azuredevops: + description: Additional provider to use and + config for it. + properties: + api: + description: The Azure DevOps API URL + to talk to. If blank, use https://dev.azure.com/. + type: string + labels: + description: Labels is used to filter + the PRs that you want to target + items: + type: string + type: array + organization: + description: Azure DevOps org to scan. + Required. + type: string + project: + description: Azure DevOps project name + to scan. Required. + type: string + repo: + description: Azure DevOps repo name to + scan. Required. + type: string + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - organization + - project + - repo + type: object + bitbucket: + description: PullRequestGeneratorBitbucket + defines connection info specific to Bitbucket. + properties: + api: + description: The Bitbucket REST API URL + to talk to. If blank, uses https://api.bitbucket.org/2.0. + type: string + basicAuth: + description: Credentials for Basic auth + properties: + passwordRef: + description: Password (or personal + access token) reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + username: + description: Username for Basic auth + type: string + required: + - passwordRef + - username + type: object + bearerToken: + description: Credentials for AppToken + (Bearer auth) + properties: + tokenRef: + description: Password (or personal + access token) reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - tokenRef + type: object + owner: + description: Workspace to scan. Required. + type: string + repo: + description: Repo name to scan. Required. + type: string + required: + - owner + - repo + type: object + bitbucketServer: + description: PullRequestGeneratorBitbucketServer + defines connection info specific to BitbucketServer. + properties: + api: + description: The Bitbucket REST API URL + to talk to e.g. https://bitbucket.org/rest + Required. + type: string + basicAuth: + description: Credentials for Basic auth + properties: + passwordRef: + description: Password (or personal + access token) reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + username: + description: Username for Basic auth + type: string + required: + - passwordRef + - username + type: object + project: + description: Project to scan. Required. + type: string + repo: + description: Repo name to scan. Required. + type: string + required: + - api + - project + - repo + type: object + filters: + description: Filters for which pull requests + should be considered. + items: + description: PullRequestGeneratorFilter + is a single pull request filter. If multiple + filter types are set on a single struct, + they will be AND'd together. All filters + must pass for a pull request to be included. + properties: + branchMatch: + type: string + targetBranchMatch: + type: string + type: object + type: array + gitea: + description: PullRequestGeneratorGitea defines + connection info specific to Gitea. + properties: + api: + description: The Gitea API URL to talk + to. Required + type: string + insecure: + description: 'Allow insecure tls, for + self-signed certificates; default: false.' + type: boolean + owner: + description: Gitea org or user to scan. + Required. + type: string + repo: + description: Gitea repo name to scan. + Required. + type: string + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - api + - owner + - repo + type: object + github: + description: Which provider to use and config + for it. + properties: + api: + description: The GitHub API URL to talk + to. If blank, use https://api.github.com/. + type: string + appSecretName: + description: AppSecretName is a reference + to a GitHub App repo-creds secret with + permission to access pull requests. + type: string + labels: + description: Labels is used to filter + the PRs that you want to target + items: + type: string + type: array + owner: + description: GitHub org or user to scan. + Required. + type: string + repo: + description: GitHub repo name to scan. + Required. + type: string + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - owner + - repo + type: object + gitlab: + description: PullRequestGeneratorGitLab defines + connection info specific to GitLab. + properties: + api: + description: The GitLab API URL to talk + to. If blank, uses https://gitlab.com/. + type: string + insecure: + description: 'Skips validating the SCM + provider''s TLS certificate - useful + for self-signed certificates.; default: + false' + type: boolean + labels: + description: Labels is used to filter + the MRs that you want to target + items: + type: string + type: array + project: + description: GitLab project to scan. Required. + type: string + pullRequestState: + description: 'PullRequestState is an additional + MRs filter to get only those with a + certain state. Default: "" (all states)' + type: string + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - project + type: object + requeueAfterSeconds: + description: Standard parameters. + format: int64 + type: integer + template: + description: ApplicationSetTemplate represents + argocd ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta + represents the Argo CD application fields + that may be used for Applications generated + from the ApplicationSet (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the + desired state of an ArgoCD Git Application + properties: + destination: + description: Destination is a reference + to the target Kubernetes server + and namespace + properties: + name: + description: Name is an alternate + way of specifying the target + cluster by its symbolic name + type: string + nameRef: + description: NameRef is a reference + to a Cluster used to set Name + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a + reference to a Cluster used + to set Name + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies + the target namespace for the + application's resources. The + namespace will only be set for + namespace-scoped resources that + have not set a value for .metadata.namespace + type: string + server: + description: Server specifies + the URL of the target cluster + and must be set to the Kubernetes + control plane API + type: string + serverRef: + description: ServerRef is a reference + to an Cluster used to set Server + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector + selects references to Repositories + used to set SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is + a list of resources and their fields + which should be ignored during comparison + items: + description: ResourceIgnoreDifferences + contains resource filter and list + of json paths which should be + ignored during comparison with + live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers + is a list of trusted managers. + Fields mutated by those managers + will take precedence over + the desired state defined + in the SCM and won't be displayed + in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list + of information (URLs, email addresses, + and plain text) that relates to + the application + items: + description: Info is a list of informational + items for this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference + to the project this application + belongs to. The empty string means + that application belongs to the + 'default' project. + type: string + revisionHistoryLimit: + description: 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. This should + only be changed in exceptional circumstances. + Setting to zero will store no history. + This will reduce storage used. Increasing + will increase the space used to + store the history, so we do not + recommend increasing it. Default + is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains + all required information about the + source of an application + properties: + chart: + description: Chart is a Helm chart + name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded from + being used during manifest + generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars is + a list of Jsonnet External + Variables + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is a + list of Jsonnet Top-level + Arguments + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific + options + properties: + fileParameters: + description: FileParameters + are file parameters to the + helm template + items: + description: HelmFileParameter + is a file parameter that's + passed to helm template + during manifest generation + properties: + name: + description: Name is + the name of the Helm + parameter + type: string + path: + description: Path is + the path to the file + containing the values + for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from + failing when valueFiles + do not exist locally by + not appending them to helm + template --values + type: boolean + parameters: + description: Parameters is + a list of Helm parameters + which are passed to the + helm template command upon + manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to interpret + booleans and numbers + as strings + type: boolean + name: + description: Name is + the name of the Helm + parameter + type: string + value: + description: Value is + the value for the + Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is + the Helm release name to + use. If omitted it will + use the application name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is + a list of Helm value files + to use when generating a + template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values to + be passed to helm template, + defined as a map. This takes + precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the + Helm version to use for + templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize + specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to rendered + manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels to + resources for Kustomize + apps + type: boolean + images: + description: Images is a list + of Kustomize image override + specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in the + format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is + a prefix appended to resources + for Kustomize apps + type: string + nameSuffix: + description: NameSuffix is + a suffix appended to resources + for Kustomize apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is a + list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name of + Deployment or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry represents + an entry in the application's + environment + properties: + name: + description: Name is + the name of the variable, + usually expressed + in uppercase + type: string + value: + description: Value is + the value of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config + management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management parameters + properties: + array: + description: Array is + the value of an array + type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name is + the name identifying + a parameter. + type: string + string: + description: String_ + is the value of a + string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not be + used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL + to the repository (Git or Helm) + that contains the application + manifests + type: string + targetRevision: + description: TargetRevision defines + the revision of the source to + sync the application to. In + case of Git, this can be commit, + tag, or branch. If omitted, + will equal to HEAD. In case + of Helm, this is a semver tag + for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference + to the location of the application's + manifests or chart + items: + description: ApplicationSource contains + all required information about + the source of an application + properties: + chart: + description: Chart is a Helm + chart name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds + path/directory specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded + from being used during + manifest generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included + during manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars + is a list of Jsonnet + External Variables + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is + a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm + specific options + properties: + fileParameters: + description: FileParameters + are file parameters to + the helm template + items: + description: HelmFileParameter + is a file parameter + that's passed to helm + template during manifest + generation + properties: + name: + description: Name + is the name of the + Helm parameter + type: string + path: + description: Path + is the path to the + file containing + the values for the + Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template + from failing when valueFiles + do not exist locally by + not appending them to + helm template --values + type: boolean + parameters: + description: Parameters + is a list of Helm parameters + which are passed to the + helm template command + upon manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to + interpret booleans + and numbers as strings + type: boolean + name: + description: Name + is the name of the + Helm parameter + type: string + value: + description: Value + is the value for + the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName + is the Helm release name + to use. If omitted it + will use the application + name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles + is a list of Helm value + files to use when generating + a template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values + to be passed to helm template, + defined as a map. This + takes precedence over + Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is + the Helm version to use + for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds + kustomize specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to + rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels + to resources for Kustomize + apps + type: boolean + images: + description: Images is a + list of Kustomize image + override specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix + is a prefix appended to + resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix + is a suffix appended to + resources for Kustomize + apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is + a list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name + of Deployment or + StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific + options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry + represents an entry + in the application's + environment + properties: + name: + description: Name + is the name of the + variable, usually + expressed in uppercase + type: string + value: + description: Value + is the value of + the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific + config management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management + parameters + properties: + array: + description: Array + is the value of + an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name + is the name identifying + a parameter. + type: string + string: + description: String_ + is the value of + a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not + be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the + URL to the repository (Git + or Helm) that contains the + application manifests + type: string + targetRevision: + description: TargetRevision + defines the revision of the + source to sync the application + to. In case of Git, this can + be commit, tag, or branch. + If omitted, will equal to + HEAD. In case of Helm, this + is a semver tag for the Chart's + version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when + and how a sync will be performed + properties: + automated: + description: Automated will keep + an application synced to the + target revision + properties: + allowEmpty: + description: 'AllowEmpty allows + apps have zero live resources + (default: false)' + type: boolean + prune: + description: 'Prune specifies + whether to delete resources + from the cluster that are + not found in the sources + anymore as part of automated + sync (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes + whether to revert resources + back to their desired state + upon modification in the + cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata + controls metadata in the given + namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed + sync retry behavior + properties: + backoff: + description: Backoff controls + how to backoff on subsequent + retries of failed syncs + properties: + duration: + description: Duration + is the amount to back + off. Default unit is + seconds, but could also + be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is + a factor to multiply + the base duration after + each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration + is the maximum amount + of time allowed for + the backoff strategy + type: string + type: object + limit: + description: Limit is the + maximum number of attempts + for retrying a failed sync. + If set to 0, no retries + will be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you + to specify whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + type: object + scmProvider: + description: SCMProviderGenerator defines a generator + that scrapes a SCMaaS API to find candidate + repos. + properties: + awsCodeCommit: + description: SCMProviderGeneratorAWSCodeCommit + defines connection info specific to AWS + CodeCommit. + properties: + allBranches: + description: Scan all branches instead + of just the default branch. + type: boolean + region: + description: Region provides the AWS region + to discover repos. if not provided, + AppSet controller will infer the current + region from environment. + type: string + role: + description: Role provides the AWS IAM + role to assume, for cross-account repo + discovery if not provided, AppSet controller + will use its pod/node identity to discover. + type: string + tagFilters: + description: TagFilters provides the tag + filter(s) for repo discovery + items: + description: TagFilter defines tags + to filter from + properties: + key: + type: string + value: + type: string + required: + - key + type: object + type: array + type: object + azureDevOps: + description: SCMProviderGeneratorAzureDevOps + defines connection info specific to Azure + DevOps. + properties: + accessTokenRef: + description: The Personal Access Token + (PAT) to use when connecting. Required. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + allBranches: + description: Scan all branches instead + of just the default branch. + type: boolean + api: + description: The URL to Azure DevOps. + If blank, use https://dev.azure.com. + type: string + organization: + description: Azure Devops organization. + Required. E.g. "my-organization". + type: string + teamProject: + description: Azure Devops team project. + Required. E.g. "my-team". + type: string + required: + - accessTokenRef + - organization + - teamProject + type: object + bitbucket: + description: SCMProviderGeneratorBitbucket + defines connection info specific to Bitbucket + Cloud (API version 2). + properties: + allBranches: + description: Scan all branches instead + of just the main branch. + type: boolean + appPasswordRef: + description: 'The app password to use + for the user. Required. See: https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/' + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + owner: + description: Bitbucket workspace to scan. + Required. + type: string + user: + description: Bitbucket user to use when + authenticating. Should have a "member" + role to be able to read all repositories + and branches. Required + type: string + required: + - appPasswordRef + - owner + - user + type: object + bitbucketServer: + description: SCMProviderGeneratorBitbucketServer + defines connection info specific to Bitbucket + Server. + properties: + allBranches: + description: Scan all branches instead + of just the default branch. + type: boolean + api: + description: The Bitbucket Server REST + API URL to talk to. Required. + type: string + basicAuth: + description: Credentials for Basic auth + properties: + passwordRef: + description: Password (or personal + access token) reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + username: + description: Username for Basic auth + type: string + required: + - passwordRef + - username + type: object + project: + description: Project to scan. Required. + type: string + required: + - api + - project + type: object + cloneProtocol: + description: Which protocol to use for the + SCM URL. Default is provider-specific but + ssh if possible. Not all providers necessarily + support all protocols. + type: string + filters: + description: Filters for which repos should + be considered. + items: + description: SCMProviderGeneratorFilter + is a single repository filter. If multiple + filter types are set on a single struct, + they will be AND'd together. All filters + must pass for a repo to be included. + properties: + branchMatch: + description: A regex which must match + the branch name. + type: string + labelMatch: + description: A regex which must match + at least one label. + type: string + pathsDoNotExist: + description: An array of paths, all + of which must not exist. + items: + type: string + type: array + pathsExist: + description: An array of paths, all + of which must exist. + items: + type: string + type: array + repositoryMatch: + description: A regex for repo names. + type: string + type: object + type: array + gitea: + description: SCMProviderGeneratorGitea defines + a connection info specific to Gitea. + properties: + allBranches: + description: Scan all branches instead + of just the default branch. + type: boolean + api: + description: The Gitea URL to talk to. + For example https://gitea.mydomain.com/. + type: string + insecure: + description: 'Allow self-signed TLS / + Certificates; default: false' + type: boolean + owner: + description: Gitea organization or user + to scan. Required. + type: string + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - api + - owner + type: object + github: + description: Which provider to use and config + for it. + properties: + allBranches: + description: Scan all branches instead + of just the default branch. + type: boolean + api: + description: The GitHub API URL to talk + to. If blank, use https://api.github.com/. + type: string + appSecretName: + description: AppSecretName is a reference + to a GitHub App repo-creds secret. + type: string + organization: + description: GitHub org to scan. Required. + type: string + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - organization + type: object + gitlab: + description: SCMProviderGeneratorGitlab defines + connection info specific to Gitlab. + properties: + allBranches: + description: Scan all branches instead + of just the default branch. + type: boolean + api: + description: The Gitlab API URL to talk + to. + type: string + group: + description: Gitlab group to scan. Required. You + can use either the project id (recommended) + or the full namespaced path. + type: string + includeSubgroups: + description: Recurse through subgroups + (true) or scan only the base group (false). Defaults + to "false" + type: boolean + insecure: + description: 'Skips validating the SCM + provider''s TLS certificate - useful + for self-signed certificates.; default: + false' + type: boolean + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - group + type: object + requeueAfterSeconds: + description: Standard parameters. + format: int64 + type: integer + template: + description: ApplicationSetTemplate represents + argocd ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta + represents the Argo CD application fields + that may be used for Applications generated + from the ApplicationSet (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the + desired state of an ArgoCD Git Application + properties: + destination: + description: Destination is a reference + to the target Kubernetes server + and namespace + properties: + name: + description: Name is an alternate + way of specifying the target + cluster by its symbolic name + type: string + nameRef: + description: NameRef is a reference + to a Cluster used to set Name + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a + reference to a Cluster used + to set Name + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies + the target namespace for the + application's resources. The + namespace will only be set for + namespace-scoped resources that + have not set a value for .metadata.namespace + type: string + server: + description: Server specifies + the URL of the target cluster + and must be set to the Kubernetes + control plane API + type: string + serverRef: + description: ServerRef is a reference + to an Cluster used to set Server + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector + selects references to Repositories + used to set SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is + a list of resources and their fields + which should be ignored during comparison + items: + description: ResourceIgnoreDifferences + contains resource filter and list + of json paths which should be + ignored during comparison with + live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers + is a list of trusted managers. + Fields mutated by those managers + will take precedence over + the desired state defined + in the SCM and won't be displayed + in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list + of information (URLs, email addresses, + and plain text) that relates to + the application + items: + description: Info is a list of informational + items for this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference + to the project this application + belongs to. The empty string means + that application belongs to the + 'default' project. + type: string + revisionHistoryLimit: + description: 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. This should + only be changed in exceptional circumstances. + Setting to zero will store no history. + This will reduce storage used. Increasing + will increase the space used to + store the history, so we do not + recommend increasing it. Default + is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains + all required information about the + source of an application + properties: + chart: + description: Chart is a Helm chart + name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded from + being used during manifest + generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars is + a list of Jsonnet External + Variables + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is a + list of Jsonnet Top-level + Arguments + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific + options + properties: + fileParameters: + description: FileParameters + are file parameters to the + helm template + items: + description: HelmFileParameter + is a file parameter that's + passed to helm template + during manifest generation + properties: + name: + description: Name is + the name of the Helm + parameter + type: string + path: + description: Path is + the path to the file + containing the values + for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from + failing when valueFiles + do not exist locally by + not appending them to helm + template --values + type: boolean + parameters: + description: Parameters is + a list of Helm parameters + which are passed to the + helm template command upon + manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to interpret + booleans and numbers + as strings + type: boolean + name: + description: Name is + the name of the Helm + parameter + type: string + value: + description: Value is + the value for the + Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is + the Helm release name to + use. If omitted it will + use the application name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is + a list of Helm value files + to use when generating a + template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values to + be passed to helm template, + defined as a map. This takes + precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the + Helm version to use for + templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize + specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to rendered + manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels to + resources for Kustomize + apps + type: boolean + images: + description: Images is a list + of Kustomize image override + specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in the + format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is + a prefix appended to resources + for Kustomize apps + type: string + nameSuffix: + description: NameSuffix is + a suffix appended to resources + for Kustomize apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is a + list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name of + Deployment or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry represents + an entry in the application's + environment + properties: + name: + description: Name is + the name of the variable, + usually expressed + in uppercase + type: string + value: + description: Value is + the value of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config + management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management parameters + properties: + array: + description: Array is + the value of an array + type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name is + the name identifying + a parameter. + type: string + string: + description: String_ + is the value of a + string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not be + used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL + to the repository (Git or Helm) + that contains the application + manifests + type: string + targetRevision: + description: TargetRevision defines + the revision of the source to + sync the application to. In + case of Git, this can be commit, + tag, or branch. If omitted, + will equal to HEAD. In case + of Helm, this is a semver tag + for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference + to the location of the application's + manifests or chart + items: + description: ApplicationSource contains + all required information about + the source of an application + properties: + chart: + description: Chart is a Helm + chart name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds + path/directory specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded + from being used during + manifest generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included + during manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars + is a list of Jsonnet + External Variables + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is + a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm + specific options + properties: + fileParameters: + description: FileParameters + are file parameters to + the helm template + items: + description: HelmFileParameter + is a file parameter + that's passed to helm + template during manifest + generation + properties: + name: + description: Name + is the name of the + Helm parameter + type: string + path: + description: Path + is the path to the + file containing + the values for the + Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template + from failing when valueFiles + do not exist locally by + not appending them to + helm template --values + type: boolean + parameters: + description: Parameters + is a list of Helm parameters + which are passed to the + helm template command + upon manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to + interpret booleans + and numbers as strings + type: boolean + name: + description: Name + is the name of the + Helm parameter + type: string + value: + description: Value + is the value for + the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName + is the Helm release name + to use. If omitted it + will use the application + name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles + is a list of Helm value + files to use when generating + a template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values + to be passed to helm template, + defined as a map. This + takes precedence over + Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is + the Helm version to use + for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds + kustomize specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to + rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels + to resources for Kustomize + apps + type: boolean + images: + description: Images is a + list of Kustomize image + override specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix + is a prefix appended to + resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix + is a suffix appended to + resources for Kustomize + apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is + a list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name + of Deployment or + StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific + options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry + represents an entry + in the application's + environment + properties: + name: + description: Name + is the name of the + variable, usually + expressed in uppercase + type: string + value: + description: Value + is the value of + the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific + config management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management + parameters + properties: + array: + description: Array + is the value of + an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name + is the name identifying + a parameter. + type: string + string: + description: String_ + is the value of + a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not + be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the + URL to the repository (Git + or Helm) that contains the + application manifests + type: string + targetRevision: + description: TargetRevision + defines the revision of the + source to sync the application + to. In case of Git, this can + be commit, tag, or branch. + If omitted, will equal to + HEAD. In case of Helm, this + is a semver tag for the Chart's + version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when + and how a sync will be performed + properties: + automated: + description: Automated will keep + an application synced to the + target revision + properties: + allowEmpty: + description: 'AllowEmpty allows + apps have zero live resources + (default: false)' + type: boolean + prune: + description: 'Prune specifies + whether to delete resources + from the cluster that are + not found in the sources + anymore as part of automated + sync (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes + whether to revert resources + back to their desired state + upon modification in the + cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata + controls metadata in the given + namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed + sync retry behavior + properties: + backoff: + description: Backoff controls + how to backoff on subsequent + retries of failed syncs + properties: + duration: + description: Duration + is the amount to back + off. Default unit is + seconds, but could also + be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is + a factor to multiply + the base duration after + each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration + is the maximum amount + of time allowed for + the backoff strategy + type: string + type: object + limit: + description: Limit is the + maximum number of attempts + for retrying a failed sync. + If set to 0, no retries + will be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you + to specify whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + values: + additionalProperties: + type: string + description: Values contains key/value pairs + which are passed directly as parameters + to the template + type: object + type: object + selector: + description: Selector allows to post-filter all + generator. + properties: + matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + type: object + type: array + template: + description: ApplicationSetTemplate represents argocd + ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta represents + the Argo CD application fields that may be used + for Applications generated from the ApplicationSet + (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the desired + state of an ArgoCD Git Application + properties: + destination: + description: Destination is a reference to the + target Kubernetes server and namespace + properties: + name: + description: Name is an alternate way of + specifying the target cluster by its symbolic + name + type: string + nameRef: + description: NameRef is a reference to a + Cluster used to set Name + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a reference + to a Cluster used to set Name + properties: + matchControllerRef: + description: MatchControllerRef ensures + an object with the same controller + reference as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an + object with matching labels is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies the target + namespace for the application's resources. + The namespace will only be set for namespace-scoped + resources that have not set a value for + .metadata.namespace + type: string + server: + description: Server specifies the URL of + the target cluster and must be set to + the Kubernetes control plane API + type: string + serverRef: + description: ServerRef is a reference to + an Cluster used to set Server + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector selects + references to Repositories used to set + SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef ensures + an object with the same controller + reference as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an + object with matching labels is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is a list of + resources and their fields which should be + ignored during comparison + items: + description: ResourceIgnoreDifferences contains + resource filter and list of json paths which + should be ignored during comparison with + live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers is + a list of trusted managers. Fields mutated + by those managers will take precedence + over the desired state defined in the + SCM and won't be displayed in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list of information + (URLs, email addresses, and plain text) that + relates to the application + items: + description: Info is a list of informational + items for this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference to the project + this application belongs to. The empty string + means that application belongs to the 'default' + project. + type: string + revisionHistoryLimit: + description: 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. This should only be changed in exceptional + circumstances. Setting to zero will store + no history. This will reduce storage used. + Increasing will increase the space used to + store the history, so we do not recommend + increasing it. Default is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains all + required information about the source of an + application + properties: + chart: + description: Chart is a Helm chart name, + and must be specified for applications + sourced from a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains a glob + pattern to match paths against that + should be explicitly excluded from + being used during manifest generation + type: string + include: + description: Include contains a glob + pattern to match paths against that + should be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds options specific + to Jsonnet + properties: + extVars: + description: ExtVars is a list of + Jsonnet External Variables + items: + description: JsonnetVar represents + a variable to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library + search dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar represents + a variable to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies whether + to scan a directory recursively for + manifests + type: boolean + type: object + helm: + description: Helm holds helm specific options + properties: + fileParameters: + description: FileParameters are file + parameters to the helm template + items: + description: HelmFileParameter is + a file parameter that's passed to + helm template during manifest generation + properties: + name: + description: Name is the name + of the Helm parameter + type: string + path: + description: Path is the path + to the file containing the values + for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from failing + when valueFiles do not exist locally + by not appending them to helm template + --values + type: boolean + parameters: + description: Parameters is a list of + Helm parameters which are passed to + the helm template command upon manifest + generation + items: + description: HelmParameter is a parameter + that's passed to helm template during + manifest generation + properties: + forceString: + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings + type: boolean + name: + description: Name is the name + of the Helm parameter + type: string + value: + description: Value is the value + for the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials pass credentials + to all domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is the Helm + release name to use. If omitted it + will use the application name + type: string + skipCrds: + description: SkipCrds skips custom resource + definition installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is a list of + Helm value files to use when generating + a template + items: + type: string + type: array + values: + description: Values specifies Helm values + to be passed to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject specifies + Helm values to be passed to helm template, + defined as a map. This takes precedence + over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the Helm version + to use for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize specific + options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations is a + list of additional annotations to + add to rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply env variables + substitution for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels is a list + of additional labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force applying + common annotations to resources for + Kustomize apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels specifies + whether to force applying common labels + to resources for Kustomize apps + type: boolean + images: + description: Images is a list of Kustomize + image override specifications + items: + description: KustomizeImage represents + a Kustomize image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix + appended to resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix is a suffix + appended to resources for Kustomize + apps + type: string + namespace: + description: Namespace sets the namespace + that Kustomize adds to all resources + type: string + replicas: + description: Replicas is a list of Kustomize + Replicas override specifications + items: + description: KustomizeReplica override + specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number of replicas + x-kubernetes-int-or-string: true + name: + description: Name of Deployment + or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls which + version of Kustomize to use for rendering + manifests + type: string + type: object + path: + description: Path is a directory path within + the Git repository, and is only valid + for applications sourced from Git. + type: string + plugin: + description: Plugin holds config management + plugin specific options + properties: + env: + description: Env holds options specific + to config management plugins + items: + description: EnvEntry represents an + entry in the application's environment + properties: + name: + description: Name is the name + of the variable, usually expressed + in uppercase + type: string + value: + description: Value is the value + of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config management + parameters + items: + description: ApplicationSourcePluginParameter + holds options specific to config + management parameters + properties: + array: + description: Array is the value + of an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is the value + of a map type parameter. + type: object + name: + description: Name is the name + identifying a parameter. + type: string + string: + description: String_ is the value + of a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference to another + source within sources field. This field + will not be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL to the repository + (Git or Helm) that contains the application + manifests + type: string + targetRevision: + description: TargetRevision defines the + revision of the source to sync the application + to. In case of Git, this can be commit, + tag, or branch. If omitted, will equal + to HEAD. In case of Helm, this is a semver + tag for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference to the location + of the application's manifests or chart + items: + description: ApplicationSource contains all + required information about the source of + an application + properties: + chart: + description: Chart is a Helm chart name, + and must be specified for applications + sourced from a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains a glob + pattern to match paths against that + should be explicitly excluded from + being used during manifest generation + type: string + include: + description: Include contains a glob + pattern to match paths against that + should be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds options + specific to Jsonnet + properties: + extVars: + description: ExtVars is a list + of Jsonnet External Variables + items: + description: JsonnetVar represents + a variable to be passed to + jsonnet during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library + search dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of + Jsonnet Top-level Arguments + items: + description: JsonnetVar represents + a variable to be passed to + jsonnet during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies whether + to scan a directory recursively + for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific + options + properties: + fileParameters: + description: FileParameters are file + parameters to the helm template + items: + description: HelmFileParameter is + a file parameter that's passed + to helm template during manifest + generation + properties: + name: + description: Name is the name + of the Helm parameter + type: string + path: + description: Path is the path + to the file containing the + values for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from failing + when valueFiles do not exist locally + by not appending them to helm template + --values + type: boolean + parameters: + description: Parameters is a list + of Helm parameters which are passed + to the helm template command upon + manifest generation + items: + description: HelmParameter is a + parameter that's passed to helm + template during manifest generation + properties: + forceString: + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings + type: boolean + name: + description: Name is the name + of the Helm parameter + type: string + value: + description: Value is the value + for the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials pass + credentials to all domains (Helm's + --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is the Helm + release name to use. If omitted + it will use the application name + type: string + skipCrds: + description: SkipCrds skips custom + resource definition installation + step (Helm's --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is a list + of Helm value files to use when + generating a template + items: + type: string + type: array + values: + description: Values specifies Helm + values to be passed to helm template, + typically defined as a block + type: string + valuesObject: + description: ValuesObject specifies + Helm values to be passed to helm + template, defined as a map. This + takes precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the Helm version + to use for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize + specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations is + a list of additional annotations + to add to rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply env variables + substitution for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels is a list + of additional labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force applying + common annotations to resources + for Kustomize apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels specifies + whether to force applying common + labels to resources for Kustomize + apps + type: boolean + images: + description: Images is a list of Kustomize + image override specifications + items: + description: KustomizeImage represents + a Kustomize image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix + appended to resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix is a suffix + appended to resources for Kustomize + apps + type: string + namespace: + description: Namespace sets the namespace + that Kustomize adds to all resources + type: string + replicas: + description: Replicas is a list of + Kustomize Replicas override specifications + items: + description: KustomizeReplica override + specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number of replicas + x-kubernetes-int-or-string: true + name: + description: Name of Deployment + or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls which + version of Kustomize to use for + rendering manifests + type: string + type: object + path: + description: Path is a directory path + within the Git repository, and is only + valid for applications sourced from + Git. + type: string + plugin: + description: Plugin holds config management + plugin specific options + properties: + env: + description: Env holds options specific + to config management plugins + items: + description: EnvEntry represents + an entry in the application's + environment + properties: + name: + description: Name is the name + of the variable, usually expressed + in uppercase + type: string + value: + description: Value is the value + of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config management + parameters + items: + description: ApplicationSourcePluginParameter + holds options specific to config + management parameters + properties: + array: + description: Array is the value + of an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is the value + of a map type parameter. + type: object + name: + description: Name is the name + identifying a parameter. + type: string + string: + description: String_ is the + value of a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference to another + source within sources field. This field + will not be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL to the + repository (Git or Helm) that contains + the application manifests + type: string + targetRevision: + description: TargetRevision defines the + revision of the source to sync the application + to. In case of Git, this can be commit, + tag, or branch. If omitted, will equal + to HEAD. In case of Helm, this is a + semver tag for the Chart's version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when and how + a sync will be performed + properties: + automated: + description: Automated will keep an application + synced to the target revision + properties: + allowEmpty: + description: 'AllowEmpty allows apps + have zero live resources (default: + false)' + type: boolean + prune: + description: 'Prune specifies whether + to delete resources from the cluster + that are not found in the sources + anymore as part of automated sync + (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes whether + to revert resources back to their + desired state upon modification in + the cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata controls + metadata in the given namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed sync + retry behavior + properties: + backoff: + description: Backoff controls how to + backoff on subsequent retries of failed + syncs + properties: + duration: + description: Duration is the amount + to back off. Default unit is seconds, + but could also be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is a factor + to multiply the base duration + after each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration is the + maximum amount of time allowed + for the backoff strategy + type: string + type: object + limit: + description: Limit is the maximum number + of attempts for retrying a failed + sync. If set to 0, no retries will + be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you to specify + whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + required: + - generators + type: object + merge: + description: "MergeGenerator merges the output of two or + more generators. Where the values for all specified merge + keys are equal between two sets of generated parameters, + the parameter sets will be merged with the parameters + from the latter generator taking precedence. Parameter + sets with merge keys not present in the base generator's + params will be ignored. For example, if the first generator + produced [{a: '1', b: '2'}, {c: '1', d: '1'}] and the + second generator produced [{'a': 'override'}], the united + parameters for merge keys = ['a'] would be [{a: 'override', + b: '1'}, {c: '1', d: '1'}]. \n MergeGenerator supports + template overriding. If a MergeGenerator is one of multiple + top-level generators, its template will be merged with + the top-level generator before the parameters are applied." + properties: + generators: + items: + description: ApplicationSetNestedGenerator represents + a generator nested within a combination-type generator + (MatrixGenerator or MergeGenerator). + properties: + clusterDecisionResource: + description: DuckTypeGenerator defines a generator + to match against clusters registered with ArgoCD. + properties: + configMapRef: + description: ConfigMapRef is a ConfigMap with + the duck type definitions needed to retrieve + the data this includes apiVersion(group/version), + kind, matchKey and validation settings Name + is the resource name of the kind, group + and version, defined in the ConfigMapRef + RequeueAfterSeconds is how long before the + duckType will be rechecked for a change + type: string + labelSelector: + description: A label selector is a label query + over a set of resources. The result of matchLabels + and matchExpressions are ANDed. An empty + label selector matches all objects. A null + label selector matches no objects. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + name: + type: string + requeueAfterSeconds: + format: int64 + type: integer + template: + description: ApplicationSetTemplate represents + argocd ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta + represents the Argo CD application fields + that may be used for Applications generated + from the ApplicationSet (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the + desired state of an ArgoCD Git Application + properties: + destination: + description: Destination is a reference + to the target Kubernetes server + and namespace + properties: + name: + description: Name is an alternate + way of specifying the target + cluster by its symbolic name + type: string + nameRef: + description: NameRef is a reference + to a Cluster used to set Name + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a + reference to a Cluster used + to set Name + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies + the target namespace for the + application's resources. The + namespace will only be set for + namespace-scoped resources that + have not set a value for .metadata.namespace + type: string + server: + description: Server specifies + the URL of the target cluster + and must be set to the Kubernetes + control plane API + type: string + serverRef: + description: ServerRef is a reference + to an Cluster used to set Server + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector + selects references to Repositories + used to set SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is + a list of resources and their fields + which should be ignored during comparison + items: + description: ResourceIgnoreDifferences + contains resource filter and list + of json paths which should be + ignored during comparison with + live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers + is a list of trusted managers. + Fields mutated by those managers + will take precedence over + the desired state defined + in the SCM and won't be displayed + in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list + of information (URLs, email addresses, + and plain text) that relates to + the application + items: + description: Info is a list of informational + items for this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference + to the project this application + belongs to. The empty string means + that application belongs to the + 'default' project. + type: string + revisionHistoryLimit: + description: 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. This should + only be changed in exceptional circumstances. + Setting to zero will store no history. + This will reduce storage used. Increasing + will increase the space used to + store the history, so we do not + recommend increasing it. Default + is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains + all required information about the + source of an application + properties: + chart: + description: Chart is a Helm chart + name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded from + being used during manifest + generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars is + a list of Jsonnet External + Variables + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is a + list of Jsonnet Top-level + Arguments + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific + options + properties: + fileParameters: + description: FileParameters + are file parameters to the + helm template + items: + description: HelmFileParameter + is a file parameter that's + passed to helm template + during manifest generation + properties: + name: + description: Name is + the name of the Helm + parameter + type: string + path: + description: Path is + the path to the file + containing the values + for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from + failing when valueFiles + do not exist locally by + not appending them to helm + template --values + type: boolean + parameters: + description: Parameters is + a list of Helm parameters + which are passed to the + helm template command upon + manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to interpret + booleans and numbers + as strings + type: boolean + name: + description: Name is + the name of the Helm + parameter + type: string + value: + description: Value is + the value for the + Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is + the Helm release name to + use. If omitted it will + use the application name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is + a list of Helm value files + to use when generating a + template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values to + be passed to helm template, + defined as a map. This takes + precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the + Helm version to use for + templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize + specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to rendered + manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels to + resources for Kustomize + apps + type: boolean + images: + description: Images is a list + of Kustomize image override + specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in the + format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is + a prefix appended to resources + for Kustomize apps + type: string + nameSuffix: + description: NameSuffix is + a suffix appended to resources + for Kustomize apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is a + list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name of + Deployment or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry represents + an entry in the application's + environment + properties: + name: + description: Name is + the name of the variable, + usually expressed + in uppercase + type: string + value: + description: Value is + the value of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config + management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management parameters + properties: + array: + description: Array is + the value of an array + type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name is + the name identifying + a parameter. + type: string + string: + description: String_ + is the value of a + string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not be + used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL + to the repository (Git or Helm) + that contains the application + manifests + type: string + targetRevision: + description: TargetRevision defines + the revision of the source to + sync the application to. In + case of Git, this can be commit, + tag, or branch. If omitted, + will equal to HEAD. In case + of Helm, this is a semver tag + for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference + to the location of the application's + manifests or chart + items: + description: ApplicationSource contains + all required information about + the source of an application + properties: + chart: + description: Chart is a Helm + chart name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds + path/directory specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded + from being used during + manifest generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included + during manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars + is a list of Jsonnet + External Variables + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is + a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm + specific options + properties: + fileParameters: + description: FileParameters + are file parameters to + the helm template + items: + description: HelmFileParameter + is a file parameter + that's passed to helm + template during manifest + generation + properties: + name: + description: Name + is the name of the + Helm parameter + type: string + path: + description: Path + is the path to the + file containing + the values for the + Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template + from failing when valueFiles + do not exist locally by + not appending them to + helm template --values + type: boolean + parameters: + description: Parameters + is a list of Helm parameters + which are passed to the + helm template command + upon manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to + interpret booleans + and numbers as strings + type: boolean + name: + description: Name + is the name of the + Helm parameter + type: string + value: + description: Value + is the value for + the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName + is the Helm release name + to use. If omitted it + will use the application + name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles + is a list of Helm value + files to use when generating + a template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values + to be passed to helm template, + defined as a map. This + takes precedence over + Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is + the Helm version to use + for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds + kustomize specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to + rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels + to resources for Kustomize + apps + type: boolean + images: + description: Images is a + list of Kustomize image + override specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix + is a prefix appended to + resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix + is a suffix appended to + resources for Kustomize + apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is + a list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name + of Deployment or + StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific + options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry + represents an entry + in the application's + environment + properties: + name: + description: Name + is the name of the + variable, usually + expressed in uppercase + type: string + value: + description: Value + is the value of + the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific + config management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management + parameters + properties: + array: + description: Array + is the value of + an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name + is the name identifying + a parameter. + type: string + string: + description: String_ + is the value of + a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not + be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the + URL to the repository (Git + or Helm) that contains the + application manifests + type: string + targetRevision: + description: TargetRevision + defines the revision of the + source to sync the application + to. In case of Git, this can + be commit, tag, or branch. + If omitted, will equal to + HEAD. In case of Helm, this + is a semver tag for the Chart's + version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when + and how a sync will be performed + properties: + automated: + description: Automated will keep + an application synced to the + target revision + properties: + allowEmpty: + description: 'AllowEmpty allows + apps have zero live resources + (default: false)' + type: boolean + prune: + description: 'Prune specifies + whether to delete resources + from the cluster that are + not found in the sources + anymore as part of automated + sync (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes + whether to revert resources + back to their desired state + upon modification in the + cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata + controls metadata in the given + namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed + sync retry behavior + properties: + backoff: + description: Backoff controls + how to backoff on subsequent + retries of failed syncs + properties: + duration: + description: Duration + is the amount to back + off. Default unit is + seconds, but could also + be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is + a factor to multiply + the base duration after + each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration + is the maximum amount + of time allowed for + the backoff strategy + type: string + type: object + limit: + description: Limit is the + maximum number of attempts + for retrying a failed sync. + If set to 0, no retries + will be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you + to specify whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + values: + additionalProperties: + type: string + description: Values contains key/value pairs + which are passed directly as parameters + to the template + type: object + required: + - configMapRef + type: object + clusters: + description: ClusterGenerator defines a generator + to match against clusters registered with ArgoCD. + properties: + selector: + description: Selector defines a label selector + to match against all clusters registered + with ArgoCD. Clusters today are stored as + Kubernetes Secrets, thus the Secret labels + will be used for matching the selector. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + template: + description: ApplicationSetTemplate represents + argocd ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta + represents the Argo CD application fields + that may be used for Applications generated + from the ApplicationSet (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the + desired state of an ArgoCD Git Application + properties: + destination: + description: Destination is a reference + to the target Kubernetes server + and namespace + properties: + name: + description: Name is an alternate + way of specifying the target + cluster by its symbolic name + type: string + nameRef: + description: NameRef is a reference + to a Cluster used to set Name + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a + reference to a Cluster used + to set Name + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies + the target namespace for the + application's resources. The + namespace will only be set for + namespace-scoped resources that + have not set a value for .metadata.namespace + type: string + server: + description: Server specifies + the URL of the target cluster + and must be set to the Kubernetes + control plane API + type: string + serverRef: + description: ServerRef is a reference + to an Cluster used to set Server + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector + selects references to Repositories + used to set SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is + a list of resources and their fields + which should be ignored during comparison + items: + description: ResourceIgnoreDifferences + contains resource filter and list + of json paths which should be + ignored during comparison with + live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers + is a list of trusted managers. + Fields mutated by those managers + will take precedence over + the desired state defined + in the SCM and won't be displayed + in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list + of information (URLs, email addresses, + and plain text) that relates to + the application + items: + description: Info is a list of informational + items for this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference + to the project this application + belongs to. The empty string means + that application belongs to the + 'default' project. + type: string + revisionHistoryLimit: + description: 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. This should + only be changed in exceptional circumstances. + Setting to zero will store no history. + This will reduce storage used. Increasing + will increase the space used to + store the history, so we do not + recommend increasing it. Default + is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains + all required information about the + source of an application + properties: + chart: + description: Chart is a Helm chart + name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded from + being used during manifest + generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars is + a list of Jsonnet External + Variables + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is a + list of Jsonnet Top-level + Arguments + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific + options + properties: + fileParameters: + description: FileParameters + are file parameters to the + helm template + items: + description: HelmFileParameter + is a file parameter that's + passed to helm template + during manifest generation + properties: + name: + description: Name is + the name of the Helm + parameter + type: string + path: + description: Path is + the path to the file + containing the values + for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from + failing when valueFiles + do not exist locally by + not appending them to helm + template --values + type: boolean + parameters: + description: Parameters is + a list of Helm parameters + which are passed to the + helm template command upon + manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to interpret + booleans and numbers + as strings + type: boolean + name: + description: Name is + the name of the Helm + parameter + type: string + value: + description: Value is + the value for the + Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is + the Helm release name to + use. If omitted it will + use the application name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is + a list of Helm value files + to use when generating a + template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values to + be passed to helm template, + defined as a map. This takes + precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the + Helm version to use for + templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize + specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to rendered + manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels to + resources for Kustomize + apps + type: boolean + images: + description: Images is a list + of Kustomize image override + specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in the + format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is + a prefix appended to resources + for Kustomize apps + type: string + nameSuffix: + description: NameSuffix is + a suffix appended to resources + for Kustomize apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is a + list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name of + Deployment or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry represents + an entry in the application's + environment + properties: + name: + description: Name is + the name of the variable, + usually expressed + in uppercase + type: string + value: + description: Value is + the value of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config + management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management parameters + properties: + array: + description: Array is + the value of an array + type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name is + the name identifying + a parameter. + type: string + string: + description: String_ + is the value of a + string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not be + used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL + to the repository (Git or Helm) + that contains the application + manifests + type: string + targetRevision: + description: TargetRevision defines + the revision of the source to + sync the application to. In + case of Git, this can be commit, + tag, or branch. If omitted, + will equal to HEAD. In case + of Helm, this is a semver tag + for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference + to the location of the application's + manifests or chart + items: + description: ApplicationSource contains + all required information about + the source of an application + properties: + chart: + description: Chart is a Helm + chart name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds + path/directory specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded + from being used during + manifest generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included + during manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars + is a list of Jsonnet + External Variables + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is + a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm + specific options + properties: + fileParameters: + description: FileParameters + are file parameters to + the helm template + items: + description: HelmFileParameter + is a file parameter + that's passed to helm + template during manifest + generation + properties: + name: + description: Name + is the name of the + Helm parameter + type: string + path: + description: Path + is the path to the + file containing + the values for the + Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template + from failing when valueFiles + do not exist locally by + not appending them to + helm template --values + type: boolean + parameters: + description: Parameters + is a list of Helm parameters + which are passed to the + helm template command + upon manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to + interpret booleans + and numbers as strings + type: boolean + name: + description: Name + is the name of the + Helm parameter + type: string + value: + description: Value + is the value for + the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName + is the Helm release name + to use. If omitted it + will use the application + name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles + is a list of Helm value + files to use when generating + a template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values + to be passed to helm template, + defined as a map. This + takes precedence over + Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is + the Helm version to use + for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds + kustomize specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to + rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels + to resources for Kustomize + apps + type: boolean + images: + description: Images is a + list of Kustomize image + override specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix + is a prefix appended to + resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix + is a suffix appended to + resources for Kustomize + apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is + a list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name + of Deployment or + StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific + options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry + represents an entry + in the application's + environment + properties: + name: + description: Name + is the name of the + variable, usually + expressed in uppercase + type: string + value: + description: Value + is the value of + the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific + config management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management + parameters + properties: + array: + description: Array + is the value of + an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name + is the name identifying + a parameter. + type: string + string: + description: String_ + is the value of + a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not + be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the + URL to the repository (Git + or Helm) that contains the + application manifests + type: string + targetRevision: + description: TargetRevision + defines the revision of the + source to sync the application + to. In case of Git, this can + be commit, tag, or branch. + If omitted, will equal to + HEAD. In case of Helm, this + is a semver tag for the Chart's + version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when + and how a sync will be performed + properties: + automated: + description: Automated will keep + an application synced to the + target revision + properties: + allowEmpty: + description: 'AllowEmpty allows + apps have zero live resources + (default: false)' + type: boolean + prune: + description: 'Prune specifies + whether to delete resources + from the cluster that are + not found in the sources + anymore as part of automated + sync (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes + whether to revert resources + back to their desired state + upon modification in the + cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata + controls metadata in the given + namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed + sync retry behavior + properties: + backoff: + description: Backoff controls + how to backoff on subsequent + retries of failed syncs + properties: + duration: + description: Duration + is the amount to back + off. Default unit is + seconds, but could also + be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is + a factor to multiply + the base duration after + each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration + is the maximum amount + of time allowed for + the backoff strategy + type: string + type: object + limit: + description: Limit is the + maximum number of attempts + for retrying a failed sync. + If set to 0, no retries + will be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you + to specify whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + values: + additionalProperties: + type: string + description: Values contains key/value pairs + which are passed directly as parameters + to the template + type: object + type: object + git: + description: GitGenerator defines a generator + that scrapes a Git repo to find candidate resources. + properties: + directories: + items: + description: GitDirectoryGeneratorItem defines + a directory to scan for resources. + properties: + exclude: + type: boolean + path: + type: string + required: + - path + type: object + type: array + files: + items: + description: GitFileGeneratorItem defines + a file to scan for resources. + properties: + path: + type: string + required: + - path + type: object + type: array + pathParamPrefix: + type: string + repoURL: + type: string + requeueAfterSeconds: + format: int64 + type: integer + revision: + type: string + template: + description: ApplicationSetTemplate represents + argocd ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta + represents the Argo CD application fields + that may be used for Applications generated + from the ApplicationSet (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the + desired state of an ArgoCD Git Application + properties: + destination: + description: Destination is a reference + to the target Kubernetes server + and namespace + properties: + name: + description: Name is an alternate + way of specifying the target + cluster by its symbolic name + type: string + nameRef: + description: NameRef is a reference + to a Cluster used to set Name + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a + reference to a Cluster used + to set Name + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies + the target namespace for the + application's resources. The + namespace will only be set for + namespace-scoped resources that + have not set a value for .metadata.namespace + type: string + server: + description: Server specifies + the URL of the target cluster + and must be set to the Kubernetes + control plane API + type: string + serverRef: + description: ServerRef is a reference + to an Cluster used to set Server + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector + selects references to Repositories + used to set SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is + a list of resources and their fields + which should be ignored during comparison + items: + description: ResourceIgnoreDifferences + contains resource filter and list + of json paths which should be + ignored during comparison with + live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers + is a list of trusted managers. + Fields mutated by those managers + will take precedence over + the desired state defined + in the SCM and won't be displayed + in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list + of information (URLs, email addresses, + and plain text) that relates to + the application + items: + description: Info is a list of informational + items for this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference + to the project this application + belongs to. The empty string means + that application belongs to the + 'default' project. + type: string + revisionHistoryLimit: + description: 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. This should + only be changed in exceptional circumstances. + Setting to zero will store no history. + This will reduce storage used. Increasing + will increase the space used to + store the history, so we do not + recommend increasing it. Default + is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains + all required information about the + source of an application + properties: + chart: + description: Chart is a Helm chart + name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded from + being used during manifest + generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars is + a list of Jsonnet External + Variables + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is a + list of Jsonnet Top-level + Arguments + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific + options + properties: + fileParameters: + description: FileParameters + are file parameters to the + helm template + items: + description: HelmFileParameter + is a file parameter that's + passed to helm template + during manifest generation + properties: + name: + description: Name is + the name of the Helm + parameter + type: string + path: + description: Path is + the path to the file + containing the values + for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from + failing when valueFiles + do not exist locally by + not appending them to helm + template --values + type: boolean + parameters: + description: Parameters is + a list of Helm parameters + which are passed to the + helm template command upon + manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to interpret + booleans and numbers + as strings + type: boolean + name: + description: Name is + the name of the Helm + parameter + type: string + value: + description: Value is + the value for the + Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is + the Helm release name to + use. If omitted it will + use the application name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is + a list of Helm value files + to use when generating a + template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values to + be passed to helm template, + defined as a map. This takes + precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the + Helm version to use for + templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize + specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to rendered + manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels to + resources for Kustomize + apps + type: boolean + images: + description: Images is a list + of Kustomize image override + specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in the + format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is + a prefix appended to resources + for Kustomize apps + type: string + nameSuffix: + description: NameSuffix is + a suffix appended to resources + for Kustomize apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is a + list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name of + Deployment or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry represents + an entry in the application's + environment + properties: + name: + description: Name is + the name of the variable, + usually expressed + in uppercase + type: string + value: + description: Value is + the value of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config + management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management parameters + properties: + array: + description: Array is + the value of an array + type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name is + the name identifying + a parameter. + type: string + string: + description: String_ + is the value of a + string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not be + used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL + to the repository (Git or Helm) + that contains the application + manifests + type: string + targetRevision: + description: TargetRevision defines + the revision of the source to + sync the application to. In + case of Git, this can be commit, + tag, or branch. If omitted, + will equal to HEAD. In case + of Helm, this is a semver tag + for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference + to the location of the application's + manifests or chart + items: + description: ApplicationSource contains + all required information about + the source of an application + properties: + chart: + description: Chart is a Helm + chart name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds + path/directory specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded + from being used during + manifest generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included + during manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars + is a list of Jsonnet + External Variables + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is + a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm + specific options + properties: + fileParameters: + description: FileParameters + are file parameters to + the helm template + items: + description: HelmFileParameter + is a file parameter + that's passed to helm + template during manifest + generation + properties: + name: + description: Name + is the name of the + Helm parameter + type: string + path: + description: Path + is the path to the + file containing + the values for the + Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template + from failing when valueFiles + do not exist locally by + not appending them to + helm template --values + type: boolean + parameters: + description: Parameters + is a list of Helm parameters + which are passed to the + helm template command + upon manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to + interpret booleans + and numbers as strings + type: boolean + name: + description: Name + is the name of the + Helm parameter + type: string + value: + description: Value + is the value for + the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName + is the Helm release name + to use. If omitted it + will use the application + name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles + is a list of Helm value + files to use when generating + a template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values + to be passed to helm template, + defined as a map. This + takes precedence over + Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is + the Helm version to use + for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds + kustomize specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to + rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels + to resources for Kustomize + apps + type: boolean + images: + description: Images is a + list of Kustomize image + override specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix + is a prefix appended to + resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix + is a suffix appended to + resources for Kustomize + apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is + a list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name + of Deployment or + StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific + options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry + represents an entry + in the application's + environment + properties: + name: + description: Name + is the name of the + variable, usually + expressed in uppercase + type: string + value: + description: Value + is the value of + the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific + config management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management + parameters + properties: + array: + description: Array + is the value of + an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name + is the name identifying + a parameter. + type: string + string: + description: String_ + is the value of + a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not + be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the + URL to the repository (Git + or Helm) that contains the + application manifests + type: string + targetRevision: + description: TargetRevision + defines the revision of the + source to sync the application + to. In case of Git, this can + be commit, tag, or branch. + If omitted, will equal to + HEAD. In case of Helm, this + is a semver tag for the Chart's + version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when + and how a sync will be performed + properties: + automated: + description: Automated will keep + an application synced to the + target revision + properties: + allowEmpty: + description: 'AllowEmpty allows + apps have zero live resources + (default: false)' + type: boolean + prune: + description: 'Prune specifies + whether to delete resources + from the cluster that are + not found in the sources + anymore as part of automated + sync (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes + whether to revert resources + back to their desired state + upon modification in the + cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata + controls metadata in the given + namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed + sync retry behavior + properties: + backoff: + description: Backoff controls + how to backoff on subsequent + retries of failed syncs + properties: + duration: + description: Duration + is the amount to back + off. Default unit is + seconds, but could also + be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is + a factor to multiply + the base duration after + each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration + is the maximum amount + of time allowed for + the backoff strategy + type: string + type: object + limit: + description: Limit is the + maximum number of attempts + for retrying a failed sync. + If set to 0, no retries + will be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you + to specify whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + values: + additionalProperties: + type: string + description: Values contains key/value pairs + which are passed directly as parameters + to the template + type: object + required: + - repoURL + - revision + type: object + list: + description: ListGenerator include items info + properties: + elements: + items: + x-kubernetes-preserve-unknown-fields: true + type: array + elementsYaml: + type: string + template: + description: ApplicationSetTemplate represents + argocd ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta + represents the Argo CD application fields + that may be used for Applications generated + from the ApplicationSet (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the + desired state of an ArgoCD Git Application + properties: + destination: + description: Destination is a reference + to the target Kubernetes server + and namespace + properties: + name: + description: Name is an alternate + way of specifying the target + cluster by its symbolic name + type: string + nameRef: + description: NameRef is a reference + to a Cluster used to set Name + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a + reference to a Cluster used + to set Name + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies + the target namespace for the + application's resources. The + namespace will only be set for + namespace-scoped resources that + have not set a value for .metadata.namespace + type: string + server: + description: Server specifies + the URL of the target cluster + and must be set to the Kubernetes + control plane API + type: string + serverRef: + description: ServerRef is a reference + to an Cluster used to set Server + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector + selects references to Repositories + used to set SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is + a list of resources and their fields + which should be ignored during comparison + items: + description: ResourceIgnoreDifferences + contains resource filter and list + of json paths which should be + ignored during comparison with + live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers + is a list of trusted managers. + Fields mutated by those managers + will take precedence over + the desired state defined + in the SCM and won't be displayed + in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list + of information (URLs, email addresses, + and plain text) that relates to + the application + items: + description: Info is a list of informational + items for this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference + to the project this application + belongs to. The empty string means + that application belongs to the + 'default' project. + type: string + revisionHistoryLimit: + description: 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. This should + only be changed in exceptional circumstances. + Setting to zero will store no history. + This will reduce storage used. Increasing + will increase the space used to + store the history, so we do not + recommend increasing it. Default + is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains + all required information about the + source of an application + properties: + chart: + description: Chart is a Helm chart + name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded from + being used during manifest + generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars is + a list of Jsonnet External + Variables + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is a + list of Jsonnet Top-level + Arguments + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific + options + properties: + fileParameters: + description: FileParameters + are file parameters to the + helm template + items: + description: HelmFileParameter + is a file parameter that's + passed to helm template + during manifest generation + properties: + name: + description: Name is + the name of the Helm + parameter + type: string + path: + description: Path is + the path to the file + containing the values + for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from + failing when valueFiles + do not exist locally by + not appending them to helm + template --values + type: boolean + parameters: + description: Parameters is + a list of Helm parameters + which are passed to the + helm template command upon + manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to interpret + booleans and numbers + as strings + type: boolean + name: + description: Name is + the name of the Helm + parameter + type: string + value: + description: Value is + the value for the + Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is + the Helm release name to + use. If omitted it will + use the application name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is + a list of Helm value files + to use when generating a + template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values to + be passed to helm template, + defined as a map. This takes + precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the + Helm version to use for + templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize + specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to rendered + manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels to + resources for Kustomize + apps + type: boolean + images: + description: Images is a list + of Kustomize image override + specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in the + format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is + a prefix appended to resources + for Kustomize apps + type: string + nameSuffix: + description: NameSuffix is + a suffix appended to resources + for Kustomize apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is a + list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name of + Deployment or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry represents + an entry in the application's + environment + properties: + name: + description: Name is + the name of the variable, + usually expressed + in uppercase + type: string + value: + description: Value is + the value of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config + management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management parameters + properties: + array: + description: Array is + the value of an array + type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name is + the name identifying + a parameter. + type: string + string: + description: String_ + is the value of a + string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not be + used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL + to the repository (Git or Helm) + that contains the application + manifests + type: string + targetRevision: + description: TargetRevision defines + the revision of the source to + sync the application to. In + case of Git, this can be commit, + tag, or branch. If omitted, + will equal to HEAD. In case + of Helm, this is a semver tag + for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference + to the location of the application's + manifests or chart + items: + description: ApplicationSource contains + all required information about + the source of an application + properties: + chart: + description: Chart is a Helm + chart name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds + path/directory specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded + from being used during + manifest generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included + during manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars + is a list of Jsonnet + External Variables + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is + a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm + specific options + properties: + fileParameters: + description: FileParameters + are file parameters to + the helm template + items: + description: HelmFileParameter + is a file parameter + that's passed to helm + template during manifest + generation + properties: + name: + description: Name + is the name of the + Helm parameter + type: string + path: + description: Path + is the path to the + file containing + the values for the + Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template + from failing when valueFiles + do not exist locally by + not appending them to + helm template --values + type: boolean + parameters: + description: Parameters + is a list of Helm parameters + which are passed to the + helm template command + upon manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to + interpret booleans + and numbers as strings + type: boolean + name: + description: Name + is the name of the + Helm parameter + type: string + value: + description: Value + is the value for + the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName + is the Helm release name + to use. If omitted it + will use the application + name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles + is a list of Helm value + files to use when generating + a template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values + to be passed to helm template, + defined as a map. This + takes precedence over + Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is + the Helm version to use + for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds + kustomize specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to + rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels + to resources for Kustomize + apps + type: boolean + images: + description: Images is a + list of Kustomize image + override specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix + is a prefix appended to + resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix + is a suffix appended to + resources for Kustomize + apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is + a list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name + of Deployment or + StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific + options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry + represents an entry + in the application's + environment + properties: + name: + description: Name + is the name of the + variable, usually + expressed in uppercase + type: string + value: + description: Value + is the value of + the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific + config management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management + parameters + properties: + array: + description: Array + is the value of + an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name + is the name identifying + a parameter. + type: string + string: + description: String_ + is the value of + a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not + be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the + URL to the repository (Git + or Helm) that contains the + application manifests + type: string + targetRevision: + description: TargetRevision + defines the revision of the + source to sync the application + to. In case of Git, this can + be commit, tag, or branch. + If omitted, will equal to + HEAD. In case of Helm, this + is a semver tag for the Chart's + version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when + and how a sync will be performed + properties: + automated: + description: Automated will keep + an application synced to the + target revision + properties: + allowEmpty: + description: 'AllowEmpty allows + apps have zero live resources + (default: false)' + type: boolean + prune: + description: 'Prune specifies + whether to delete resources + from the cluster that are + not found in the sources + anymore as part of automated + sync (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes + whether to revert resources + back to their desired state + upon modification in the + cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata + controls metadata in the given + namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed + sync retry behavior + properties: + backoff: + description: Backoff controls + how to backoff on subsequent + retries of failed syncs + properties: + duration: + description: Duration + is the amount to back + off. Default unit is + seconds, but could also + be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is + a factor to multiply + the base duration after + each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration + is the maximum amount + of time allowed for + the backoff strategy + type: string + type: object + limit: + description: Limit is the + maximum number of attempts + for retrying a failed sync. + If set to 0, no retries + will be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you + to specify whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + required: + - elements + type: object + matrix: + description: Matrix should have the form of NestedMatrixGenerator + x-kubernetes-preserve-unknown-fields: true + merge: + description: Merge should have the form of NestedMergeGenerator + x-kubernetes-preserve-unknown-fields: true + plugin: + description: PluginGenerator defines connection + info specific to Plugin. + properties: + configMapRef: + description: PluginConfigMapRef defines a + reference to a ConfigMap containing a plugin. + properties: + name: + description: Name of the ConfigMap + type: string + required: + - name + type: object + input: + description: PluginInput defines the input + to a plugin. + properties: + parameters: + additionalProperties: + x-kubernetes-preserve-unknown-fields: true + description: Parameters contains the information + to pass to the plugin. It is a map. + The keys must be strings, and the values + can be any type. + type: object + type: object + requeueAfterSeconds: + description: RequeueAfterSeconds determines + how long the ApplicationSet controller will + wait before reconciling the ApplicationSet + again. + format: int64 + type: integer + template: + description: ApplicationSetTemplate represents + argocd ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta + represents the Argo CD application fields + that may be used for Applications generated + from the ApplicationSet (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the + desired state of an ArgoCD Git Application + properties: + destination: + description: Destination is a reference + to the target Kubernetes server + and namespace + properties: + name: + description: Name is an alternate + way of specifying the target + cluster by its symbolic name + type: string + nameRef: + description: NameRef is a reference + to a Cluster used to set Name + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a + reference to a Cluster used + to set Name + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies + the target namespace for the + application's resources. The + namespace will only be set for + namespace-scoped resources that + have not set a value for .metadata.namespace + type: string + server: + description: Server specifies + the URL of the target cluster + and must be set to the Kubernetes + control plane API + type: string + serverRef: + description: ServerRef is a reference + to an Cluster used to set Server + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector + selects references to Repositories + used to set SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is + a list of resources and their fields + which should be ignored during comparison + items: + description: ResourceIgnoreDifferences + contains resource filter and list + of json paths which should be + ignored during comparison with + live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers + is a list of trusted managers. + Fields mutated by those managers + will take precedence over + the desired state defined + in the SCM and won't be displayed + in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list + of information (URLs, email addresses, + and plain text) that relates to + the application + items: + description: Info is a list of informational + items for this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference + to the project this application + belongs to. The empty string means + that application belongs to the + 'default' project. + type: string + revisionHistoryLimit: + description: 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. This should + only be changed in exceptional circumstances. + Setting to zero will store no history. + This will reduce storage used. Increasing + will increase the space used to + store the history, so we do not + recommend increasing it. Default + is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains + all required information about the + source of an application + properties: + chart: + description: Chart is a Helm chart + name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded from + being used during manifest + generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars is + a list of Jsonnet External + Variables + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is a + list of Jsonnet Top-level + Arguments + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific + options + properties: + fileParameters: + description: FileParameters + are file parameters to the + helm template + items: + description: HelmFileParameter + is a file parameter that's + passed to helm template + during manifest generation + properties: + name: + description: Name is + the name of the Helm + parameter + type: string + path: + description: Path is + the path to the file + containing the values + for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from + failing when valueFiles + do not exist locally by + not appending them to helm + template --values + type: boolean + parameters: + description: Parameters is + a list of Helm parameters + which are passed to the + helm template command upon + manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to interpret + booleans and numbers + as strings + type: boolean + name: + description: Name is + the name of the Helm + parameter + type: string + value: + description: Value is + the value for the + Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is + the Helm release name to + use. If omitted it will + use the application name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is + a list of Helm value files + to use when generating a + template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values to + be passed to helm template, + defined as a map. This takes + precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the + Helm version to use for + templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize + specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to rendered + manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels to + resources for Kustomize + apps + type: boolean + images: + description: Images is a list + of Kustomize image override + specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in the + format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is + a prefix appended to resources + for Kustomize apps + type: string + nameSuffix: + description: NameSuffix is + a suffix appended to resources + for Kustomize apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is a + list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name of + Deployment or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry represents + an entry in the application's + environment + properties: + name: + description: Name is + the name of the variable, + usually expressed + in uppercase + type: string + value: + description: Value is + the value of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config + management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management parameters + properties: + array: + description: Array is + the value of an array + type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name is + the name identifying + a parameter. + type: string + string: + description: String_ + is the value of a + string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not be + used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL + to the repository (Git or Helm) + that contains the application + manifests + type: string + targetRevision: + description: TargetRevision defines + the revision of the source to + sync the application to. In + case of Git, this can be commit, + tag, or branch. If omitted, + will equal to HEAD. In case + of Helm, this is a semver tag + for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference + to the location of the application's + manifests or chart + items: + description: ApplicationSource contains + all required information about + the source of an application + properties: + chart: + description: Chart is a Helm + chart name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds + path/directory specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded + from being used during + manifest generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included + during manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars + is a list of Jsonnet + External Variables + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is + a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm + specific options + properties: + fileParameters: + description: FileParameters + are file parameters to + the helm template + items: + description: HelmFileParameter + is a file parameter + that's passed to helm + template during manifest + generation + properties: + name: + description: Name + is the name of the + Helm parameter + type: string + path: + description: Path + is the path to the + file containing + the values for the + Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template + from failing when valueFiles + do not exist locally by + not appending them to + helm template --values + type: boolean + parameters: + description: Parameters + is a list of Helm parameters + which are passed to the + helm template command + upon manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to + interpret booleans + and numbers as strings + type: boolean + name: + description: Name + is the name of the + Helm parameter + type: string + value: + description: Value + is the value for + the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName + is the Helm release name + to use. If omitted it + will use the application + name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles + is a list of Helm value + files to use when generating + a template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values + to be passed to helm template, + defined as a map. This + takes precedence over + Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is + the Helm version to use + for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds + kustomize specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to + rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels + to resources for Kustomize + apps + type: boolean + images: + description: Images is a + list of Kustomize image + override specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix + is a prefix appended to + resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix + is a suffix appended to + resources for Kustomize + apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is + a list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name + of Deployment or + StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific + options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry + represents an entry + in the application's + environment + properties: + name: + description: Name + is the name of the + variable, usually + expressed in uppercase + type: string + value: + description: Value + is the value of + the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific + config management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management + parameters + properties: + array: + description: Array + is the value of + an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name + is the name identifying + a parameter. + type: string + string: + description: String_ + is the value of + a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not + be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the + URL to the repository (Git + or Helm) that contains the + application manifests + type: string + targetRevision: + description: TargetRevision + defines the revision of the + source to sync the application + to. In case of Git, this can + be commit, tag, or branch. + If omitted, will equal to + HEAD. In case of Helm, this + is a semver tag for the Chart's + version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when + and how a sync will be performed + properties: + automated: + description: Automated will keep + an application synced to the + target revision + properties: + allowEmpty: + description: 'AllowEmpty allows + apps have zero live resources + (default: false)' + type: boolean + prune: + description: 'Prune specifies + whether to delete resources + from the cluster that are + not found in the sources + anymore as part of automated + sync (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes + whether to revert resources + back to their desired state + upon modification in the + cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata + controls metadata in the given + namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed + sync retry behavior + properties: + backoff: + description: Backoff controls + how to backoff on subsequent + retries of failed syncs + properties: + duration: + description: Duration + is the amount to back + off. Default unit is + seconds, but could also + be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is + a factor to multiply + the base duration after + each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration + is the maximum amount + of time allowed for + the backoff strategy + type: string + type: object + limit: + description: Limit is the + maximum number of attempts + for retrying a failed sync. + If set to 0, no retries + will be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you + to specify whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + values: + additionalProperties: + type: string + description: Values contains key/value pairs + which are passed directly as parameters + to the template. These values will not be + sent as parameters to the plugin. + type: object + required: + - configMapRef + type: object + pullRequest: + description: PullRequestGenerator defines a generator + that scrapes a PullRequest API to find candidate + pull requests. + properties: + azuredevops: + description: Additional provider to use and + config for it. + properties: + api: + description: The Azure DevOps API URL + to talk to. If blank, use https://dev.azure.com/. + type: string + labels: + description: Labels is used to filter + the PRs that you want to target + items: + type: string + type: array + organization: + description: Azure DevOps org to scan. + Required. + type: string + project: + description: Azure DevOps project name + to scan. Required. + type: string + repo: + description: Azure DevOps repo name to + scan. Required. + type: string + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - organization + - project + - repo + type: object + bitbucket: + description: PullRequestGeneratorBitbucket + defines connection info specific to Bitbucket. + properties: + api: + description: The Bitbucket REST API URL + to talk to. If blank, uses https://api.bitbucket.org/2.0. + type: string + basicAuth: + description: Credentials for Basic auth + properties: + passwordRef: + description: Password (or personal + access token) reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + username: + description: Username for Basic auth + type: string + required: + - passwordRef + - username + type: object + bearerToken: + description: Credentials for AppToken + (Bearer auth) + properties: + tokenRef: + description: Password (or personal + access token) reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - tokenRef + type: object + owner: + description: Workspace to scan. Required. + type: string + repo: + description: Repo name to scan. Required. + type: string + required: + - owner + - repo + type: object + bitbucketServer: + description: PullRequestGeneratorBitbucketServer + defines connection info specific to BitbucketServer. + properties: + api: + description: The Bitbucket REST API URL + to talk to e.g. https://bitbucket.org/rest + Required. + type: string + basicAuth: + description: Credentials for Basic auth + properties: + passwordRef: + description: Password (or personal + access token) reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + username: + description: Username for Basic auth + type: string + required: + - passwordRef + - username + type: object + project: + description: Project to scan. Required. + type: string + repo: + description: Repo name to scan. Required. + type: string + required: + - api + - project + - repo + type: object + filters: + description: Filters for which pull requests + should be considered. + items: + description: PullRequestGeneratorFilter + is a single pull request filter. If multiple + filter types are set on a single struct, + they will be AND'd together. All filters + must pass for a pull request to be included. + properties: + branchMatch: + type: string + targetBranchMatch: + type: string + type: object + type: array + gitea: + description: PullRequestGeneratorGitea defines + connection info specific to Gitea. + properties: + api: + description: The Gitea API URL to talk + to. Required + type: string + insecure: + description: 'Allow insecure tls, for + self-signed certificates; default: false.' + type: boolean + owner: + description: Gitea org or user to scan. + Required. + type: string + repo: + description: Gitea repo name to scan. + Required. + type: string + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - api + - owner + - repo + type: object + github: + description: Which provider to use and config + for it. + properties: + api: + description: The GitHub API URL to talk + to. If blank, use https://api.github.com/. + type: string + appSecretName: + description: AppSecretName is a reference + to a GitHub App repo-creds secret with + permission to access pull requests. + type: string + labels: + description: Labels is used to filter + the PRs that you want to target + items: + type: string + type: array + owner: + description: GitHub org or user to scan. + Required. + type: string + repo: + description: GitHub repo name to scan. + Required. + type: string + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - owner + - repo + type: object + gitlab: + description: PullRequestGeneratorGitLab defines + connection info specific to GitLab. + properties: + api: + description: The GitLab API URL to talk + to. If blank, uses https://gitlab.com/. + type: string + insecure: + description: 'Skips validating the SCM + provider''s TLS certificate - useful + for self-signed certificates.; default: + false' + type: boolean + labels: + description: Labels is used to filter + the MRs that you want to target + items: + type: string + type: array + project: + description: GitLab project to scan. Required. + type: string + pullRequestState: + description: 'PullRequestState is an additional + MRs filter to get only those with a + certain state. Default: "" (all states)' + type: string + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - project + type: object + requeueAfterSeconds: + description: Standard parameters. + format: int64 + type: integer + template: + description: ApplicationSetTemplate represents + argocd ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta + represents the Argo CD application fields + that may be used for Applications generated + from the ApplicationSet (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the + desired state of an ArgoCD Git Application + properties: + destination: + description: Destination is a reference + to the target Kubernetes server + and namespace + properties: + name: + description: Name is an alternate + way of specifying the target + cluster by its symbolic name + type: string + nameRef: + description: NameRef is a reference + to a Cluster used to set Name + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a + reference to a Cluster used + to set Name + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies + the target namespace for the + application's resources. The + namespace will only be set for + namespace-scoped resources that + have not set a value for .metadata.namespace + type: string + server: + description: Server specifies + the URL of the target cluster + and must be set to the Kubernetes + control plane API + type: string + serverRef: + description: ServerRef is a reference + to an Cluster used to set Server + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector + selects references to Repositories + used to set SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is + a list of resources and their fields + which should be ignored during comparison + items: + description: ResourceIgnoreDifferences + contains resource filter and list + of json paths which should be + ignored during comparison with + live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers + is a list of trusted managers. + Fields mutated by those managers + will take precedence over + the desired state defined + in the SCM and won't be displayed + in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list + of information (URLs, email addresses, + and plain text) that relates to + the application + items: + description: Info is a list of informational + items for this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference + to the project this application + belongs to. The empty string means + that application belongs to the + 'default' project. + type: string + revisionHistoryLimit: + description: 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. This should + only be changed in exceptional circumstances. + Setting to zero will store no history. + This will reduce storage used. Increasing + will increase the space used to + store the history, so we do not + recommend increasing it. Default + is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains + all required information about the + source of an application + properties: + chart: + description: Chart is a Helm chart + name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded from + being used during manifest + generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars is + a list of Jsonnet External + Variables + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is a + list of Jsonnet Top-level + Arguments + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific + options + properties: + fileParameters: + description: FileParameters + are file parameters to the + helm template + items: + description: HelmFileParameter + is a file parameter that's + passed to helm template + during manifest generation + properties: + name: + description: Name is + the name of the Helm + parameter + type: string + path: + description: Path is + the path to the file + containing the values + for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from + failing when valueFiles + do not exist locally by + not appending them to helm + template --values + type: boolean + parameters: + description: Parameters is + a list of Helm parameters + which are passed to the + helm template command upon + manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to interpret + booleans and numbers + as strings + type: boolean + name: + description: Name is + the name of the Helm + parameter + type: string + value: + description: Value is + the value for the + Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is + the Helm release name to + use. If omitted it will + use the application name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is + a list of Helm value files + to use when generating a + template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values to + be passed to helm template, + defined as a map. This takes + precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the + Helm version to use for + templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize + specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to rendered + manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels to + resources for Kustomize + apps + type: boolean + images: + description: Images is a list + of Kustomize image override + specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in the + format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is + a prefix appended to resources + for Kustomize apps + type: string + nameSuffix: + description: NameSuffix is + a suffix appended to resources + for Kustomize apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is a + list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name of + Deployment or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry represents + an entry in the application's + environment + properties: + name: + description: Name is + the name of the variable, + usually expressed + in uppercase + type: string + value: + description: Value is + the value of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config + management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management parameters + properties: + array: + description: Array is + the value of an array + type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name is + the name identifying + a parameter. + type: string + string: + description: String_ + is the value of a + string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not be + used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL + to the repository (Git or Helm) + that contains the application + manifests + type: string + targetRevision: + description: TargetRevision defines + the revision of the source to + sync the application to. In + case of Git, this can be commit, + tag, or branch. If omitted, + will equal to HEAD. In case + of Helm, this is a semver tag + for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference + to the location of the application's + manifests or chart + items: + description: ApplicationSource contains + all required information about + the source of an application + properties: + chart: + description: Chart is a Helm + chart name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds + path/directory specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded + from being used during + manifest generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included + during manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars + is a list of Jsonnet + External Variables + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is + a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm + specific options + properties: + fileParameters: + description: FileParameters + are file parameters to + the helm template + items: + description: HelmFileParameter + is a file parameter + that's passed to helm + template during manifest + generation + properties: + name: + description: Name + is the name of the + Helm parameter + type: string + path: + description: Path + is the path to the + file containing + the values for the + Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template + from failing when valueFiles + do not exist locally by + not appending them to + helm template --values + type: boolean + parameters: + description: Parameters + is a list of Helm parameters + which are passed to the + helm template command + upon manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to + interpret booleans + and numbers as strings + type: boolean + name: + description: Name + is the name of the + Helm parameter + type: string + value: + description: Value + is the value for + the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName + is the Helm release name + to use. If omitted it + will use the application + name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles + is a list of Helm value + files to use when generating + a template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values + to be passed to helm template, + defined as a map. This + takes precedence over + Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is + the Helm version to use + for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds + kustomize specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to + rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels + to resources for Kustomize + apps + type: boolean + images: + description: Images is a + list of Kustomize image + override specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix + is a prefix appended to + resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix + is a suffix appended to + resources for Kustomize + apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is + a list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name + of Deployment or + StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific + options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry + represents an entry + in the application's + environment + properties: + name: + description: Name + is the name of the + variable, usually + expressed in uppercase + type: string + value: + description: Value + is the value of + the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific + config management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management + parameters + properties: + array: + description: Array + is the value of + an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name + is the name identifying + a parameter. + type: string + string: + description: String_ + is the value of + a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not + be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the + URL to the repository (Git + or Helm) that contains the + application manifests + type: string + targetRevision: + description: TargetRevision + defines the revision of the + source to sync the application + to. In case of Git, this can + be commit, tag, or branch. + If omitted, will equal to + HEAD. In case of Helm, this + is a semver tag for the Chart's + version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when + and how a sync will be performed + properties: + automated: + description: Automated will keep + an application synced to the + target revision + properties: + allowEmpty: + description: 'AllowEmpty allows + apps have zero live resources + (default: false)' + type: boolean + prune: + description: 'Prune specifies + whether to delete resources + from the cluster that are + not found in the sources + anymore as part of automated + sync (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes + whether to revert resources + back to their desired state + upon modification in the + cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata + controls metadata in the given + namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed + sync retry behavior + properties: + backoff: + description: Backoff controls + how to backoff on subsequent + retries of failed syncs + properties: + duration: + description: Duration + is the amount to back + off. Default unit is + seconds, but could also + be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is + a factor to multiply + the base duration after + each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration + is the maximum amount + of time allowed for + the backoff strategy + type: string + type: object + limit: + description: Limit is the + maximum number of attempts + for retrying a failed sync. + If set to 0, no retries + will be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you + to specify whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + type: object + scmProvider: + description: SCMProviderGenerator defines a generator + that scrapes a SCMaaS API to find candidate + repos. + properties: + awsCodeCommit: + description: SCMProviderGeneratorAWSCodeCommit + defines connection info specific to AWS + CodeCommit. + properties: + allBranches: + description: Scan all branches instead + of just the default branch. + type: boolean + region: + description: Region provides the AWS region + to discover repos. if not provided, + AppSet controller will infer the current + region from environment. + type: string + role: + description: Role provides the AWS IAM + role to assume, for cross-account repo + discovery if not provided, AppSet controller + will use its pod/node identity to discover. + type: string + tagFilters: + description: TagFilters provides the tag + filter(s) for repo discovery + items: + description: TagFilter defines tags + to filter from + properties: + key: + type: string + value: + type: string + required: + - key + type: object + type: array + type: object + azureDevOps: + description: SCMProviderGeneratorAzureDevOps + defines connection info specific to Azure + DevOps. + properties: + accessTokenRef: + description: The Personal Access Token + (PAT) to use when connecting. Required. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + allBranches: + description: Scan all branches instead + of just the default branch. + type: boolean + api: + description: The URL to Azure DevOps. + If blank, use https://dev.azure.com. + type: string + organization: + description: Azure Devops organization. + Required. E.g. "my-organization". + type: string + teamProject: + description: Azure Devops team project. + Required. E.g. "my-team". + type: string + required: + - accessTokenRef + - organization + - teamProject + type: object + bitbucket: + description: SCMProviderGeneratorBitbucket + defines connection info specific to Bitbucket + Cloud (API version 2). + properties: + allBranches: + description: Scan all branches instead + of just the main branch. + type: boolean + appPasswordRef: + description: 'The app password to use + for the user. Required. See: https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/' + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + owner: + description: Bitbucket workspace to scan. + Required. + type: string + user: + description: Bitbucket user to use when + authenticating. Should have a "member" + role to be able to read all repositories + and branches. Required + type: string + required: + - appPasswordRef + - owner + - user + type: object + bitbucketServer: + description: SCMProviderGeneratorBitbucketServer + defines connection info specific to Bitbucket + Server. + properties: + allBranches: + description: Scan all branches instead + of just the default branch. + type: boolean + api: + description: The Bitbucket Server REST + API URL to talk to. Required. + type: string + basicAuth: + description: Credentials for Basic auth + properties: + passwordRef: + description: Password (or personal + access token) reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + username: + description: Username for Basic auth + type: string + required: + - passwordRef + - username + type: object + project: + description: Project to scan. Required. + type: string + required: + - api + - project + type: object + cloneProtocol: + description: Which protocol to use for the + SCM URL. Default is provider-specific but + ssh if possible. Not all providers necessarily + support all protocols. + type: string + filters: + description: Filters for which repos should + be considered. + items: + description: SCMProviderGeneratorFilter + is a single repository filter. If multiple + filter types are set on a single struct, + they will be AND'd together. All filters + must pass for a repo to be included. + properties: + branchMatch: + description: A regex which must match + the branch name. + type: string + labelMatch: + description: A regex which must match + at least one label. + type: string + pathsDoNotExist: + description: An array of paths, all + of which must not exist. + items: + type: string + type: array + pathsExist: + description: An array of paths, all + of which must exist. + items: + type: string + type: array + repositoryMatch: + description: A regex for repo names. + type: string + type: object + type: array + gitea: + description: SCMProviderGeneratorGitea defines + a connection info specific to Gitea. + properties: + allBranches: + description: Scan all branches instead + of just the default branch. + type: boolean + api: + description: The Gitea URL to talk to. + For example https://gitea.mydomain.com/. + type: string + insecure: + description: 'Allow self-signed TLS / + Certificates; default: false' + type: boolean + owner: + description: Gitea organization or user + to scan. Required. + type: string + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - api + - owner + type: object + github: + description: Which provider to use and config + for it. + properties: + allBranches: + description: Scan all branches instead + of just the default branch. + type: boolean + api: + description: The GitHub API URL to talk + to. If blank, use https://api.github.com/. + type: string + appSecretName: + description: AppSecretName is a reference + to a GitHub App repo-creds secret. + type: string + organization: + description: GitHub org to scan. Required. + type: string + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - organization + type: object + gitlab: + description: SCMProviderGeneratorGitlab defines + connection info specific to Gitlab. + properties: + allBranches: + description: Scan all branches instead + of just the default branch. + type: boolean + api: + description: The Gitlab API URL to talk + to. + type: string + group: + description: Gitlab group to scan. Required. You + can use either the project id (recommended) + or the full namespaced path. + type: string + includeSubgroups: + description: Recurse through subgroups + (true) or scan only the base group (false). Defaults + to "false" + type: boolean + insecure: + description: 'Skips validating the SCM + provider''s TLS certificate - useful + for self-signed certificates.; default: + false' + type: boolean + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - group + type: object + requeueAfterSeconds: + description: Standard parameters. + format: int64 + type: integer + template: + description: ApplicationSetTemplate represents + argocd ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta + represents the Argo CD application fields + that may be used for Applications generated + from the ApplicationSet (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the + desired state of an ArgoCD Git Application + properties: + destination: + description: Destination is a reference + to the target Kubernetes server + and namespace + properties: + name: + description: Name is an alternate + way of specifying the target + cluster by its symbolic name + type: string + nameRef: + description: NameRef is a reference + to a Cluster used to set Name + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a + reference to a Cluster used + to set Name + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies + the target namespace for the + application's resources. The + namespace will only be set for + namespace-scoped resources that + have not set a value for .metadata.namespace + type: string + server: + description: Server specifies + the URL of the target cluster + and must be set to the Kubernetes + control plane API + type: string + serverRef: + description: ServerRef is a reference + to an Cluster used to set Server + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for + referencing. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector + selects references to Repositories + used to set SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef + ensures an object with the + same controller reference + as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures + an object with matching + labels is selected. + type: object + policy: + description: Policies for + selection. + properties: + resolution: + default: Required + description: Resolution + specifies whether resolution + of this reference is + required. The default + is 'Required', which + means the reconcile + will fail if the reference + cannot be resolved. + 'Optional' means this + reference will be a + no-op if it cannot be + resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies + when this reference + should be resolved. + The default is 'IfNotPresent', + which will attempt to + resolve the reference + only when the corresponding + field is not present. + Use 'Always' to resolve + the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is + a list of resources and their fields + which should be ignored during comparison + items: + description: ResourceIgnoreDifferences + contains resource filter and list + of json paths which should be + ignored during comparison with + live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers + is a list of trusted managers. + Fields mutated by those managers + will take precedence over + the desired state defined + in the SCM and won't be displayed + in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list + of information (URLs, email addresses, + and plain text) that relates to + the application + items: + description: Info is a list of informational + items for this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference + to the project this application + belongs to. The empty string means + that application belongs to the + 'default' project. + type: string + revisionHistoryLimit: + description: 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. This should + only be changed in exceptional circumstances. + Setting to zero will store no history. + This will reduce storage used. Increasing + will increase the space used to + store the history, so we do not + recommend increasing it. Default + is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains + all required information about the + source of an application + properties: + chart: + description: Chart is a Helm chart + name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded from + being used during manifest + generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars is + a list of Jsonnet External + Variables + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is a + list of Jsonnet Top-level + Arguments + items: + description: JsonnetVar + represents a variable + to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific + options + properties: + fileParameters: + description: FileParameters + are file parameters to the + helm template + items: + description: HelmFileParameter + is a file parameter that's + passed to helm template + during manifest generation + properties: + name: + description: Name is + the name of the Helm + parameter + type: string + path: + description: Path is + the path to the file + containing the values + for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from + failing when valueFiles + do not exist locally by + not appending them to helm + template --values + type: boolean + parameters: + description: Parameters is + a list of Helm parameters + which are passed to the + helm template command upon + manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to interpret + booleans and numbers + as strings + type: boolean + name: + description: Name is + the name of the Helm + parameter + type: string + value: + description: Value is + the value for the + Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is + the Helm release name to + use. If omitted it will + use the application name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is + a list of Helm value files + to use when generating a + template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values to + be passed to helm template, + defined as a map. This takes + precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the + Helm version to use for + templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize + specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to rendered + manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels to + resources for Kustomize + apps + type: boolean + images: + description: Images is a list + of Kustomize image override + specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in the + format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is + a prefix appended to resources + for Kustomize apps + type: string + nameSuffix: + description: NameSuffix is + a suffix appended to resources + for Kustomize apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is a + list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name of + Deployment or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry represents + an entry in the application's + environment + properties: + name: + description: Name is + the name of the variable, + usually expressed + in uppercase + type: string + value: + description: Value is + the value of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config + management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management parameters + properties: + array: + description: Array is + the value of an array + type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name is + the name identifying + a parameter. + type: string + string: + description: String_ + is the value of a + string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not be + used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL + to the repository (Git or Helm) + that contains the application + manifests + type: string + targetRevision: + description: TargetRevision defines + the revision of the source to + sync the application to. In + case of Git, this can be commit, + tag, or branch. If omitted, + will equal to HEAD. In case + of Helm, this is a semver tag + for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference + to the location of the application's + manifests or chart + items: + description: ApplicationSource contains + all required information about + the source of an application + properties: + chart: + description: Chart is a Helm + chart name, and must be specified + for applications sourced from + a Helm repo. + type: string + directory: + description: Directory holds + path/directory specific options + properties: + exclude: + description: Exclude contains + a glob pattern to match + paths against that should + be explicitly excluded + from being used during + manifest generation + type: string + include: + description: Include contains + a glob pattern to match + paths against that should + be explicitly included + during manifest generation + type: string + jsonnet: + description: Jsonnet holds + options specific to Jsonnet + properties: + extVars: + description: ExtVars + is a list of Jsonnet + External Variables + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional + library search dirs + items: + type: string + type: array + tlas: + description: TLAS is + a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar + represents a variable + to be passed to + jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies + whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm + specific options + properties: + fileParameters: + description: FileParameters + are file parameters to + the helm template + items: + description: HelmFileParameter + is a file parameter + that's passed to helm + template during manifest + generation + properties: + name: + description: Name + is the name of the + Helm parameter + type: string + path: + description: Path + is the path to the + file containing + the values for the + Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template + from failing when valueFiles + do not exist locally by + not appending them to + helm template --values + type: boolean + parameters: + description: Parameters + is a list of Helm parameters + which are passed to the + helm template command + upon manifest generation + items: + description: HelmParameter + is a parameter that's + passed to helm template + during manifest generation + properties: + forceString: + description: ForceString + determines whether + to tell Helm to + interpret booleans + and numbers as strings + type: boolean + name: + description: Name + is the name of the + Helm parameter + type: string + value: + description: Value + is the value for + the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials + pass credentials to all + domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName + is the Helm release name + to use. If omitted it + will use the application + name + type: string + skipCrds: + description: SkipCrds skips + custom resource definition + installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles + is a list of Helm value + files to use when generating + a template + items: + type: string + type: array + values: + description: Values specifies + Helm values to be passed + to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject + specifies Helm values + to be passed to helm template, + defined as a map. This + takes precedence over + Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is + the Helm version to use + for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds + kustomize specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations + is a list of additional + annotations to add to + rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply + env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels + is a list of additional + labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force + applying common annotations + to resources for Kustomize + apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels + specifies whether to force + applying common labels + to resources for Kustomize + apps + type: boolean + images: + description: Images is a + list of Kustomize image + override specifications + items: + description: KustomizeImage + represents a Kustomize + image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix + is a prefix appended to + resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix + is a suffix appended to + resources for Kustomize + apps + type: string + namespace: + description: Namespace sets + the namespace that Kustomize + adds to all resources + type: string + replicas: + description: Replicas is + a list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica + override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number + of replicas + x-kubernetes-int-or-string: true + name: + description: Name + of Deployment or + StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls + which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory + path within the Git repository, + and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config + management plugin specific + options + properties: + env: + description: Env holds options + specific to config management + plugins + items: + description: EnvEntry + represents an entry + in the application's + environment + properties: + name: + description: Name + is the name of the + variable, usually + expressed in uppercase + type: string + value: + description: Value + is the value of + the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific + config management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific + to config management + parameters + properties: + array: + description: Array + is the value of + an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is + the value of a map + type parameter. + type: object + name: + description: Name + is the name identifying + a parameter. + type: string + string: + description: String_ + is the value of + a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference + to another source within sources + field. This field will not + be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the + URL to the repository (Git + or Helm) that contains the + application manifests + type: string + targetRevision: + description: TargetRevision + defines the revision of the + source to sync the application + to. In case of Git, this can + be commit, tag, or branch. + If omitted, will equal to + HEAD. In case of Helm, this + is a semver tag for the Chart's + version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when + and how a sync will be performed + properties: + automated: + description: Automated will keep + an application synced to the + target revision + properties: + allowEmpty: + description: 'AllowEmpty allows + apps have zero live resources + (default: false)' + type: boolean + prune: + description: 'Prune specifies + whether to delete resources + from the cluster that are + not found in the sources + anymore as part of automated + sync (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes + whether to revert resources + back to their desired state + upon modification in the + cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata + controls metadata in the given + namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed + sync retry behavior + properties: + backoff: + description: Backoff controls + how to backoff on subsequent + retries of failed syncs + properties: + duration: + description: Duration + is the amount to back + off. Default unit is + seconds, but could also + be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is + a factor to multiply + the base duration after + each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration + is the maximum amount + of time allowed for + the backoff strategy + type: string + type: object + limit: + description: Limit is the + maximum number of attempts + for retrying a failed sync. + If set to 0, no retries + will be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you + to specify whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + values: + additionalProperties: + type: string + description: Values contains key/value pairs + which are passed directly as parameters + to the template + type: object + type: object + selector: + description: Selector allows to post-filter all + generator. + properties: + matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + type: object + type: array + mergeKeys: + items: + type: string + type: array + template: + description: ApplicationSetTemplate represents argocd + ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta represents + the Argo CD application fields that may be used + for Applications generated from the ApplicationSet + (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the desired + state of an ArgoCD Git Application + properties: + destination: + description: Destination is a reference to the + target Kubernetes server and namespace + properties: + name: + description: Name is an alternate way of + specifying the target cluster by its symbolic + name + type: string + nameRef: + description: NameRef is a reference to a + Cluster used to set Name + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a reference + to a Cluster used to set Name + properties: + matchControllerRef: + description: MatchControllerRef ensures + an object with the same controller + reference as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an + object with matching labels is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies the target + namespace for the application's resources. + The namespace will only be set for namespace-scoped + resources that have not set a value for + .metadata.namespace + type: string + server: + description: Server specifies the URL of + the target cluster and must be set to + the Kubernetes control plane API + type: string + serverRef: + description: ServerRef is a reference to + an Cluster used to set Server + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector selects + references to Repositories used to set + SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef ensures + an object with the same controller + reference as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an + object with matching labels is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is a list of + resources and their fields which should be + ignored during comparison + items: + description: ResourceIgnoreDifferences contains + resource filter and list of json paths which + should be ignored during comparison with + live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers is + a list of trusted managers. Fields mutated + by those managers will take precedence + over the desired state defined in the + SCM and won't be displayed in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list of information + (URLs, email addresses, and plain text) that + relates to the application + items: + description: Info is a list of informational + items for this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference to the project + this application belongs to. The empty string + means that application belongs to the 'default' + project. + type: string + revisionHistoryLimit: + description: 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. This should only be changed in exceptional + circumstances. Setting to zero will store + no history. This will reduce storage used. + Increasing will increase the space used to + store the history, so we do not recommend + increasing it. Default is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains all + required information about the source of an + application + properties: + chart: + description: Chart is a Helm chart name, + and must be specified for applications + sourced from a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains a glob + pattern to match paths against that + should be explicitly excluded from + being used during manifest generation + type: string + include: + description: Include contains a glob + pattern to match paths against that + should be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds options specific + to Jsonnet + properties: + extVars: + description: ExtVars is a list of + Jsonnet External Variables + items: + description: JsonnetVar represents + a variable to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library + search dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar represents + a variable to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies whether + to scan a directory recursively for + manifests + type: boolean + type: object + helm: + description: Helm holds helm specific options + properties: + fileParameters: + description: FileParameters are file + parameters to the helm template + items: + description: HelmFileParameter is + a file parameter that's passed to + helm template during manifest generation + properties: + name: + description: Name is the name + of the Helm parameter + type: string + path: + description: Path is the path + to the file containing the values + for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from failing + when valueFiles do not exist locally + by not appending them to helm template + --values + type: boolean + parameters: + description: Parameters is a list of + Helm parameters which are passed to + the helm template command upon manifest + generation + items: + description: HelmParameter is a parameter + that's passed to helm template during + manifest generation + properties: + forceString: + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings + type: boolean + name: + description: Name is the name + of the Helm parameter + type: string + value: + description: Value is the value + for the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials pass credentials + to all domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is the Helm + release name to use. If omitted it + will use the application name + type: string + skipCrds: + description: SkipCrds skips custom resource + definition installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is a list of + Helm value files to use when generating + a template + items: + type: string + type: array + values: + description: Values specifies Helm values + to be passed to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject specifies + Helm values to be passed to helm template, + defined as a map. This takes precedence + over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the Helm version + to use for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize specific + options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations is a + list of additional annotations to + add to rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply env variables + substitution for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels is a list + of additional labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force applying + common annotations to resources for + Kustomize apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels specifies + whether to force applying common labels + to resources for Kustomize apps + type: boolean + images: + description: Images is a list of Kustomize + image override specifications + items: + description: KustomizeImage represents + a Kustomize image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix + appended to resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix is a suffix + appended to resources for Kustomize + apps + type: string + namespace: + description: Namespace sets the namespace + that Kustomize adds to all resources + type: string + replicas: + description: Replicas is a list of Kustomize + Replicas override specifications + items: + description: KustomizeReplica override + specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number of replicas + x-kubernetes-int-or-string: true + name: + description: Name of Deployment + or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls which + version of Kustomize to use for rendering + manifests + type: string + type: object + path: + description: Path is a directory path within + the Git repository, and is only valid + for applications sourced from Git. + type: string + plugin: + description: Plugin holds config management + plugin specific options + properties: + env: + description: Env holds options specific + to config management plugins + items: + description: EnvEntry represents an + entry in the application's environment + properties: + name: + description: Name is the name + of the variable, usually expressed + in uppercase + type: string + value: + description: Value is the value + of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config management + parameters + items: + description: ApplicationSourcePluginParameter + holds options specific to config + management parameters + properties: + array: + description: Array is the value + of an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is the value + of a map type parameter. + type: object + name: + description: Name is the name + identifying a parameter. + type: string + string: + description: String_ is the value + of a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference to another + source within sources field. This field + will not be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL to the repository + (Git or Helm) that contains the application + manifests + type: string + targetRevision: + description: TargetRevision defines the + revision of the source to sync the application + to. In case of Git, this can be commit, + tag, or branch. If omitted, will equal + to HEAD. In case of Helm, this is a semver + tag for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference to the location + of the application's manifests or chart + items: + description: ApplicationSource contains all + required information about the source of + an application + properties: + chart: + description: Chart is a Helm chart name, + and must be specified for applications + sourced from a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains a glob + pattern to match paths against that + should be explicitly excluded from + being used during manifest generation + type: string + include: + description: Include contains a glob + pattern to match paths against that + should be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds options + specific to Jsonnet + properties: + extVars: + description: ExtVars is a list + of Jsonnet External Variables + items: + description: JsonnetVar represents + a variable to be passed to + jsonnet during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library + search dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of + Jsonnet Top-level Arguments + items: + description: JsonnetVar represents + a variable to be passed to + jsonnet during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies whether + to scan a directory recursively + for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific + options + properties: + fileParameters: + description: FileParameters are file + parameters to the helm template + items: + description: HelmFileParameter is + a file parameter that's passed + to helm template during manifest + generation + properties: + name: + description: Name is the name + of the Helm parameter + type: string + path: + description: Path is the path + to the file containing the + values for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from failing + when valueFiles do not exist locally + by not appending them to helm template + --values + type: boolean + parameters: + description: Parameters is a list + of Helm parameters which are passed + to the helm template command upon + manifest generation + items: + description: HelmParameter is a + parameter that's passed to helm + template during manifest generation + properties: + forceString: + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings + type: boolean + name: + description: Name is the name + of the Helm parameter + type: string + value: + description: Value is the value + for the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials pass + credentials to all domains (Helm's + --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is the Helm + release name to use. If omitted + it will use the application name + type: string + skipCrds: + description: SkipCrds skips custom + resource definition installation + step (Helm's --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is a list + of Helm value files to use when + generating a template + items: + type: string + type: array + values: + description: Values specifies Helm + values to be passed to helm template, + typically defined as a block + type: string + valuesObject: + description: ValuesObject specifies + Helm values to be passed to helm + template, defined as a map. This + takes precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the Helm version + to use for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize + specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations is + a list of additional annotations + to add to rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply env variables + substitution for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels is a list + of additional labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force applying + common annotations to resources + for Kustomize apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels specifies + whether to force applying common + labels to resources for Kustomize + apps + type: boolean + images: + description: Images is a list of Kustomize + image override specifications + items: + description: KustomizeImage represents + a Kustomize image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix + appended to resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix is a suffix + appended to resources for Kustomize + apps + type: string + namespace: + description: Namespace sets the namespace + that Kustomize adds to all resources + type: string + replicas: + description: Replicas is a list of + Kustomize Replicas override specifications + items: + description: KustomizeReplica override + specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number of replicas + x-kubernetes-int-or-string: true + name: + description: Name of Deployment + or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls which + version of Kustomize to use for + rendering manifests + type: string + type: object + path: + description: Path is a directory path + within the Git repository, and is only + valid for applications sourced from + Git. + type: string + plugin: + description: Plugin holds config management + plugin specific options + properties: + env: + description: Env holds options specific + to config management plugins + items: + description: EnvEntry represents + an entry in the application's + environment + properties: + name: + description: Name is the name + of the variable, usually expressed + in uppercase + type: string + value: + description: Value is the value + of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config management + parameters + items: + description: ApplicationSourcePluginParameter + holds options specific to config + management parameters + properties: + array: + description: Array is the value + of an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is the value + of a map type parameter. + type: object + name: + description: Name is the name + identifying a parameter. + type: string + string: + description: String_ is the + value of a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference to another + source within sources field. This field + will not be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL to the + repository (Git or Helm) that contains + the application manifests + type: string + targetRevision: + description: TargetRevision defines the + revision of the source to sync the application + to. In case of Git, this can be commit, + tag, or branch. If omitted, will equal + to HEAD. In case of Helm, this is a + semver tag for the Chart's version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when and how + a sync will be performed + properties: + automated: + description: Automated will keep an application + synced to the target revision + properties: + allowEmpty: + description: 'AllowEmpty allows apps + have zero live resources (default: + false)' + type: boolean + prune: + description: 'Prune specifies whether + to delete resources from the cluster + that are not found in the sources + anymore as part of automated sync + (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes whether + to revert resources back to their + desired state upon modification in + the cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata controls + metadata in the given namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed sync + retry behavior + properties: + backoff: + description: Backoff controls how to + backoff on subsequent retries of failed + syncs + properties: + duration: + description: Duration is the amount + to back off. Default unit is seconds, + but could also be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is a factor + to multiply the base duration + after each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration is the + maximum amount of time allowed + for the backoff strategy + type: string + type: object + limit: + description: Limit is the maximum number + of attempts for retrying a failed + sync. If set to 0, no retries will + be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you to specify + whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + required: + - generators + - mergeKeys + type: object + plugin: + description: PluginGenerator defines connection info specific + to Plugin. + properties: + configMapRef: + description: PluginConfigMapRef defines a reference + to a ConfigMap containing a plugin. + properties: + name: + description: Name of the ConfigMap + type: string + required: + - name + type: object + input: + description: PluginInput defines the input to a plugin. + properties: + parameters: + additionalProperties: + x-kubernetes-preserve-unknown-fields: true + description: Parameters contains the information + to pass to the plugin. It is a map. The keys must + be strings, and the values can be any type. + type: object + type: object + requeueAfterSeconds: + description: RequeueAfterSeconds determines how long + the ApplicationSet controller will wait before reconciling + the ApplicationSet again. + format: int64 + type: integer + template: + description: ApplicationSetTemplate represents argocd + ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta represents + the Argo CD application fields that may be used + for Applications generated from the ApplicationSet + (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the desired + state of an ArgoCD Git Application + properties: + destination: + description: Destination is a reference to the + target Kubernetes server and namespace + properties: + name: + description: Name is an alternate way of + specifying the target cluster by its symbolic + name + type: string + nameRef: + description: NameRef is a reference to a + Cluster used to set Name + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a reference + to a Cluster used to set Name + properties: + matchControllerRef: + description: MatchControllerRef ensures + an object with the same controller + reference as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an + object with matching labels is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies the target + namespace for the application's resources. + The namespace will only be set for namespace-scoped + resources that have not set a value for + .metadata.namespace + type: string + server: + description: Server specifies the URL of + the target cluster and must be set to + the Kubernetes control plane API + type: string + serverRef: + description: ServerRef is a reference to + an Cluster used to set Server + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector selects + references to Repositories used to set + SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef ensures + an object with the same controller + reference as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an + object with matching labels is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is a list of + resources and their fields which should be + ignored during comparison + items: + description: ResourceIgnoreDifferences contains + resource filter and list of json paths which + should be ignored during comparison with + live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers is + a list of trusted managers. Fields mutated + by those managers will take precedence + over the desired state defined in the + SCM and won't be displayed in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list of information + (URLs, email addresses, and plain text) that + relates to the application + items: + description: Info is a list of informational + items for this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference to the project + this application belongs to. The empty string + means that application belongs to the 'default' + project. + type: string + revisionHistoryLimit: + description: 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. This should only be changed in exceptional + circumstances. Setting to zero will store + no history. This will reduce storage used. + Increasing will increase the space used to + store the history, so we do not recommend + increasing it. Default is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains all + required information about the source of an + application + properties: + chart: + description: Chart is a Helm chart name, + and must be specified for applications + sourced from a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains a glob + pattern to match paths against that + should be explicitly excluded from + being used during manifest generation + type: string + include: + description: Include contains a glob + pattern to match paths against that + should be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds options specific + to Jsonnet + properties: + extVars: + description: ExtVars is a list of + Jsonnet External Variables + items: + description: JsonnetVar represents + a variable to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library + search dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar represents + a variable to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies whether + to scan a directory recursively for + manifests + type: boolean + type: object + helm: + description: Helm holds helm specific options + properties: + fileParameters: + description: FileParameters are file + parameters to the helm template + items: + description: HelmFileParameter is + a file parameter that's passed to + helm template during manifest generation + properties: + name: + description: Name is the name + of the Helm parameter + type: string + path: + description: Path is the path + to the file containing the values + for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from failing + when valueFiles do not exist locally + by not appending them to helm template + --values + type: boolean + parameters: + description: Parameters is a list of + Helm parameters which are passed to + the helm template command upon manifest + generation + items: + description: HelmParameter is a parameter + that's passed to helm template during + manifest generation + properties: + forceString: + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings + type: boolean + name: + description: Name is the name + of the Helm parameter + type: string + value: + description: Value is the value + for the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials pass credentials + to all domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is the Helm + release name to use. If omitted it + will use the application name + type: string + skipCrds: + description: SkipCrds skips custom resource + definition installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is a list of + Helm value files to use when generating + a template + items: + type: string + type: array + values: + description: Values specifies Helm values + to be passed to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject specifies + Helm values to be passed to helm template, + defined as a map. This takes precedence + over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the Helm version + to use for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize specific + options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations is a + list of additional annotations to + add to rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply env variables + substitution for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels is a list + of additional labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force applying + common annotations to resources for + Kustomize apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels specifies + whether to force applying common labels + to resources for Kustomize apps + type: boolean + images: + description: Images is a list of Kustomize + image override specifications + items: + description: KustomizeImage represents + a Kustomize image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix + appended to resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix is a suffix + appended to resources for Kustomize + apps + type: string + namespace: + description: Namespace sets the namespace + that Kustomize adds to all resources + type: string + replicas: + description: Replicas is a list of Kustomize + Replicas override specifications + items: + description: KustomizeReplica override + specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number of replicas + x-kubernetes-int-or-string: true + name: + description: Name of Deployment + or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls which + version of Kustomize to use for rendering + manifests + type: string + type: object + path: + description: Path is a directory path within + the Git repository, and is only valid + for applications sourced from Git. + type: string + plugin: + description: Plugin holds config management + plugin specific options + properties: + env: + description: Env holds options specific + to config management plugins + items: + description: EnvEntry represents an + entry in the application's environment + properties: + name: + description: Name is the name + of the variable, usually expressed + in uppercase + type: string + value: + description: Value is the value + of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config management + parameters + items: + description: ApplicationSourcePluginParameter + holds options specific to config + management parameters + properties: + array: + description: Array is the value + of an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is the value + of a map type parameter. + type: object + name: + description: Name is the name + identifying a parameter. + type: string + string: + description: String_ is the value + of a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference to another + source within sources field. This field + will not be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL to the repository + (Git or Helm) that contains the application + manifests + type: string + targetRevision: + description: TargetRevision defines the + revision of the source to sync the application + to. In case of Git, this can be commit, + tag, or branch. If omitted, will equal + to HEAD. In case of Helm, this is a semver + tag for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference to the location + of the application's manifests or chart + items: + description: ApplicationSource contains all + required information about the source of + an application + properties: + chart: + description: Chart is a Helm chart name, + and must be specified for applications + sourced from a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains a glob + pattern to match paths against that + should be explicitly excluded from + being used during manifest generation + type: string + include: + description: Include contains a glob + pattern to match paths against that + should be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds options + specific to Jsonnet + properties: + extVars: + description: ExtVars is a list + of Jsonnet External Variables + items: + description: JsonnetVar represents + a variable to be passed to + jsonnet during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library + search dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of + Jsonnet Top-level Arguments + items: + description: JsonnetVar represents + a variable to be passed to + jsonnet during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies whether + to scan a directory recursively + for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific + options + properties: + fileParameters: + description: FileParameters are file + parameters to the helm template + items: + description: HelmFileParameter is + a file parameter that's passed + to helm template during manifest + generation + properties: + name: + description: Name is the name + of the Helm parameter + type: string + path: + description: Path is the path + to the file containing the + values for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from failing + when valueFiles do not exist locally + by not appending them to helm template + --values + type: boolean + parameters: + description: Parameters is a list + of Helm parameters which are passed + to the helm template command upon + manifest generation + items: + description: HelmParameter is a + parameter that's passed to helm + template during manifest generation + properties: + forceString: + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings + type: boolean + name: + description: Name is the name + of the Helm parameter + type: string + value: + description: Value is the value + for the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials pass + credentials to all domains (Helm's + --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is the Helm + release name to use. If omitted + it will use the application name + type: string + skipCrds: + description: SkipCrds skips custom + resource definition installation + step (Helm's --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is a list + of Helm value files to use when + generating a template + items: + type: string + type: array + values: + description: Values specifies Helm + values to be passed to helm template, + typically defined as a block + type: string + valuesObject: + description: ValuesObject specifies + Helm values to be passed to helm + template, defined as a map. This + takes precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the Helm version + to use for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize + specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations is + a list of additional annotations + to add to rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply env variables + substitution for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels is a list + of additional labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force applying + common annotations to resources + for Kustomize apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels specifies + whether to force applying common + labels to resources for Kustomize + apps + type: boolean + images: + description: Images is a list of Kustomize + image override specifications + items: + description: KustomizeImage represents + a Kustomize image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix + appended to resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix is a suffix + appended to resources for Kustomize + apps + type: string + namespace: + description: Namespace sets the namespace + that Kustomize adds to all resources + type: string + replicas: + description: Replicas is a list of + Kustomize Replicas override specifications + items: + description: KustomizeReplica override + specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number of replicas + x-kubernetes-int-or-string: true + name: + description: Name of Deployment + or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls which + version of Kustomize to use for + rendering manifests + type: string + type: object + path: + description: Path is a directory path + within the Git repository, and is only + valid for applications sourced from + Git. + type: string + plugin: + description: Plugin holds config management + plugin specific options + properties: + env: + description: Env holds options specific + to config management plugins + items: + description: EnvEntry represents + an entry in the application's + environment + properties: + name: + description: Name is the name + of the variable, usually expressed + in uppercase + type: string + value: + description: Value is the value + of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config management + parameters + items: + description: ApplicationSourcePluginParameter + holds options specific to config + management parameters + properties: + array: + description: Array is the value + of an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is the value + of a map type parameter. + type: object + name: + description: Name is the name + identifying a parameter. + type: string + string: + description: String_ is the + value of a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference to another + source within sources field. This field + will not be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL to the + repository (Git or Helm) that contains + the application manifests + type: string + targetRevision: + description: TargetRevision defines the + revision of the source to sync the application + to. In case of Git, this can be commit, + tag, or branch. If omitted, will equal + to HEAD. In case of Helm, this is a + semver tag for the Chart's version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when and how + a sync will be performed + properties: + automated: + description: Automated will keep an application + synced to the target revision + properties: + allowEmpty: + description: 'AllowEmpty allows apps + have zero live resources (default: + false)' + type: boolean + prune: + description: 'Prune specifies whether + to delete resources from the cluster + that are not found in the sources + anymore as part of automated sync + (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes whether + to revert resources back to their + desired state upon modification in + the cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata controls + metadata in the given namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed sync + retry behavior + properties: + backoff: + description: Backoff controls how to + backoff on subsequent retries of failed + syncs + properties: + duration: + description: Duration is the amount + to back off. Default unit is seconds, + but could also be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is a factor + to multiply the base duration + after each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration is the + maximum amount of time allowed + for the backoff strategy + type: string + type: object + limit: + description: Limit is the maximum number + of attempts for retrying a failed + sync. If set to 0, no retries will + be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you to specify + whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + values: + additionalProperties: + type: string + description: Values contains key/value pairs which are + passed directly as parameters to the template. These + values will not be sent as parameters to the plugin. + type: object + required: + - configMapRef + type: object + pullRequest: + description: PullRequestGenerator defines a generator that + scrapes a PullRequest API to find candidate pull requests. + properties: + azuredevops: + description: Additional provider to use and config for + it. + properties: + api: + description: The Azure DevOps API URL to talk to. + If blank, use https://dev.azure.com/. + type: string + labels: + description: Labels is used to filter the PRs that + you want to target + items: + type: string + type: array + organization: + description: Azure DevOps org to scan. Required. + type: string + project: + description: Azure DevOps project name to scan. + Required. + type: string + repo: + description: Azure DevOps repo name to scan. Required. + type: string + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - organization + - project + - repo + type: object + bitbucket: + description: PullRequestGeneratorBitbucket defines connection + info specific to Bitbucket. + properties: + api: + description: The Bitbucket REST API URL to talk + to. If blank, uses https://api.bitbucket.org/2.0. + type: string + basicAuth: + description: Credentials for Basic auth + properties: + passwordRef: + description: Password (or personal access token) + reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + username: + description: Username for Basic auth + type: string + required: + - passwordRef + - username + type: object + bearerToken: + description: Credentials for AppToken (Bearer auth) + properties: + tokenRef: + description: Password (or personal access token) + reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - tokenRef + type: object + owner: + description: Workspace to scan. Required. + type: string + repo: + description: Repo name to scan. Required. + type: string + required: + - owner + - repo + type: object + bitbucketServer: + description: PullRequestGeneratorBitbucketServer defines + connection info specific to BitbucketServer. + properties: + api: + description: The Bitbucket REST API URL to talk + to e.g. https://bitbucket.org/rest Required. + type: string + basicAuth: + description: Credentials for Basic auth + properties: + passwordRef: + description: Password (or personal access token) + reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + username: + description: Username for Basic auth + type: string + required: + - passwordRef + - username + type: object + project: + description: Project to scan. Required. + type: string + repo: + description: Repo name to scan. Required. + type: string + required: + - api + - project + - repo + type: object + filters: + description: Filters for which pull requests should + be considered. + items: + description: PullRequestGeneratorFilter is a single + pull request filter. If multiple filter types are + set on a single struct, they will be AND'd together. + All filters must pass for a pull request to be included. + properties: + branchMatch: + type: string + targetBranchMatch: + type: string + type: object + type: array + gitea: + description: PullRequestGeneratorGitea defines connection + info specific to Gitea. + properties: + api: + description: The Gitea API URL to talk to. Required + type: string + insecure: + description: 'Allow insecure tls, for self-signed + certificates; default: false.' + type: boolean + owner: + description: Gitea org or user to scan. Required. + type: string + repo: + description: Gitea repo name to scan. Required. + type: string + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - api + - owner + - repo + type: object + github: + description: Which provider to use and config for it. + properties: + api: + description: The GitHub API URL to talk to. If blank, + use https://api.github.com/. + type: string + appSecretName: + description: AppSecretName is a reference to a GitHub + App repo-creds secret with permission to access + pull requests. + type: string + labels: + description: Labels is used to filter the PRs that + you want to target + items: + type: string + type: array + owner: + description: GitHub org or user to scan. Required. + type: string + repo: + description: GitHub repo name to scan. Required. + type: string + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - owner + - repo + type: object + gitlab: + description: PullRequestGeneratorGitLab defines connection + info specific to GitLab. + properties: + api: + description: The GitLab API URL to talk to. If blank, + uses https://gitlab.com/. + type: string + insecure: + description: 'Skips validating the SCM provider''s + TLS certificate - useful for self-signed certificates.; + default: false' + type: boolean + labels: + description: Labels is used to filter the MRs that + you want to target + items: + type: string + type: array + project: + description: GitLab project to scan. Required. + type: string + pullRequestState: + description: 'PullRequestState is an additional + MRs filter to get only those with a certain state. + Default: "" (all states)' + type: string + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - project + type: object + requeueAfterSeconds: + description: Standard parameters. + format: int64 + type: integer + template: + description: ApplicationSetTemplate represents argocd + ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta represents + the Argo CD application fields that may be used + for Applications generated from the ApplicationSet + (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the desired + state of an ArgoCD Git Application + properties: + destination: + description: Destination is a reference to the + target Kubernetes server and namespace + properties: + name: + description: Name is an alternate way of + specifying the target cluster by its symbolic + name + type: string + nameRef: + description: NameRef is a reference to a + Cluster used to set Name + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a reference + to a Cluster used to set Name + properties: + matchControllerRef: + description: MatchControllerRef ensures + an object with the same controller + reference as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an + object with matching labels is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies the target + namespace for the application's resources. + The namespace will only be set for namespace-scoped + resources that have not set a value for + .metadata.namespace + type: string + server: + description: Server specifies the URL of + the target cluster and must be set to + the Kubernetes control plane API + type: string + serverRef: + description: ServerRef is a reference to + an Cluster used to set Server + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector selects + references to Repositories used to set + SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef ensures + an object with the same controller + reference as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an + object with matching labels is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is a list of + resources and their fields which should be + ignored during comparison + items: + description: ResourceIgnoreDifferences contains + resource filter and list of json paths which + should be ignored during comparison with + live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers is + a list of trusted managers. Fields mutated + by those managers will take precedence + over the desired state defined in the + SCM and won't be displayed in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list of information + (URLs, email addresses, and plain text) that + relates to the application + items: + description: Info is a list of informational + items for this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference to the project + this application belongs to. The empty string + means that application belongs to the 'default' + project. + type: string + revisionHistoryLimit: + description: 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. This should only be changed in exceptional + circumstances. Setting to zero will store + no history. This will reduce storage used. + Increasing will increase the space used to + store the history, so we do not recommend + increasing it. Default is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains all + required information about the source of an + application + properties: + chart: + description: Chart is a Helm chart name, + and must be specified for applications + sourced from a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains a glob + pattern to match paths against that + should be explicitly excluded from + being used during manifest generation + type: string + include: + description: Include contains a glob + pattern to match paths against that + should be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds options specific + to Jsonnet + properties: + extVars: + description: ExtVars is a list of + Jsonnet External Variables + items: + description: JsonnetVar represents + a variable to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library + search dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar represents + a variable to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies whether + to scan a directory recursively for + manifests + type: boolean + type: object + helm: + description: Helm holds helm specific options + properties: + fileParameters: + description: FileParameters are file + parameters to the helm template + items: + description: HelmFileParameter is + a file parameter that's passed to + helm template during manifest generation + properties: + name: + description: Name is the name + of the Helm parameter + type: string + path: + description: Path is the path + to the file containing the values + for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from failing + when valueFiles do not exist locally + by not appending them to helm template + --values + type: boolean + parameters: + description: Parameters is a list of + Helm parameters which are passed to + the helm template command upon manifest + generation + items: + description: HelmParameter is a parameter + that's passed to helm template during + manifest generation + properties: + forceString: + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings + type: boolean + name: + description: Name is the name + of the Helm parameter + type: string + value: + description: Value is the value + for the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials pass credentials + to all domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is the Helm + release name to use. If omitted it + will use the application name + type: string + skipCrds: + description: SkipCrds skips custom resource + definition installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is a list of + Helm value files to use when generating + a template + items: + type: string + type: array + values: + description: Values specifies Helm values + to be passed to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject specifies + Helm values to be passed to helm template, + defined as a map. This takes precedence + over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the Helm version + to use for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize specific + options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations is a + list of additional annotations to + add to rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply env variables + substitution for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels is a list + of additional labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force applying + common annotations to resources for + Kustomize apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels specifies + whether to force applying common labels + to resources for Kustomize apps + type: boolean + images: + description: Images is a list of Kustomize + image override specifications + items: + description: KustomizeImage represents + a Kustomize image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix + appended to resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix is a suffix + appended to resources for Kustomize + apps + type: string + namespace: + description: Namespace sets the namespace + that Kustomize adds to all resources + type: string + replicas: + description: Replicas is a list of Kustomize + Replicas override specifications + items: + description: KustomizeReplica override + specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number of replicas + x-kubernetes-int-or-string: true + name: + description: Name of Deployment + or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls which + version of Kustomize to use for rendering + manifests + type: string + type: object + path: + description: Path is a directory path within + the Git repository, and is only valid + for applications sourced from Git. + type: string + plugin: + description: Plugin holds config management + plugin specific options + properties: + env: + description: Env holds options specific + to config management plugins + items: + description: EnvEntry represents an + entry in the application's environment + properties: + name: + description: Name is the name + of the variable, usually expressed + in uppercase + type: string + value: + description: Value is the value + of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config management + parameters + items: + description: ApplicationSourcePluginParameter + holds options specific to config + management parameters + properties: + array: + description: Array is the value + of an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is the value + of a map type parameter. + type: object + name: + description: Name is the name + identifying a parameter. + type: string + string: + description: String_ is the value + of a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference to another + source within sources field. This field + will not be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL to the repository + (Git or Helm) that contains the application + manifests + type: string + targetRevision: + description: TargetRevision defines the + revision of the source to sync the application + to. In case of Git, this can be commit, + tag, or branch. If omitted, will equal + to HEAD. In case of Helm, this is a semver + tag for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference to the location + of the application's manifests or chart + items: + description: ApplicationSource contains all + required information about the source of + an application + properties: + chart: + description: Chart is a Helm chart name, + and must be specified for applications + sourced from a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains a glob + pattern to match paths against that + should be explicitly excluded from + being used during manifest generation + type: string + include: + description: Include contains a glob + pattern to match paths against that + should be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds options + specific to Jsonnet + properties: + extVars: + description: ExtVars is a list + of Jsonnet External Variables + items: + description: JsonnetVar represents + a variable to be passed to + jsonnet during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library + search dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of + Jsonnet Top-level Arguments + items: + description: JsonnetVar represents + a variable to be passed to + jsonnet during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies whether + to scan a directory recursively + for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific + options + properties: + fileParameters: + description: FileParameters are file + parameters to the helm template + items: + description: HelmFileParameter is + a file parameter that's passed + to helm template during manifest + generation + properties: + name: + description: Name is the name + of the Helm parameter + type: string + path: + description: Path is the path + to the file containing the + values for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from failing + when valueFiles do not exist locally + by not appending them to helm template + --values + type: boolean + parameters: + description: Parameters is a list + of Helm parameters which are passed + to the helm template command upon + manifest generation + items: + description: HelmParameter is a + parameter that's passed to helm + template during manifest generation + properties: + forceString: + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings + type: boolean + name: + description: Name is the name + of the Helm parameter + type: string + value: + description: Value is the value + for the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials pass + credentials to all domains (Helm's + --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is the Helm + release name to use. If omitted + it will use the application name + type: string + skipCrds: + description: SkipCrds skips custom + resource definition installation + step (Helm's --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is a list + of Helm value files to use when + generating a template + items: + type: string + type: array + values: + description: Values specifies Helm + values to be passed to helm template, + typically defined as a block + type: string + valuesObject: + description: ValuesObject specifies + Helm values to be passed to helm + template, defined as a map. This + takes precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the Helm version + to use for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize + specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations is + a list of additional annotations + to add to rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply env variables + substitution for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels is a list + of additional labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force applying + common annotations to resources + for Kustomize apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels specifies + whether to force applying common + labels to resources for Kustomize + apps + type: boolean + images: + description: Images is a list of Kustomize + image override specifications + items: + description: KustomizeImage represents + a Kustomize image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix + appended to resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix is a suffix + appended to resources for Kustomize + apps + type: string + namespace: + description: Namespace sets the namespace + that Kustomize adds to all resources + type: string + replicas: + description: Replicas is a list of + Kustomize Replicas override specifications + items: + description: KustomizeReplica override + specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number of replicas + x-kubernetes-int-or-string: true + name: + description: Name of Deployment + or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls which + version of Kustomize to use for + rendering manifests + type: string + type: object + path: + description: Path is a directory path + within the Git repository, and is only + valid for applications sourced from + Git. + type: string + plugin: + description: Plugin holds config management + plugin specific options + properties: + env: + description: Env holds options specific + to config management plugins + items: + description: EnvEntry represents + an entry in the application's + environment + properties: + name: + description: Name is the name + of the variable, usually expressed + in uppercase + type: string + value: + description: Value is the value + of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config management + parameters + items: + description: ApplicationSourcePluginParameter + holds options specific to config + management parameters + properties: + array: + description: Array is the value + of an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is the value + of a map type parameter. + type: object + name: + description: Name is the name + identifying a parameter. + type: string + string: + description: String_ is the + value of a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference to another + source within sources field. This field + will not be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL to the + repository (Git or Helm) that contains + the application manifests + type: string + targetRevision: + description: TargetRevision defines the + revision of the source to sync the application + to. In case of Git, this can be commit, + tag, or branch. If omitted, will equal + to HEAD. In case of Helm, this is a + semver tag for the Chart's version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when and how + a sync will be performed + properties: + automated: + description: Automated will keep an application + synced to the target revision + properties: + allowEmpty: + description: 'AllowEmpty allows apps + have zero live resources (default: + false)' + type: boolean + prune: + description: 'Prune specifies whether + to delete resources from the cluster + that are not found in the sources + anymore as part of automated sync + (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes whether + to revert resources back to their + desired state upon modification in + the cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata controls + metadata in the given namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed sync + retry behavior + properties: + backoff: + description: Backoff controls how to + backoff on subsequent retries of failed + syncs + properties: + duration: + description: Duration is the amount + to back off. Default unit is seconds, + but could also be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is a factor + to multiply the base duration + after each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration is the + maximum amount of time allowed + for the backoff strategy + type: string + type: object + limit: + description: Limit is the maximum number + of attempts for retrying a failed + sync. If set to 0, no retries will + be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you to specify + whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + type: object + scmProvider: + description: SCMProviderGenerator defines a generator that + scrapes a SCMaaS API to find candidate repos. + properties: + awsCodeCommit: + description: SCMProviderGeneratorAWSCodeCommit defines + connection info specific to AWS CodeCommit. + properties: + allBranches: + description: Scan all branches instead of just the + default branch. + type: boolean + region: + description: Region provides the AWS region to discover + repos. if not provided, AppSet controller will + infer the current region from environment. + type: string + role: + description: Role provides the AWS IAM role to assume, + for cross-account repo discovery if not provided, + AppSet controller will use its pod/node identity + to discover. + type: string + tagFilters: + description: TagFilters provides the tag filter(s) + for repo discovery + items: + description: TagFilter defines tags to filter + from + properties: + key: + type: string + value: + type: string + required: + - key + type: object + type: array + type: object + azureDevOps: + description: SCMProviderGeneratorAzureDevOps defines + connection info specific to Azure DevOps. + properties: + accessTokenRef: + description: The Personal Access Token (PAT) to + use when connecting. Required. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + allBranches: + description: Scan all branches instead of just the + default branch. + type: boolean + api: + description: The URL to Azure DevOps. If blank, + use https://dev.azure.com. + type: string + organization: + description: Azure Devops organization. Required. + E.g. "my-organization". + type: string + teamProject: + description: Azure Devops team project. Required. + E.g. "my-team". + type: string + required: + - accessTokenRef + - organization + - teamProject + type: object + bitbucket: + description: SCMProviderGeneratorBitbucket defines connection + info specific to Bitbucket Cloud (API version 2). + properties: + allBranches: + description: Scan all branches instead of just the + main branch. + type: boolean + appPasswordRef: + description: 'The app password to use for the user. Required. + See: https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/' + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + owner: + description: Bitbucket workspace to scan. Required. + type: string + user: + description: Bitbucket user to use when authenticating. Should + have a "member" role to be able to read all repositories + and branches. Required + type: string + required: + - appPasswordRef + - owner + - user + type: object + bitbucketServer: + description: SCMProviderGeneratorBitbucketServer defines + connection info specific to Bitbucket Server. + properties: + allBranches: + description: Scan all branches instead of just the + default branch. + type: boolean + api: + description: The Bitbucket Server REST API URL to + talk to. Required. + type: string + basicAuth: + description: Credentials for Basic auth + properties: + passwordRef: + description: Password (or personal access token) + reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + username: + description: Username for Basic auth + type: string + required: + - passwordRef + - username + type: object + project: + description: Project to scan. Required. + type: string + required: + - api + - project + type: object + cloneProtocol: + description: Which protocol to use for the SCM URL. + Default is provider-specific but ssh if possible. + Not all providers necessarily support all protocols. + type: string + filters: + description: Filters for which repos should be considered. + items: + description: SCMProviderGeneratorFilter is a single + repository filter. If multiple filter types are + set on a single struct, they will be AND'd together. + All filters must pass for a repo to be included. + properties: + branchMatch: + description: A regex which must match the branch + name. + type: string + labelMatch: + description: A regex which must match at least + one label. + type: string + pathsDoNotExist: + description: An array of paths, all of which must + not exist. + items: + type: string + type: array + pathsExist: + description: An array of paths, all of which must + exist. + items: + type: string + type: array + repositoryMatch: + description: A regex for repo names. + type: string + type: object + type: array + gitea: + description: SCMProviderGeneratorGitea defines a connection + info specific to Gitea. + properties: + allBranches: + description: Scan all branches instead of just the + default branch. + type: boolean + api: + description: The Gitea URL to talk to. For example + https://gitea.mydomain.com/. + type: string + insecure: + description: 'Allow self-signed TLS / Certificates; + default: false' + type: boolean + owner: + description: Gitea organization or user to scan. + Required. + type: string + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - api + - owner + type: object + github: + description: Which provider to use and config for it. + properties: + allBranches: + description: Scan all branches instead of just the + default branch. + type: boolean + api: + description: The GitHub API URL to talk to. If blank, + use https://api.github.com/. + type: string + appSecretName: + description: AppSecretName is a reference to a GitHub + App repo-creds secret. + type: string + organization: + description: GitHub org to scan. Required. + type: string + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - organization + type: object + gitlab: + description: SCMProviderGeneratorGitlab defines connection + info specific to Gitlab. + properties: + allBranches: + description: Scan all branches instead of just the + default branch. + type: boolean + api: + description: The Gitlab API URL to talk to. + type: string + group: + description: Gitlab group to scan. Required. You + can use either the project id (recommended) or + the full namespaced path. + type: string + includeSubgroups: + description: Recurse through subgroups (true) or + scan only the base group (false). Defaults to + "false" + type: boolean + insecure: + description: 'Skips validating the SCM provider''s + TLS certificate - useful for self-signed certificates.; + default: false' + type: boolean + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + secretName: + type: string + required: + - key + - secretName + type: object + required: + - group + type: object + requeueAfterSeconds: + description: Standard parameters. + format: int64 + type: integer + template: + description: ApplicationSetTemplate represents argocd + ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta represents + the Argo CD application fields that may be used + for Applications generated from the ApplicationSet + (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the desired + state of an ArgoCD Git Application + properties: + destination: + description: Destination is a reference to the + target Kubernetes server and namespace + properties: + name: + description: Name is an alternate way of + specifying the target cluster by its symbolic + name + type: string + nameRef: + description: NameRef is a reference to a + Cluster used to set Name + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a reference + to a Cluster used to set Name + properties: + matchControllerRef: + description: MatchControllerRef ensures + an object with the same controller + reference as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an + object with matching labels is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies the target + namespace for the application's resources. + The namespace will only be set for namespace-scoped + resources that have not set a value for + .metadata.namespace + type: string + server: + description: Server specifies the URL of + the target cluster and must be set to + the Kubernetes control plane API + type: string + serverRef: + description: ServerRef is a reference to + an Cluster used to set Server + properties: + name: + description: Name of the referenced + object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector selects + references to Repositories used to set + SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef ensures + an object with the same controller + reference as the selecting object + is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an + object with matching labels is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies + whether resolution of this reference + is required. The default is 'Required', + which means the reconcile will + fail if the reference cannot be + resolved. 'Optional' means this + reference will be a no-op if it + cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when + this reference should be resolved. + The default is 'IfNotPresent', + which will attempt to resolve + the reference only when the corresponding + field is not present. Use 'Always' + to resolve the reference on every + reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is a list of + resources and their fields which should be + ignored during comparison + items: + description: ResourceIgnoreDifferences contains + resource filter and list of json paths which + should be ignored during comparison with + live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers is + a list of trusted managers. Fields mutated + by those managers will take precedence + over the desired state defined in the + SCM and won't be displayed in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list of information + (URLs, email addresses, and plain text) that + relates to the application + items: + description: Info is a list of informational + items for this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference to the project + this application belongs to. The empty string + means that application belongs to the 'default' + project. + type: string + revisionHistoryLimit: + description: 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. This should only be changed in exceptional + circumstances. Setting to zero will store + no history. This will reduce storage used. + Increasing will increase the space used to + store the history, so we do not recommend + increasing it. Default is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains all + required information about the source of an + application + properties: + chart: + description: Chart is a Helm chart name, + and must be specified for applications + sourced from a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains a glob + pattern to match paths against that + should be explicitly excluded from + being used during manifest generation + type: string + include: + description: Include contains a glob + pattern to match paths against that + should be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds options specific + to Jsonnet + properties: + extVars: + description: ExtVars is a list of + Jsonnet External Variables + items: + description: JsonnetVar represents + a variable to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library + search dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar represents + a variable to be passed to jsonnet + during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies whether + to scan a directory recursively for + manifests + type: boolean + type: object + helm: + description: Helm holds helm specific options + properties: + fileParameters: + description: FileParameters are file + parameters to the helm template + items: + description: HelmFileParameter is + a file parameter that's passed to + helm template during manifest generation + properties: + name: + description: Name is the name + of the Helm parameter + type: string + path: + description: Path is the path + to the file containing the values + for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from failing + when valueFiles do not exist locally + by not appending them to helm template + --values + type: boolean + parameters: + description: Parameters is a list of + Helm parameters which are passed to + the helm template command upon manifest + generation + items: + description: HelmParameter is a parameter + that's passed to helm template during + manifest generation + properties: + forceString: + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings + type: boolean + name: + description: Name is the name + of the Helm parameter + type: string + value: + description: Value is the value + for the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials pass credentials + to all domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is the Helm + release name to use. If omitted it + will use the application name + type: string + skipCrds: + description: SkipCrds skips custom resource + definition installation step (Helm's + --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is a list of + Helm value files to use when generating + a template + items: + type: string + type: array + values: + description: Values specifies Helm values + to be passed to helm template, typically + defined as a block + type: string + valuesObject: + description: ValuesObject specifies + Helm values to be passed to helm template, + defined as a map. This takes precedence + over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the Helm version + to use for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize specific + options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations is a + list of additional annotations to + add to rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply env variables + substitution for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels is a list + of additional labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force applying + common annotations to resources for + Kustomize apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels specifies + whether to force applying common labels + to resources for Kustomize apps + type: boolean + images: + description: Images is a list of Kustomize + image override specifications + items: + description: KustomizeImage represents + a Kustomize image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix + appended to resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix is a suffix + appended to resources for Kustomize + apps + type: string + namespace: + description: Namespace sets the namespace + that Kustomize adds to all resources + type: string + replicas: + description: Replicas is a list of Kustomize + Replicas override specifications + items: + description: KustomizeReplica override + specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number of replicas + x-kubernetes-int-or-string: true + name: + description: Name of Deployment + or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls which + version of Kustomize to use for rendering + manifests + type: string + type: object + path: + description: Path is a directory path within + the Git repository, and is only valid + for applications sourced from Git. + type: string + plugin: + description: Plugin holds config management + plugin specific options + properties: + env: + description: Env holds options specific + to config management plugins + items: + description: EnvEntry represents an + entry in the application's environment + properties: + name: + description: Name is the name + of the variable, usually expressed + in uppercase + type: string + value: + description: Value is the value + of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config management + parameters + items: + description: ApplicationSourcePluginParameter + holds options specific to config + management parameters + properties: + array: + description: Array is the value + of an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is the value + of a map type parameter. + type: object + name: + description: Name is the name + identifying a parameter. + type: string + string: + description: String_ is the value + of a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference to another + source within sources field. This field + will not be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL to the repository + (Git or Helm) that contains the application + manifests + type: string + targetRevision: + description: TargetRevision defines the + revision of the source to sync the application + to. In case of Git, this can be commit, + tag, or branch. If omitted, will equal + to HEAD. In case of Helm, this is a semver + tag for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference to the location + of the application's manifests or chart + items: + description: ApplicationSource contains all + required information about the source of + an application + properties: + chart: + description: Chart is a Helm chart name, + and must be specified for applications + sourced from a Helm repo. + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + description: Exclude contains a glob + pattern to match paths against that + should be explicitly excluded from + being used during manifest generation + type: string + include: + description: Include contains a glob + pattern to match paths against that + should be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds options + specific to Jsonnet + properties: + extVars: + description: ExtVars is a list + of Jsonnet External Variables + items: + description: JsonnetVar represents + a variable to be passed to + jsonnet during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library + search dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of + Jsonnet Top-level Arguments + items: + description: JsonnetVar represents + a variable to be passed to + jsonnet during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies whether + to scan a directory recursively + for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific + options + properties: + fileParameters: + description: FileParameters are file + parameters to the helm template + items: + description: HelmFileParameter is + a file parameter that's passed + to helm template during manifest + generation + properties: + name: + description: Name is the name + of the Helm parameter + type: string + path: + description: Path is the path + to the file containing the + values for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles + prevents helm template from failing + when valueFiles do not exist locally + by not appending them to helm template + --values + type: boolean + parameters: + description: Parameters is a list + of Helm parameters which are passed + to the helm template command upon + manifest generation + items: + description: HelmParameter is a + parameter that's passed to helm + template during manifest generation + properties: + forceString: + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings + type: boolean + name: + description: Name is the name + of the Helm parameter + type: string + value: + description: Value is the value + for the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials pass + credentials to all domains (Helm's + --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is the Helm + release name to use. If omitted + it will use the application name + type: string + skipCrds: + description: SkipCrds skips custom + resource definition installation + step (Helm's --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is a list + of Helm value files to use when + generating a template + items: + type: string + type: array + values: + description: Values specifies Helm + values to be passed to helm template, + typically defined as a block + type: string + valuesObject: + description: ValuesObject specifies + Helm values to be passed to helm + template, defined as a map. This + takes precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the Helm version + to use for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize + specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations is + a list of additional annotations + to add to rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst + specifies whether to apply env variables + substitution for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels is a list + of additional labels to add to rendered + manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations + specifies whether to force applying + common annotations to resources + for Kustomize apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels specifies + whether to force applying common + labels to resources for Kustomize + apps + type: boolean + images: + description: Images is a list of Kustomize + image override specifications + items: + description: KustomizeImage represents + a Kustomize image definition in + the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix + appended to resources for Kustomize + apps + type: string + nameSuffix: + description: NameSuffix is a suffix + appended to resources for Kustomize + apps + type: string + namespace: + description: Namespace sets the namespace + that Kustomize adds to all resources + type: string + replicas: + description: Replicas is a list of + Kustomize Replicas override specifications + items: + description: KustomizeReplica override + specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number of replicas + x-kubernetes-int-or-string: true + name: + description: Name of Deployment + or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls which + version of Kustomize to use for + rendering manifests + type: string + type: object + path: + description: Path is a directory path + within the Git repository, and is only + valid for applications sourced from + Git. + type: string + plugin: + description: Plugin holds config management + plugin specific options + properties: + env: + description: Env holds options specific + to config management plugins + items: + description: EnvEntry represents + an entry in the application's + environment + properties: + name: + description: Name is the name + of the variable, usually expressed + in uppercase + type: string + value: + description: Value is the value + of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config management + parameters + items: + description: ApplicationSourcePluginParameter + holds options specific to config + management parameters + properties: + array: + description: Array is the value + of an array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is the value + of a map type parameter. + type: object + name: + description: Name is the name + identifying a parameter. + type: string + string: + description: String_ is the + value of a string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference to another + source within sources field. This field + will not be used if used with a `source` + tag. + type: string + repoURL: + description: RepoURL is the URL to the + repository (Git or Helm) that contains + the application manifests + type: string + targetRevision: + description: TargetRevision defines the + revision of the source to sync the application + to. In case of Git, this can be commit, + tag, or branch. If omitted, will equal + to HEAD. In case of Helm, this is a + semver tag for the Chart's version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when and how + a sync will be performed + properties: + automated: + description: Automated will keep an application + synced to the target revision + properties: + allowEmpty: + description: 'AllowEmpty allows apps + have zero live resources (default: + false)' + type: boolean + prune: + description: 'Prune specifies whether + to delete resources from the cluster + that are not found in the sources + anymore as part of automated sync + (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes whether + to revert resources back to their + desired state upon modification in + the cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata controls + metadata in the given namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed sync + retry behavior + properties: + backoff: + description: Backoff controls how to + backoff on subsequent retries of failed + syncs + properties: + duration: + description: Duration is the amount + to back off. Default unit is seconds, + but could also be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is a factor + to multiply the base duration + after each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration is the + maximum amount of time allowed + for the backoff strategy + type: string + type: object + limit: + description: Limit is the maximum number + of attempts for retrying a failed + sync. If set to 0, no retries will + be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you to specify + whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + values: + additionalProperties: + type: string + description: Values contains key/value pairs which are + passed directly as parameters to the template + type: object + type: object + selector: + description: Selector allows to post-filter all generator. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. + If the operator is In or NotIn, the values array + must be non-empty. If the operator is Exists + or DoesNotExist, the values array must be empty. + This array is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + type: object + type: array + goTemplate: + type: boolean + goTemplateOptions: + items: + type: string + type: array + preservedFields: + description: ApplicationPreservedFields ApplicationSetObservation + are the preseverable fields on an Application + properties: + annotations: + items: + type: string + type: array + type: object + strategy: + description: ApplicationSetStrategy configures how generated Applications + are updated in sequence. + properties: + rollingSync: + description: ApplicationSetRolloutStrategy define the rollout + strategy for the ApplicationSet + properties: + steps: + items: + description: ApplicationSetRolloutStep define the rollout + step for the ApplicationSet + properties: + matchExpressions: + items: + description: ApplicationMatchExpression define + expressions to match Applications + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + type: object + type: array + maxUpdate: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + type: array + type: object + type: + type: string + type: object + syncPolicy: + description: ApplicationSetSyncPolicy configures how generated + Applications will relate to their ApplicationSet. + properties: + applicationsSync: + description: ApplicationsSync represents the policy applied + on the generated applications. Possible values are create-only, + create-update, create-delete, sync + enum: + - create-only + - create-update + - create-delete + - sync + type: string + preserveResourcesOnDeletion: + description: PreserveResourcesOnDeletion will preserve resources + on deletion. If PreserveResourcesOnDeletion is set to true, + these Applications will not be deleted. + type: boolean + type: object + template: + description: ApplicationSetTemplate represents argocd ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta represents the Argo + CD application fields that may be used for Applications + generated from the ApplicationSet (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec define the desired state of an + ArgoCD Git Application + properties: + destination: + description: Destination is a reference to the target + Kubernetes server and namespace + properties: + name: + description: Name is an alternate way of specifying + the target cluster by its symbolic name + type: string + nameRef: + description: NameRef is a reference to a Cluster used + to set Name + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether + resolution of this reference is required. + The default is 'Required', which means the + reconcile will fail if the reference cannot + be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference + should be resolved. The default is 'IfNotPresent', + which will attempt to resolve the reference + only when the corresponding field is not + present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + nameSelector: + description: NameSelector is a reference to a Cluster + used to set Name + properties: + matchControllerRef: + description: MatchControllerRef ensures an object + with the same controller reference as the selecting + object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with + matching labels is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies whether + resolution of this reference is required. + The default is 'Required', which means the + reconcile will fail if the reference cannot + be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference + should be resolved. The default is 'IfNotPresent', + which will attempt to resolve the reference + only when the corresponding field is not + present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + namespace: + description: Namespace specifies the target namespace + for the application's resources. The namespace will + only be set for namespace-scoped resources that + have not set a value for .metadata.namespace + type: string + server: + description: Server specifies the URL of the target + cluster and must be set to the Kubernetes control + plane API + type: string + serverRef: + description: ServerRef is a reference to an Cluster + used to set Server + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether + resolution of this reference is required. + The default is 'Required', which means the + reconcile will fail if the reference cannot + be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference + should be resolved. The default is 'IfNotPresent', + which will attempt to resolve the reference + only when the corresponding field is not + present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + serverSelector: + description: SourceReposSelector selects references + to Repositories used to set SourceRepos + properties: + matchControllerRef: + description: MatchControllerRef ensures an object + with the same controller reference as the selecting + object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with + matching labels is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies whether + resolution of this reference is required. + The default is 'Required', which means the + reconcile will fail if the reference cannot + be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference + should be resolved. The default is 'IfNotPresent', + which will attempt to resolve the reference + only when the corresponding field is not + present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object + type: object + ignoreDifferences: + description: IgnoreDifferences is a list of resources + and their fields which should be ignored during comparison + items: + description: ResourceIgnoreDifferences contains resource + filter and list of json paths which should be ignored + during comparison with live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers is a list of + trusted managers. Fields mutated by those managers + will take precedence over the desired state defined + in the SCM and won't be displayed in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list of information (URLs, + email addresses, and plain text) that relates to the + application + items: + description: Info is a list of informational items for + this operation + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference to the project this + application belongs to. The empty string means that + application belongs to the 'default' project. + type: string + revisionHistoryLimit: + description: 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. This should only be changed in + exceptional circumstances. Setting to zero will store + no history. This will reduce storage used. Increasing + will increase the space used to store the history, so + we do not recommend increasing it. Default is 10. + format: int64 + type: integer + source: + description: ApplicationSource contains all required information + about the source of an application + properties: + chart: + description: Chart is a Helm chart name, and must + be specified for applications sourced from a Helm + repo. + type: string + directory: + description: Directory holds path/directory specific + options + properties: + exclude: + description: Exclude contains a glob pattern to + match paths against that should be explicitly + excluded from being used during manifest generation + type: string + include: + description: Include contains a glob pattern to + match paths against that should be explicitly + included during manifest generation + type: string + jsonnet: + description: Jsonnet holds options specific to + Jsonnet + properties: + extVars: + description: ExtVars is a list of Jsonnet + External Variables + items: + description: JsonnetVar represents a variable + to be passed to jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library search dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of Jsonnet Top-level + Arguments + items: + description: JsonnetVar represents a variable + to be passed to jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies whether to scan + a directory recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific options + properties: + fileParameters: + description: FileParameters are file parameters + to the helm template + items: + description: HelmFileParameter is a file parameter + that's passed to helm template during manifest + generation + properties: + name: + description: Name is the name of the Helm + parameter + type: string + path: + description: Path is the path to the file + containing the values for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles prevents + helm template from failing when valueFiles do + not exist locally by not appending them to helm + template --values + type: boolean + parameters: + description: Parameters is a list of Helm parameters + which are passed to the helm template command + upon manifest generation + items: + description: HelmParameter is a parameter that's + passed to helm template during manifest generation + properties: + forceString: + description: ForceString determines whether + to tell Helm to interpret booleans and + numbers as strings + type: boolean + name: + description: Name is the name of the Helm + parameter + type: string + value: + description: Value is the value for the + Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials pass credentials + to all domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is the Helm release name + to use. If omitted it will use the application + name + type: string + skipCrds: + description: SkipCrds skips custom resource definition + installation step (Helm's --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is a list of Helm value + files to use when generating a template + items: + type: string + type: array + values: + description: Values specifies Helm values to be + passed to helm template, typically defined as + a block + type: string + valuesObject: + description: ValuesObject specifies Helm values + to be passed to helm template, defined as a + map. This takes precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the Helm version to use + for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations is a list of additional + annotations to add to rendered manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst specifies + whether to apply env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels is a list of additional + labels to add to rendered manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations specifies + whether to force applying common annotations + to resources for Kustomize apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels specifies whether + to force applying common labels to resources + for Kustomize apps + type: boolean + images: + description: Images is a list of Kustomize image + override specifications + items: + description: KustomizeImage represents a Kustomize + image definition in the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix appended to + resources for Kustomize apps + type: string + nameSuffix: + description: NameSuffix is a suffix appended to + resources for Kustomize apps + type: string + namespace: + description: Namespace sets the namespace that + Kustomize adds to all resources + type: string + replicas: + description: Replicas is a list of Kustomize Replicas + override specifications + items: + description: KustomizeReplica override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number of replicas + x-kubernetes-int-or-string: true + name: + description: Name of Deployment or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls which version of + Kustomize to use for rendering manifests + type: string + type: object + path: + description: Path is a directory path within the Git + repository, and is only valid for applications sourced + from Git. + type: string + plugin: + description: Plugin holds config management plugin + specific options + properties: + env: + description: Env holds options specific to config + management plugins + items: + description: EnvEntry represents an entry in + the application's environment + properties: + name: + description: Name is the name of the variable, + usually expressed in uppercase + type: string + value: + description: Value is the value of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific to config management + parameters + properties: + array: + description: Array is the value of an array + type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is the value of a map type + parameter. + type: object + name: + description: Name is the name identifying + a parameter. + type: string + string: + description: String_ is the value of a string + type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference to another source within + sources field. This field will not be used if used + with a `source` tag. + type: string + repoURL: + description: RepoURL is the URL to the repository + (Git or Helm) that contains the application manifests + type: string + targetRevision: + description: TargetRevision defines the revision of + the source to sync the application to. In case of + Git, this can be commit, tag, or branch. If omitted, + will equal to HEAD. In case of Helm, this is a semver + tag for the Chart's version. + type: string + required: + - repoURL + type: object + sources: + description: Sources is a reference to the location of + the application's manifests or chart + items: + description: ApplicationSource contains all required + information about the source of an application + properties: + chart: + description: Chart is a Helm chart name, and must + be specified for applications sourced from a Helm + repo. + type: string + directory: + description: Directory holds path/directory specific + options + properties: + exclude: + description: Exclude contains a glob pattern + to match paths against that should be explicitly + excluded from being used during manifest generation + type: string + include: + description: Include contains a glob pattern + to match paths against that should be explicitly + included during manifest generation + type: string + jsonnet: + description: Jsonnet holds options specific + to Jsonnet + properties: + extVars: + description: ExtVars is a list of Jsonnet + External Variables + items: + description: JsonnetVar represents a variable + to be passed to jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library search dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of Jsonnet Top-level + Arguments + items: + description: JsonnetVar represents a variable + to be passed to jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies whether to scan + a directory recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific options + properties: + fileParameters: + description: FileParameters are file parameters + to the helm template + items: + description: HelmFileParameter is a file parameter + that's passed to helm template during manifest + generation + properties: + name: + description: Name is the name of the Helm + parameter + type: string + path: + description: Path is the path to the file + containing the values for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles prevents + helm template from failing when valueFiles + do not exist locally by not appending them + to helm template --values + type: boolean + parameters: + description: Parameters is a list of Helm parameters + which are passed to the helm template command + upon manifest generation + items: + description: HelmParameter is a parameter + that's passed to helm template during manifest + generation + properties: + forceString: + description: ForceString determines whether + to tell Helm to interpret booleans and + numbers as strings + type: boolean + name: + description: Name is the name of the Helm + parameter + type: string + value: + description: Value is the value for the + Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials pass credentials + to all domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is the Helm release + name to use. If omitted it will use the application + name + type: string + skipCrds: + description: SkipCrds skips custom resource + definition installation step (Helm's --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is a list of Helm value + files to use when generating a template + items: + type: string + type: array + values: + description: Values specifies Helm values to + be passed to helm template, typically defined + as a block + type: string + valuesObject: + description: ValuesObject specifies Helm values + to be passed to helm template, defined as + a map. This takes precedence over Values. + x-kubernetes-preserve-unknown-fields: true + version: + description: Version is the Helm version to + use for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize specific + options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations is a list of + additional annotations to add to rendered + manifests + type: object + commonAnnotationsEnvsubst: + description: CommonAnnotationsEnvsubst specifies + whether to apply env variables substitution + for annotation values + type: boolean + commonLabels: + additionalProperties: + type: string + description: CommonLabels is a list of additional + labels to add to rendered manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations specifies + whether to force applying common annotations + to resources for Kustomize apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels specifies whether + to force applying common labels to resources + for Kustomize apps + type: boolean + images: + description: Images is a list of Kustomize image + override specifications + items: + description: KustomizeImage represents a Kustomize + image definition in the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix appended + to resources for Kustomize apps + type: string + nameSuffix: + description: NameSuffix is a suffix appended + to resources for Kustomize apps + type: string + namespace: + description: Namespace sets the namespace that + Kustomize adds to all resources + type: string + replicas: + description: Replicas is a list of Kustomize + Replicas override specifications + items: + description: KustomizeReplica override specifications + properties: + count: + anyOf: + - type: integer + - type: string + description: Number of replicas + x-kubernetes-int-or-string: true + name: + description: Name of Deployment or StatefulSet + type: string + required: + - count + - name + type: object + type: array + version: + description: Version controls which version + of Kustomize to use for rendering manifests + type: string + type: object + path: + description: Path is a directory path within the + Git repository, and is only valid for applications + sourced from Git. + type: string + plugin: + description: Plugin holds config management plugin + specific options + properties: + env: + description: Env holds options specific to config + management plugins + items: + description: EnvEntry represents an entry + in the application's environment + properties: + name: + description: Name is the name of the variable, + usually expressed in uppercase + type: string + value: + description: Value is the value of the + variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + parameters: + description: ApplicationSourcePluginParameters + is a list of specific config management parameters + items: + description: ApplicationSourcePluginParameter + holds options specific to config management + parameters + properties: + array: + description: Array is the value of an + array type parameter. + items: + type: string + type: array + map: + additionalProperties: + type: string + description: Map is the value of a map + type parameter. + type: object + name: + description: Name is the name identifying + a parameter. + type: string + string: + description: String_ is the value of a + string type parameter. + type: string + type: object + type: array + type: object + ref: + description: Ref is reference to another source + within sources field. This field will not be used + if used with a `source` tag. + type: string + repoURL: + description: RepoURL is the URL to the repository + (Git or Helm) that contains the application manifests + type: string + targetRevision: + description: TargetRevision defines the revision + of the source to sync the application to. In case + of Git, this can be commit, tag, or branch. If + omitted, will equal to HEAD. In case of Helm, + this is a semver tag for the Chart's version. + type: string + required: + - repoURL + type: object + type: array + syncPolicy: + description: SyncPolicy controls when and how a sync will + be performed + properties: + automated: + description: Automated will keep an application synced + to the target revision + properties: + allowEmpty: + description: 'AllowEmpty allows apps have zero + live resources (default: false)' + type: boolean + prune: + description: 'Prune specifies whether to delete + resources from the cluster that are not found + in the sources anymore as part of automated + sync (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes whether to revert + resources back to their desired state upon modification + in the cluster (default: false)' + type: boolean + type: object + managedNamespaceMetadata: + description: ManagedNamespaceMetadata controls metadata + in the given namespace (if CreateNamespace=true) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + retry: + description: Retry controls failed sync retry behavior + properties: + backoff: + description: Backoff controls how to backoff on + subsequent retries of failed syncs + properties: + duration: + description: Duration is the amount to back + off. Default unit is seconds, but could + also be a duration (e.g. "2m", "1h") + type: string + factor: + description: Factor is a factor to multiply + the base duration after each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration is the maximum amount + of time allowed for the backoff strategy + type: string + type: object + limit: + description: Limit is the maximum number of attempts + for retrying a failed sync. If set to 0, no + retries will be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you to specify whole app + sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + type: object + required: + - metadata + - spec + type: object + required: + - generators + - template + type: object + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: A ApplicationSetStatus represents the observed state of a + ApplicationSet. + properties: + atProvider: + description: ArgoApplicationSetStatus are the observable fields of + a ApplicationSet. + properties: + applicationStatus: + items: + description: ApplicationSetApplicationStatus contains details + about each Application managed by the ApplicationSet + properties: + application: + description: Application contains the name of the Application + resource + type: string + lastTransitionTime: + description: LastTransitionTime is the time the status was + last updated + format: date-time + type: string + message: + description: Message contains human-readable message indicating + details about the status + type: string + status: + description: 'Status contains the AppSet''s perceived status + of the managed Application resource: (Waiting, Pending, + Progressing, Healthy)' + type: string + step: + description: Step tracks which step this Application should + be updated in + type: string + required: + - application + - message + - status + - step + type: object + type: array + conditions: + items: + description: ApplicationSetCondition contains details about + an applicationset condition, which is usually an error or + warning + properties: + lastTransitionTime: + description: LastTransitionTime is the time the condition + was last observed + format: date-time + type: string + message: + description: Message contains human-readable message indicating + details about condition + type: string + reason: + description: Single word camelcase representing the reason + for the status eg ErrorOccurred + type: string + status: + description: True/False/Unknown + type: string + type: + description: Type is an applicationset condition type + type: string + required: + - message + - reason + - status + - type + type: object + type: array + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/pkg/clients/applicationsets/client.go b/pkg/clients/applicationsets/client.go new file mode 100644 index 0000000..7e80cf6 --- /dev/null +++ b/pkg/clients/applicationsets/client.go @@ -0,0 +1,36 @@ +package applicationsets + +import ( + "context" + + "github.com/argoproj/argo-cd/v2/pkg/apiclient" + "github.com/argoproj/argo-cd/v2/pkg/apiclient/applicationset" + "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" + argoGrpc "github.com/argoproj/argo-cd/v2/util/grpc" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" +) + +// ServiceClient wraps the functions to connect to argocd repositories +type ServiceClient interface { + // Get returns an applicationset by name + Get(ctx context.Context, in *applicationset.ApplicationSetGetQuery, opts ...grpc.CallOption) (*v1alpha1.ApplicationSet, error) + // List returns list of applicationset + List(ctx context.Context, in *applicationset.ApplicationSetListQuery, opts ...grpc.CallOption) (*v1alpha1.ApplicationSetList, error) + // Create creates an applicationset + Create(ctx context.Context, in *applicationset.ApplicationSetCreateRequest, opts ...grpc.CallOption) (*v1alpha1.ApplicationSet, error) + // Delete deletes an application set + Delete(ctx context.Context, in *applicationset.ApplicationSetDeleteRequest, opts ...grpc.CallOption) (*applicationset.ApplicationSetResponse, error) +} + +// NewApplicationSetServiceClient creates a new API client from a set of config options, or fails fatally if the new client creation fails. +func NewApplicationSetServiceClient(clientOpts *apiclient.ClientOptions) ServiceClient { + _, repoIf := apiclient.NewClientOrDie(clientOpts).NewApplicationSetClientOrDie() + return repoIf +} + +// IsNotFound returns true if the error code is NotFound +func IsNotFound(err error) bool { + unwrappedError := argoGrpc.UnwrapGRPCStatus(err).Code() + return unwrappedError == codes.NotFound +} diff --git a/pkg/clients/clusters/client.go b/pkg/clients/clusters/client.go new file mode 100644 index 0000000..d360221 --- /dev/null +++ b/pkg/clients/clusters/client.go @@ -0,0 +1,51 @@ +package cluster + +import ( + "context" + "strings" + + "github.com/argoproj/argo-cd/v2/pkg/apiclient" + "github.com/argoproj/argo-cd/v2/pkg/apiclient/cluster" + "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" + + "google.golang.org/grpc" +) + +const ( + errorClusterNotFound = "code = NotFound desc = cluster" + errorPermissionDenied = "code = PermissionDenied desc = permission denied" +) + +// ServiceClient wraps the functions to connect to argocd repositories +type ServiceClient interface { + // Create creates a cluster + Create(ctx context.Context, in *cluster.ClusterCreateRequest, opts ...grpc.CallOption) (*v1alpha1.Cluster, error) + // Get returns a cluster by server address + Get(ctx context.Context, in *cluster.ClusterQuery, opts ...grpc.CallOption) (*v1alpha1.Cluster, error) + // Update updates a cluster + Update(ctx context.Context, in *cluster.ClusterUpdateRequest, opts ...grpc.CallOption) (*v1alpha1.Cluster, error) + // Delete deletes a cluster + Delete(ctx context.Context, in *cluster.ClusterQuery, opts ...grpc.CallOption) (*cluster.ClusterResponse, error) +} + +// NewClusterServiceClient creates a new API client from a set of config options, or fails fatally if the new client creation fails. +func NewClusterServiceClient(clientOpts *apiclient.ClientOptions) cluster.ClusterServiceClient { + _, repoIf := apiclient.NewClientOrDie(clientOpts).NewClusterClientOrDie() + return repoIf +} + +// IsErrorClusterNotFound helper function to test for errorClusterNotFound error. +func IsErrorClusterNotFound(err error) bool { + if err == nil { + return false + } + return strings.Contains(err.Error(), errorClusterNotFound) +} + +// IsErrorPermissionDenied helper function to test for errorPermissionDenied error. +func IsErrorPermissionDenied(err error) bool { + if err == nil { + return false + } + return strings.Contains(err.Error(), errorPermissionDenied) +} diff --git a/pkg/clients/mock/applicationsets/mock.go b/pkg/clients/mock/applicationsets/mock.go new file mode 100644 index 0000000..55c2a26 --- /dev/null +++ b/pkg/clients/mock/applicationsets/mock.go @@ -0,0 +1,118 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ../applicationsets/client.go + +// Package applicationsets is a generated GoMock package. +package applicationsets + +import ( + context "context" + reflect "reflect" + + applicationset "github.com/argoproj/argo-cd/v2/pkg/apiclient/applicationset" + v1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" + gomock "github.com/golang/mock/gomock" + grpc "google.golang.org/grpc" +) + +// MockServiceClient is a mock of ServiceClient interface. +type MockServiceClient struct { + ctrl *gomock.Controller + recorder *MockServiceClientMockRecorder +} + +// MockServiceClientMockRecorder is the mock recorder for MockServiceClient. +type MockServiceClientMockRecorder struct { + mock *MockServiceClient +} + +// NewMockServiceClient creates a new mock instance. +func NewMockServiceClient(ctrl *gomock.Controller) *MockServiceClient { + mock := &MockServiceClient{ctrl: ctrl} + mock.recorder = &MockServiceClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockServiceClient) EXPECT() *MockServiceClientMockRecorder { + return m.recorder +} + +// Create mocks base method. +func (m *MockServiceClient) Create(ctx context.Context, in *applicationset.ApplicationSetCreateRequest, opts ...grpc.CallOption) (*v1alpha1.ApplicationSet, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Create", varargs...) + ret0, _ := ret[0].(*v1alpha1.ApplicationSet) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Create indicates an expected call of Create. +func (mr *MockServiceClientMockRecorder) Create(ctx, in interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockServiceClient)(nil).Create), varargs...) +} + +// Delete mocks base method. +func (m *MockServiceClient) Delete(ctx context.Context, in *applicationset.ApplicationSetDeleteRequest, opts ...grpc.CallOption) (*applicationset.ApplicationSetResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Delete", varargs...) + ret0, _ := ret[0].(*applicationset.ApplicationSetResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Delete indicates an expected call of Delete. +func (mr *MockServiceClientMockRecorder) Delete(ctx, in interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockServiceClient)(nil).Delete), varargs...) +} + +// Get mocks base method. +func (m *MockServiceClient) Get(ctx context.Context, in *applicationset.ApplicationSetGetQuery, opts ...grpc.CallOption) (*v1alpha1.ApplicationSet, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Get", varargs...) + ret0, _ := ret[0].(*v1alpha1.ApplicationSet) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Get indicates an expected call of Get. +func (mr *MockServiceClientMockRecorder) Get(ctx, in interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockServiceClient)(nil).Get), varargs...) +} + +// List mocks base method. +func (m *MockServiceClient) List(ctx context.Context, in *applicationset.ApplicationSetListQuery, opts ...grpc.CallOption) (*v1alpha1.ApplicationSetList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].(*v1alpha1.ApplicationSetList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// List indicates an expected call of List. +func (mr *MockServiceClientMockRecorder) List(ctx, in interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockServiceClient)(nil).List), varargs...) +} diff --git a/pkg/clients/mock/generate.go b/pkg/clients/mock/generate.go index 9669a20..83e4c9d 100644 --- a/pkg/clients/mock/generate.go +++ b/pkg/clients/mock/generate.go @@ -5,3 +5,4 @@ package mock //go:generate go run -mod=mod github.com/golang/mock/mockgen -package application -destination=./applications/mock.go -source=../applications/client.go ServiceClient -build_flags=-mod=mod //go:generate go run -mod=mod github.com/golang/mock/mockgen -package projects -destination=./projects/mock.go -source=../projects/client.go ServiceClient -build_flags=-mod=mod //go:generate go run -mod=mod github.com/golang/mock/mockgen -package cluster -destination=./cluster/mock.go -source=../cluster/client.go ServiceClient -build_flags=-mod=mod +//go:generate go run -mod=mod github.com/golang/mock/mockgen -package applicationsets -destination=./applicationsets/mock.go -source=../applicationsets/client.go ServiceClient -build_flags=-mod=mod diff --git a/pkg/controller/applications/controller.go b/pkg/controller/applications/controller.go index 01e3b41..9601c8b 100644 --- a/pkg/controller/applications/controller.go +++ b/pkg/controller/applications/controller.go @@ -194,13 +194,14 @@ func generateApplicationObservation(app *argocdv1alpha1.Application) v1alpha1.Ar return v1alpha1.ArgoApplicationStatus{} } - converter := v1alpha1.ConverterImpl{} + converter := &v1alpha1.ConverterImpl{} status := converter.FromArgoApplicationStatus(&app.Status) return *status } func generateCreateApplicationRequest(cr *v1alpha1.Application) *application.ApplicationCreateRequest { - converter := v1alpha1.ConverterImpl{} + converter := &v1alpha1.ConverterImpl{} + spec := converter.ToArgoApplicationSpec(&cr.Spec.ForProvider) app := &argocdv1alpha1.Application{ diff --git a/pkg/controller/applicationsets/comp.go b/pkg/controller/applicationsets/comp.go new file mode 100644 index 0000000..1041a01 --- /dev/null +++ b/pkg/controller/applicationsets/comp.go @@ -0,0 +1,24 @@ +package applicationsets + +import ( + argocdv1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + + "github.com/crossplane-contrib/provider-argocd/apis/applicationsets/v1alpha1" +) + +// IsApplicationSetUpToDate converts ApplicationParameters to its ArgoCD Counterpart and returns if they equal +func IsApplicationSetUpToDate(cr *v1alpha1.ApplicationSetParameters, remote *argocdv1alpha1.ApplicationSet) bool { // nolint:gocyclo + converter := v1alpha1.ConverterImpl{} + cluster := converter.ToArgoApplicationSetSpec(cr) + + opts := []cmp.Option{ + // explicitly ignore the unexported in this type instead of adding a generic allow on all type. + // the unexported fields should not bother here, since we don't copy them or write them + cmpopts.IgnoreUnexported(argocdv1alpha1.ApplicationDestination{}), + cmpopts.EquateEmpty(), + } + res := cmp.Equal(*cluster, remote.Spec, opts...) + return res +} diff --git a/pkg/controller/applicationsets/controller.go b/pkg/controller/applicationsets/controller.go new file mode 100644 index 0000000..c51ae94 --- /dev/null +++ b/pkg/controller/applicationsets/controller.go @@ -0,0 +1,194 @@ +/* +Copyright 2022 The Crossplane Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package applicationsets + +import ( + "context" + + "github.com/argoproj/argo-cd/v2/pkg/apiclient" + "github.com/argoproj/argo-cd/v2/pkg/apiclient/applicationset" + argov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" + xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/logging" + "github.com/google/go-cmp/cmp" + "github.com/pkg/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/client" + + "github.com/crossplane/crossplane-runtime/pkg/meta" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + "github.com/crossplane/crossplane-runtime/pkg/resource" + + "github.com/crossplane-contrib/provider-argocd/apis/applicationsets/v1alpha1" + "github.com/crossplane-contrib/provider-argocd/pkg/clients" + appsets "github.com/crossplane-contrib/provider-argocd/pkg/clients/applicationsets" +) + +const ( + errNotApplicationSet = "managed resource is not a ApplicationSet custom resource" + errGetApplicationSet = "failed to GET ApplicationSet with ArgoCD instance" +) + +// SetupApplicationSet adds a controller that reconciles ApplicationSet managed resources. +func SetupApplicationSet(mgr ctrl.Manager, l logging.Logger) error { + name := managed.ControllerName(v1alpha1.ApplicationSetGroupKind) + + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + For(&v1alpha1.ApplicationSet{}). + Complete(managed.NewReconciler(mgr, + resource.ManagedKind(v1alpha1.ApplicationSetGroupVersionKind), + managed.WithExternalConnecter(&connector{kube: mgr.GetClient(), newArgocdClientFn: appsets.NewApplicationSetServiceClient}), + managed.WithReferenceResolver(managed.NewAPISimpleReferenceResolver(mgr.GetClient())), + managed.WithInitializers(managed.NewNameAsExternalName(mgr.GetClient())), + managed.WithLogger(l.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithConnectionPublishers(cps...))) +} + +type connector struct { + kube client.Client + newArgocdClientFn func(clientOpts *apiclient.ClientOptions) appsets.ServiceClient +} + +// Connect typically produces an ExternalClient by: +// 1. Tracking that the managed resource is using a ProviderConfig. +// 2. Getting the managed resource's ProviderConfig. +// 3. Getting the credentials specified by the ProviderConfig. +// 4. Using the credentials to form a client. +func (c *connector) Connect(ctx context.Context, mg resource.Managed) (managed.ExternalClient, error) { + cr, ok := mg.(*v1alpha1.ApplicationSet) + if !ok { + return nil, errors.New(errNotApplicationSet) + } + + cfg, err := clients.GetConfig(ctx, c.kube, cr) + if err != nil { + return nil, err + } + return &external{kube: c.kube, client: c.newArgocdClientFn(cfg)}, nil +} + +type external struct { + kube client.Client + client appsets.ServiceClient +} + +func (e *external) Observe(ctx context.Context, mg resource.Managed) (managed.ExternalObservation, error) { + cr, ok := mg.(*v1alpha1.ApplicationSet) + if !ok { + return managed.ExternalObservation{}, errors.New(errNotApplicationSet) + } + + var name = meta.GetExternalName(cr) + + if name == "" { + return managed.ExternalObservation{}, nil + } + + query := applicationset.ApplicationSetGetQuery{ + Name: name, + } + + var appset *argov1alpha1.ApplicationSet + + appset, err := e.client.Get(ctx, &query) + + if err != nil && appsets.IsNotFound(err) { + return managed.ExternalObservation{ResourceExists: false}, nil + } else if err != nil { + return managed.ExternalObservation{}, errors.Wrap(err, errGetApplicationSet) + } + + current := cr.Spec.ForProvider.DeepCopy() + + cr.Status.AtProvider = generateApplicationObservation(appset) + cr.Status.SetConditions(xpv1.Available()) + + return managed.ExternalObservation{ + ResourceExists: true, + ResourceUpToDate: IsApplicationSetUpToDate(&cr.Spec.ForProvider, appset), + ResourceLateInitialized: !cmp.Equal(current, &cr.Spec.ForProvider), + }, nil +} + +func generateApplicationObservation(appset *argov1alpha1.ApplicationSet) v1alpha1.ArgoApplicationSetStatus { + converter := &v1alpha1.ConverterImpl{} + return *converter.FromArgoApplicationSetStatus(&appset.Status) +} + +func (e *external) Create(ctx context.Context, mg resource.Managed) (managed.ExternalCreation, error) { + cr, ok := mg.(*v1alpha1.ApplicationSet) + if !ok { + return managed.ExternalCreation{}, errors.New(errNotApplicationSet) + } + + req := e.generateCreateApplicationSetRequest(cr) + + _, err := e.client.Create(ctx, req) + + return managed.ExternalCreation{}, err +} + +func (e *external) generateCreateApplicationSetRequest(cr *v1alpha1.ApplicationSet) *applicationset.ApplicationSetCreateRequest { + converter := &v1alpha1.ConverterImpl{} + targetSpec := converter.ToArgoApplicationSetSpec(&cr.Spec.ForProvider) + + req := &applicationset.ApplicationSetCreateRequest{ + Applicationset: &argov1alpha1.ApplicationSet{ + ObjectMeta: metav1.ObjectMeta{ + Name: meta.GetExternalName(cr), + }, + Spec: *targetSpec, + }, + } + return req +} + +func (e *external) Update(ctx context.Context, mg resource.Managed) (managed.ExternalUpdate, error) { + cr, ok := mg.(*v1alpha1.ApplicationSet) + if !ok { + return managed.ExternalUpdate{}, errors.New(errNotApplicationSet) + } + + req := e.generateCreateApplicationSetRequest(cr) + req.Upsert = true + + _, err := e.client.Create(ctx, req) + + return managed.ExternalUpdate{}, err +} + +func (e *external) Delete(ctx context.Context, mg resource.Managed) error { + cr, ok := mg.(*v1alpha1.ApplicationSet) + if !ok { + return errors.New(errNotApplicationSet) + } + + _, err := e.client.Delete(ctx, &applicationset.ApplicationSetDeleteRequest{ + Name: meta.GetExternalName(cr), + }) + if err != nil { + return err + } + + return nil +} diff --git a/pkg/controller/applicationsets/controller_test.go b/pkg/controller/applicationsets/controller_test.go new file mode 100644 index 0000000..91c25cf --- /dev/null +++ b/pkg/controller/applicationsets/controller_test.go @@ -0,0 +1,573 @@ +/* +Copyright 2022 The Crossplane Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package applicationsets + +import ( + "context" + "testing" + + argoapplicationset "github.com/argoproj/argo-cd/v2/pkg/apiclient/applicationset" + argocdv1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" + xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + "github.com/crossplane/crossplane-runtime/pkg/meta" + "github.com/golang/mock/gomock" + "github.com/google/go-cmp/cmp" + "github.com/pkg/errors" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + "github.com/crossplane/crossplane-runtime/pkg/test" + + "github.com/crossplane-contrib/provider-argocd/apis/applicationsets/v1alpha1" + "github.com/crossplane-contrib/provider-argocd/pkg/clients/applicationsets" + mockclient "github.com/crossplane-contrib/provider-argocd/pkg/clients/mock/applicationsets" +) + +// Unlike many Kubernetes projects Crossplane does not use third party testing +// libraries, per the common Go test review comments. Crossplane encourages the +// use of table driven unit tests. The tests of the crossplane-runtime project +// are representative of the testing style Crossplane encourages. +// +// https://github.com/golang/go/wiki/TestComments +// https://github.com/crossplane/crossplane/blob/master/CONTRIBUTING.md#contributing-code + +var ( + errBoom = errors.New("boom") + testApplicationSetExternalName = "test" + testTemplateName = "myTemplate" + testProjectName = "myProject" + otherProjectName = "otherProject" +) + +type mockModifier func(*mockclient.MockServiceClient) + +func withMockClient(t *testing.T, mod mockModifier) *mockclient.MockServiceClient { + ctrl := gomock.NewController(t) + mock := mockclient.NewMockServiceClient(ctrl) + mod(mock) + return mock +} + +func ApplicationSet(m ...ApplicationSetModifier) *v1alpha1.ApplicationSet { + cr := &v1alpha1.ApplicationSet{} + for _, f := range m { + f(cr) + } + return cr +} + +type ApplicationSetModifier func(*v1alpha1.ApplicationSet) + +func withExternalName(v string) ApplicationSetModifier { + return func(s *v1alpha1.ApplicationSet) { + meta.SetExternalName(s, v) + } +} + +func withName(v string) ApplicationSetModifier { + return func(s *v1alpha1.ApplicationSet) { + s.Name = v + } +} + +func withSpec(p v1alpha1.ApplicationSetParameters) ApplicationSetModifier { + return func(r *v1alpha1.ApplicationSet) { r.Spec.ForProvider = p } +} + +func withObservation(p v1alpha1.ArgoApplicationSetStatus) ApplicationSetModifier { + return func(r *v1alpha1.ApplicationSet) { r.Status.AtProvider = p } +} + +func withConditions(c ...xpv1.Condition) ApplicationSetModifier { + return func(r *v1alpha1.ApplicationSet) { r.Status.ConditionedStatus.Conditions = c } +} + +type args struct { + cr *v1alpha1.ApplicationSet + client applicationsets.ServiceClient +} + +func TestObserve(t *testing.T) { + type want struct { + cr *v1alpha1.ApplicationSet + result managed.ExternalObservation + err error + } + + cases := map[string]struct { + reason string + args args + want want + }{ + "SuccessfulAvailable": { + args: args{ + client: withMockClient(t, func(m *mockclient.MockServiceClient) { + m.EXPECT().Get(gomock.Any(), &argoapplicationset.ApplicationSetGetQuery{ + Name: testApplicationSetExternalName, + }).Return( + &argocdv1alpha1.ApplicationSet{ + Spec: argocdv1alpha1.ApplicationSetSpec{ + Template: argocdv1alpha1.ApplicationSetTemplate{ + ApplicationSetTemplateMeta: argocdv1alpha1.ApplicationSetTemplateMeta{ + Name: testTemplateName, + }, + Spec: argocdv1alpha1.ApplicationSpec{ + Project: testProjectName, + }, + }, + }, + Status: argocdv1alpha1.ApplicationSetStatus{ + Conditions: []argocdv1alpha1.ApplicationSetCondition{ + {Type: argocdv1alpha1.ApplicationSetConditionErrorOccurred}, + }, + }, + }, + nil) + }), + cr: ApplicationSet( + withExternalName(testApplicationSetExternalName), + withSpec(simpleApplicationSetParameters()), + ), + }, + want: want{ + cr: ApplicationSet( + withExternalName(testApplicationSetExternalName), + withSpec(simpleApplicationSetParameters()), + withConditions(xpv1.Available()), + withObservation(v1alpha1.ArgoApplicationSetStatus{ + Conditions: []v1alpha1.ApplicationSetCondition{ + {Type: "ErrorOccurred"}, + }, + }), + ), + result: managed.ExternalObservation{ + ResourceExists: true, + ResourceUpToDate: true, + ResourceLateInitialized: false, + }, + err: nil, + }, + }, + "ProjectName different, needsUpdate": { + args: args{ + client: withMockClient(t, func(m *mockclient.MockServiceClient) { + m.EXPECT().Get(gomock.Any(), &argoapplicationset.ApplicationSetGetQuery{ + Name: testApplicationSetExternalName, + }).Return( + &argocdv1alpha1.ApplicationSet{ + Spec: argocdv1alpha1.ApplicationSetSpec{ + Template: argocdv1alpha1.ApplicationSetTemplate{ + ApplicationSetTemplateMeta: argocdv1alpha1.ApplicationSetTemplateMeta{ + Name: testTemplateName, + }, + Spec: argocdv1alpha1.ApplicationSpec{ + Project: otherProjectName, + }, + }, + }, + }, + nil) + }), + cr: ApplicationSet( + withExternalName(testApplicationSetExternalName), + withSpec(simpleApplicationSetParameters()), + ), + }, + want: want{ + cr: ApplicationSet( + withExternalName(testApplicationSetExternalName), + withSpec(simpleApplicationSetParameters()), + withConditions(xpv1.Available()), + ), + result: managed.ExternalObservation{ + ResourceExists: true, + ResourceUpToDate: false, + ResourceLateInitialized: false, + }, + err: nil, + }, + }, + "Get of ApplicationSet fails, returns error": { + args: args{ + client: withMockClient(t, func(m *mockclient.MockServiceClient) { + m.EXPECT().Get(gomock.Any(), &argoapplicationset.ApplicationSetGetQuery{ + Name: testApplicationSetExternalName, + }).Return( + nil, errBoom) + }), + cr: ApplicationSet( + withExternalName(testApplicationSetExternalName), + ), + }, + want: want{ + cr: ApplicationSet( + withExternalName(testApplicationSetExternalName), + ), + result: managed.ExternalObservation{}, + err: errors.Wrap(errBoom, errGetApplicationSet), + }, + }, + "ApplicationSet does not exists, needsCreate": { + args: args{ + client: withMockClient(t, func(m *mockclient.MockServiceClient) { + m.EXPECT().Get(gomock.Any(), &argoapplicationset.ApplicationSetGetQuery{ + Name: testApplicationSetExternalName, + }).Return( + nil, notFoundErr(), + ) + }), + cr: ApplicationSet( + withExternalName(testApplicationSetExternalName), + withSpec(simpleApplicationSetParameters()), + ), + }, + want: want{ + cr: ApplicationSet( + withExternalName(testApplicationSetExternalName), + withSpec(simpleApplicationSetParameters()), + ), + result: managed.ExternalObservation{ + ResourceExists: false, + ResourceUpToDate: false, + ResourceLateInitialized: false, + }, + err: nil, + }, + }, + "No external name, needsCreate": { + args: args{ + client: withMockClient(t, func(m *mockclient.MockServiceClient) {}), + cr: ApplicationSet( + withName(testApplicationSetExternalName), + withSpec(simpleApplicationSetParameters()), + ), + }, + want: want{ + cr: ApplicationSet( + withName(testApplicationSetExternalName), + withSpec(simpleApplicationSetParameters()), + ), + result: managed.ExternalObservation{ + ResourceExists: false, + }, + err: nil, + }, + }, + } + + for name, tc := range cases { + t.Run(name, func(t *testing.T) { + e := external{client: tc.args.client} + o, err := e.Observe(context.TODO(), tc.args.cr) + if diff := cmp.Diff(tc.want.err, err, test.EquateErrors()); diff != "" { + t.Errorf("r: -want, +got:\n%s", diff) + } + if diff := cmp.Diff(tc.want.cr, tc.args.cr, test.EquateConditions()); diff != "" { + t.Errorf("r: -want, +got:\n%s", diff) + } + if diff := cmp.Diff(tc.want.result, o); diff != "" { + t.Errorf("r: -want, +got:\n%s", diff) + } + }) + } +} + +func notFoundErr() error { + return status.Errorf(codes.NotFound, "not found") +} + +func simpleApplicationSetParameters() v1alpha1.ApplicationSetParameters { + return v1alpha1.ApplicationSetParameters{ + Template: v1alpha1.ApplicationSetTemplate{ + ApplicationSetTemplateMeta: v1alpha1.ApplicationSetTemplateMeta{ + Name: testTemplateName, + }, + Spec: v1alpha1.ApplicationSpec{ + Project: testProjectName, + }, + }, + } +} + +func TestCreate(t *testing.T) { + type want struct { + cr *v1alpha1.ApplicationSet + result managed.ExternalCreation + err error + } + + cases := map[string]struct { + args + want + }{ + "Successful": { + args: args{ + client: withMockClient(t, func(m *mockclient.MockServiceClient) { + m.EXPECT().Create( + gomock.Any(), + &argoapplicationset.ApplicationSetCreateRequest{ + Applicationset: &argocdv1alpha1.ApplicationSet{ + ObjectMeta: metav1.ObjectMeta{ + Name: testApplicationSetExternalName, + }, + Spec: *ArgoAppSpec(), + }, + }, + ).Return( + &argocdv1alpha1.ApplicationSet{ + ObjectMeta: metav1.ObjectMeta{ + Name: testApplicationSetExternalName, + }, + }, nil) + }), + cr: ApplicationSet( + withExternalName(testApplicationSetExternalName), + withName(testApplicationSetExternalName), + ), + }, + want: want{ + cr: ApplicationSet( + withExternalName(testApplicationSetExternalName), + withName(testApplicationSetExternalName), + ), + result: managed.ExternalCreation{}, + err: nil, + }, + }, + "CreateSystemFailed": { + args: args{ + client: withMockClient(t, func(mcs *mockclient.MockServiceClient) { + mcs.EXPECT().Create( + gomock.Any(), + gomock.Any(), + ).Return( + nil, errBoom) + }), + cr: ApplicationSet( + withExternalName(testApplicationSetExternalName), + withName(testApplicationSetExternalName), + ), + }, + want: want{ + cr: ApplicationSet( + withExternalName(testApplicationSetExternalName), + withName(testApplicationSetExternalName), + ), + result: managed.ExternalCreation{}, + err: errBoom, + }, + }, + } + + for name, tc := range cases { + t.Run(name, func(t *testing.T) { + e := &external{client: tc.args.client} + o, err := e.Create(context.TODO(), tc.args.cr) + + if diff := cmp.Diff(tc.want.err, err, test.EquateErrors()); diff != "" { + t.Errorf("r: -want, +got:\n%s", diff) + } + if diff := cmp.Diff(tc.want.cr, tc.args.cr, test.EquateConditions()); diff != "" { + t.Errorf("r: -want, +got:\n%s", diff) + } + if diff := cmp.Diff(tc.want.result, o); diff != "" { + t.Errorf("r: -want, +got:\n%s", diff) + } + }) + } +} + +type ArgoApplicationSetSpecModifier func(*argocdv1alpha1.ApplicationSetSpec) + +func ArgoAppSpec(m ...ArgoApplicationSetSpecModifier) *argocdv1alpha1.ApplicationSetSpec { + cr := argocdv1alpha1.ApplicationSetSpec{ + Template: argocdv1alpha1.ApplicationSetTemplate{ + ApplicationSetTemplateMeta: argocdv1alpha1.ApplicationSetTemplateMeta{ + Labels: map[string]string{}, + Annotations: map[string]string{}, + }, + }, + } + for _, f := range m { + f(&cr) + } + return &cr +} + +func TestUpdate(t *testing.T) { + type want struct { + cr *v1alpha1.ApplicationSet + result managed.ExternalUpdate + err error + } + + cases := map[string]struct { + args + want + }{ + "Successful": { + args: args{ + client: withMockClient(t, func(mcs *mockclient.MockServiceClient) { + mcs.EXPECT().Create( + gomock.Any(), + &argoapplicationset.ApplicationSetCreateRequest{ + Applicationset: &argocdv1alpha1.ApplicationSet{ + ObjectMeta: metav1.ObjectMeta{ + Name: testApplicationSetExternalName, + }, + Spec: *ArgoAppSpec(), + }, + Upsert: true, + }, + ).Return(&argocdv1alpha1.ApplicationSet{ + ObjectMeta: metav1.ObjectMeta{ + Name: testApplicationSetExternalName, + }, + }, nil) + }), + cr: ApplicationSet( + withExternalName(testApplicationSetExternalName), + withSpec(v1alpha1.ApplicationSetParameters{}), + ), + }, + want: want{ + cr: ApplicationSet( + withExternalName(testApplicationSetExternalName), + withSpec(v1alpha1.ApplicationSetParameters{}), + ), + result: managed.ExternalUpdate{}, + err: nil, + }, + }, + "UpdateFailed": { + args: args{ + client: withMockClient(t, func(mcs *mockclient.MockServiceClient) { + mcs.EXPECT().Create( + gomock.Any(), + &argoapplicationset.ApplicationSetCreateRequest{ + Applicationset: &argocdv1alpha1.ApplicationSet{ + ObjectMeta: metav1.ObjectMeta{ + Name: testApplicationSetExternalName, + }, + Spec: *ArgoAppSpec(), + }, + Upsert: true, + }, + ).Return(nil, errBoom) + }), + cr: ApplicationSet( + withExternalName(testApplicationSetExternalName), + ), + }, + want: want{ + cr: ApplicationSet( + withExternalName(testApplicationSetExternalName), + ), + result: managed.ExternalUpdate{}, + err: errBoom, + }, + }, + } + + for name, tc := range cases { + t.Run(name, func(t *testing.T) { + e := &external{client: tc.client} + u, err := e.Update(context.Background(), tc.args.cr) + + if diff := cmp.Diff(tc.want.err, err, test.EquateErrors()); diff != "" { + t.Errorf("r: -want, +got:\n%s", diff) + } + if diff := cmp.Diff(tc.want.cr, tc.args.cr, test.EquateConditions()); diff != "" { + t.Errorf("r: -want, +got:\n%s", diff) + } + if diff := cmp.Diff(tc.want.result, u); diff != "" { + t.Errorf("r: -want, +got:\n%s", diff) + } + }) + } +} + +func TestDelete(t *testing.T) { + type want struct { + cr *v1alpha1.ApplicationSet + err error + } + + cases := map[string]struct { + args + want + }{ + "Successful": { + args: args{ + client: withMockClient(t, func(mcs *mockclient.MockServiceClient) { + mcs.EXPECT().Delete( + gomock.Any(), + &argoapplicationset.ApplicationSetDeleteRequest{ + Name: testApplicationSetExternalName, + }, + ).Return(&argoapplicationset.ApplicationSetResponse{}, nil) + }), + cr: ApplicationSet( + withExternalName(testApplicationSetExternalName), + ), + }, + want: want{ + cr: ApplicationSet( + withExternalName(testApplicationSetExternalName), + ), + err: nil, + }, + }, + "DeleteFailed": { + args: args{ + client: withMockClient(t, func(mcs *mockclient.MockServiceClient) { + mcs.EXPECT().Delete( + gomock.Any(), + &argoapplicationset.ApplicationSetDeleteRequest{ + Name: testApplicationSetExternalName, + }, + ).Return(&argoapplicationset.ApplicationSetResponse{}, errBoom) + }), + cr: ApplicationSet( + withExternalName(testApplicationSetExternalName), + ), + }, + want: want{ + cr: ApplicationSet( + withExternalName(testApplicationSetExternalName), + ), + err: errBoom, + }, + }, + } + + for name, tc := range cases { + t.Run(name, func(t *testing.T) { + e := &external{client: tc.client} + err := e.Delete(context.Background(), tc.args.cr) + + if diff := cmp.Diff(tc.want.err, err, test.EquateErrors()); diff != "" { + t.Errorf("r: -want, +got:\n%s", diff) + } + if diff := cmp.Diff(tc.want.cr, tc.args.cr, test.EquateConditions()); diff != "" { + t.Errorf("r: -want, +got:\n%s", diff) + } + }) + } +} diff --git a/pkg/controller/argocd.go b/pkg/controller/argocd.go index 87fbeb4..4867701 100644 --- a/pkg/controller/argocd.go +++ b/pkg/controller/argocd.go @@ -22,6 +22,7 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/logging" "github.com/crossplane-contrib/provider-argocd/pkg/controller/applications" + "github.com/crossplane-contrib/provider-argocd/pkg/controller/applicationsets" "github.com/crossplane-contrib/provider-argocd/pkg/controller/cluster" "github.com/crossplane-contrib/provider-argocd/pkg/controller/config" "github.com/crossplane-contrib/provider-argocd/pkg/controller/projects" @@ -37,6 +38,7 @@ func Setup(mgr ctrl.Manager, l logging.Logger) error { projects.SetupProject, cluster.SetupCluster, applications.SetupApplication, + applicationsets.SetupApplicationSet, } { if err := setup(mgr, l); err != nil { return err