diff --git a/README.md b/README.md index aa47844..a363cff 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,9 @@ The local configuration is placed in the subfolder of the composition to be crea | tags.globalHandling.fromLabels | "append" or "replace" | If append, the tags in tags.fromLabels are appended to the tags in the global configuration tags.fromLabels, otherwise those will be replaced | | tags.globalHandling.common | "append" or "replace" | If append, the tags in labels.common are appended to the tasg in the global configuration tags.common, otherwise those will be replaced | | overrideFieldsInClaim | object | This optional property can be used to override the names in the composite and the claim or add properties. See description below | +| patchName | boolean | If set to false, the name of the object will not be patched, otherwise`patchExternalName` decides if the name of the claim will be patched to `metadata.name` or `metadata.annotations[crossplane.io/external-name]` | +| patchExternalName | boolean | Decides if if the name of the claim will be patched to `metadata.name` or `metadata.annotations[crossplane.io/external-name]`. Not applied if `patchName` is false | + ## overrideFieldsInClaim diff --git a/package/IAM-InstanceProfile/composition-instanceprofile.yaml b/package/IAM-InstanceProfile/composition-instanceprofile.yaml index da2b129..48e0f4d 100644 --- a/package/IAM-InstanceProfile/composition-instanceprofile.yaml +++ b/package/IAM-InstanceProfile/composition-instanceprofile.yaml @@ -1,7 +1,7 @@ ## WARNING: This file was autogenerated! ## Manual modifications will be overwritten ## unless ignore: true is set in generate.yaml! -## Last Modification: 11:59:22 on 04-25-2023. +## Last Modification: 08:00:35 on 08-30-2023. apiVersion: apiextensions.crossplane.io/v1 kind: Composition diff --git a/package/IAM-Policy/composition-policy.yaml b/package/IAM-Policy/composition-policy.yaml index da17140..69b1aaa 100644 --- a/package/IAM-Policy/composition-policy.yaml +++ b/package/IAM-Policy/composition-policy.yaml @@ -1,7 +1,7 @@ ## WARNING: This file was autogenerated! ## Manual modifications will be overwritten ## unless ignore: true is set in generate.yaml! -## Last Modification: 20:03:39 on 04-28-2023. +## Last Modification: 08:00:35 on 08-30-2023. apiVersion: apiextensions.crossplane.io/v1 kind: Composition diff --git a/package/IAM-Role/composition-role.yaml b/package/IAM-Role/composition-role.yaml index 0c1a672..7424e5b 100644 --- a/package/IAM-Role/composition-role.yaml +++ b/package/IAM-Role/composition-role.yaml @@ -1,7 +1,7 @@ ## WARNING: This file was autogenerated! ## Manual modifications will be overwritten ## unless ignore: true is set in generate.yaml! -## Last Modification: 11:59:23 on 04-25-2023. +## Last Modification: 08:00:36 on 08-30-2023. apiVersion: apiextensions.crossplane.io/v1 kind: Composition diff --git a/package/IAM-RolePolicyAttachment/composition-rolepolicyattachment.yaml b/package/IAM-RolePolicyAttachment/composition-rolepolicyattachment.yaml index 680d032..e99516b 100644 --- a/package/IAM-RolePolicyAttachment/composition-rolepolicyattachment.yaml +++ b/package/IAM-RolePolicyAttachment/composition-rolepolicyattachment.yaml @@ -1,7 +1,7 @@ ## WARNING: This file was autogenerated! ## Manual modifications will be overwritten ## unless ignore: true is set in generate.yaml! -## Last Modification: 11:59:24 on 04-25-2023. +## Last Modification: 08:00:55 on 08-30-2023. apiVersion: apiextensions.crossplane.io/v1 kind: Composition diff --git a/package/KMS-Alias/composition-alias.yaml b/package/KMS-Alias/composition-alias.yaml index 5fbc20a..01f0f55 100644 --- a/package/KMS-Alias/composition-alias.yaml +++ b/package/KMS-Alias/composition-alias.yaml @@ -1,7 +1,7 @@ ## WARNING: This file was autogenerated! ## Manual modifications will be overwritten ## unless ignore: true is set in generate.yaml! -## Last Modification: 11:59:25 on 04-25-2023. +## Last Modification: 08:00:37 on 08-30-2023. apiVersion: apiextensions.crossplane.io/v1 kind: Composition diff --git a/package/KMS-Key/composition-key.yaml b/package/KMS-Key/composition-key.yaml index cb42f17..d16b639 100644 --- a/package/KMS-Key/composition-key.yaml +++ b/package/KMS-Key/composition-key.yaml @@ -1,7 +1,7 @@ ## WARNING: This file was autogenerated! ## Manual modifications will be overwritten ## unless ignore: true is set in generate.yaml! -## Last Modification: 11:59:25 on 04-25-2023. +## Last Modification: 08:00:37 on 08-30-2023. apiVersion: apiextensions.crossplane.io/v1 kind: Composition diff --git a/package/Kafka/composition-configuration.yaml b/package/Kafka-Configuration/composition-configuration.yaml similarity index 99% rename from package/Kafka/composition-configuration.yaml rename to package/Kafka-Configuration/composition-configuration.yaml index 3be9401..24c2c8c 100644 --- a/package/Kafka/composition-configuration.yaml +++ b/package/Kafka-Configuration/composition-configuration.yaml @@ -1,7 +1,7 @@ ## WARNING: This file was autogenerated! ## Manual modifications will be overwritten ## unless ignore: true is set in generate.yaml! -## Last Modification: 11:59:26 on 04-25-2023. +## Last Modification: 08:00:37 on 08-30-2023. apiVersion: apiextensions.crossplane.io/v1 kind: Composition diff --git a/package/Kafka/definition.yaml b/package/Kafka-Configuration/definition.yaml similarity index 100% rename from package/Kafka/definition.yaml rename to package/Kafka-Configuration/definition.yaml diff --git a/package/Kafka/generate.yaml b/package/Kafka-Configuration/generate.yaml similarity index 100% rename from package/Kafka/generate.yaml rename to package/Kafka-Configuration/generate.yaml diff --git a/package/Kafka-TopicCcl/composition-topicacl.yaml b/package/Kafka-TopicCcl/composition-topicacl.yaml new file mode 100644 index 0000000..e771d03 --- /dev/null +++ b/package/Kafka-TopicCcl/composition-topicacl.yaml @@ -0,0 +1,207 @@ +## WARNING: This file was autogenerated! +## Manual modifications will be overwritten +## unless ignore: true is set in generate.yaml! +## Last Modification: 07:52:43 on 08-30-2023. + +apiVersion: apiextensions.crossplane.io/v1 +kind: Composition +metadata: + labels: + example.cloud/provider: sop + name: compositetopicacl.kafka.aws.example.cloud +spec: + compositeTypeRef: + apiVersion: kafka.aws.example.cloud/v1alpha1 + kind: CompositeTopicAcl + patchSets: + - name: Common + patches: + - fromFieldPath: metadata.labels['crossplane.io/claim-name'] + policy: + fromFieldPath: Optional + toFieldPath: metadata.labels['crossplane.io/claim-name'] + type: FromCompositeFieldPath + - fromFieldPath: metadata.labels['crossplane.io/claim-namespace'] + policy: + fromFieldPath: Optional + toFieldPath: metadata.labels['crossplane.io/claim-namespace'] + type: FromCompositeFieldPath + - fromFieldPath: metadata.labels['crossplane.io/composite'] + policy: + fromFieldPath: Optional + toFieldPath: metadata.labels['crossplane.io/composite'] + type: FromCompositeFieldPath + - fromFieldPath: metadata.labels['external-name'] + policy: + fromFieldPath: Optional + toFieldPath: metadata.labels['external-name'] + type: FromCompositeFieldPath + - name: Parameters + patches: + - fromFieldPath: spec.deletionPolicy + policy: + fromFieldPath: Optional + toFieldPath: spec.deletionPolicy + type: FromCompositeFieldPath + - fromFieldPath: spec.forProvider.resourceHost + policy: + fromFieldPath: Optional + toFieldPath: spec.forProvider.resourceHost + type: FromCompositeFieldPath + - fromFieldPath: spec.forProvider.resourceName + policy: + fromFieldPath: Optional + toFieldPath: spec.forProvider.resourceName + type: FromCompositeFieldPath + - fromFieldPath: spec.forProvider.resourceOperation + policy: + fromFieldPath: Optional + toFieldPath: spec.forProvider.resourceOperation + type: FromCompositeFieldPath + - fromFieldPath: spec.forProvider.resourcePatternTypeFilter + policy: + fromFieldPath: Optional + toFieldPath: spec.forProvider.resourcePatternTypeFilter + type: FromCompositeFieldPath + - fromFieldPath: spec.forProvider.resourcePermissionType + policy: + fromFieldPath: Optional + toFieldPath: spec.forProvider.resourcePermissionType + type: FromCompositeFieldPath + - fromFieldPath: spec.forProvider.resourcePrincipal + policy: + fromFieldPath: Optional + toFieldPath: spec.forProvider.resourcePrincipal + type: FromCompositeFieldPath + - fromFieldPath: spec.forProvider.resourceType + policy: + fromFieldPath: Optional + toFieldPath: spec.forProvider.resourceType + type: FromCompositeFieldPath + - fromFieldPath: spec.providerConfigRef.name + policy: + fromFieldPath: Optional + toFieldPath: spec.providerConfigRef.name + type: FromCompositeFieldPath + - fromFieldPath: spec.providerConfigRef.policy.resolution + policy: + fromFieldPath: Optional + toFieldPath: spec.providerConfigRef.policy.resolution + type: FromCompositeFieldPath + - fromFieldPath: spec.providerConfigRef.policy.resolve + policy: + fromFieldPath: Optional + toFieldPath: spec.providerConfigRef.policy.resolve + type: FromCompositeFieldPath + - fromFieldPath: spec.publishConnectionDetailsTo.configRef.name + policy: + fromFieldPath: Optional + toFieldPath: spec.publishConnectionDetailsTo.configRef.name + type: FromCompositeFieldPath + - fromFieldPath: spec.publishConnectionDetailsTo.configRef.policy.resolution + policy: + fromFieldPath: Optional + toFieldPath: spec.publishConnectionDetailsTo.configRef.policy.resolution + type: FromCompositeFieldPath + - fromFieldPath: spec.publishConnectionDetailsTo.configRef.policy.resolve + policy: + fromFieldPath: Optional + toFieldPath: spec.publishConnectionDetailsTo.configRef.policy.resolve + type: FromCompositeFieldPath + - fromFieldPath: spec.publishConnectionDetailsTo.metadata.annotations + policy: + fromFieldPath: Optional + toFieldPath: spec.publishConnectionDetailsTo.metadata.annotations + type: FromCompositeFieldPath + - fromFieldPath: spec.publishConnectionDetailsTo.metadata.labels + policy: + fromFieldPath: Optional + toFieldPath: spec.publishConnectionDetailsTo.metadata.labels + type: FromCompositeFieldPath + - fromFieldPath: spec.publishConnectionDetailsTo.metadata.type + policy: + fromFieldPath: Optional + toFieldPath: spec.publishConnectionDetailsTo.metadata.type + type: FromCompositeFieldPath + - fromFieldPath: spec.publishConnectionDetailsTo.name + policy: + fromFieldPath: Optional + toFieldPath: spec.publishConnectionDetailsTo.name + type: FromCompositeFieldPath + - name: Labels + patches: + - fromFieldPath: metadata.labels['controlling.example.cloud/cost-reference'] + policy: + fromFieldPath: Optional + toFieldPath: metadata.labels['controlling.example.cloud/cost-reference'] + type: FromCompositeFieldPath + - fromFieldPath: metadata.labels['controlling.example.cloud/owner'] + policy: + fromFieldPath: Optional + toFieldPath: metadata.labels['controlling.example.cloud/owner'] + type: FromCompositeFieldPath + - fromFieldPath: metadata.labels['controlling.example.cloud/product'] + policy: + fromFieldPath: Optional + toFieldPath: metadata.labels['controlling.example.cloud/product'] + type: FromCompositeFieldPath + - fromFieldPath: metadata.labels['tags.example.cloud/account'] + policy: + fromFieldPath: Optional + toFieldPath: metadata.labels['tags.example.cloud/account'] + type: FromCompositeFieldPath + - fromFieldPath: metadata.labels['tags.example.cloud/environment'] + policy: + fromFieldPath: Optional + toFieldPath: metadata.labels['tags.example.cloud/environment'] + type: FromCompositeFieldPath + - fromFieldPath: metadata.labels['tags.example.cloud/protection-requirement'] + policy: + fromFieldPath: Optional + toFieldPath: metadata.labels['tags.example.cloud/protection-requirement'] + type: FromCompositeFieldPath + - fromFieldPath: metadata.labels['tags.example.cloud/repourl'] + policy: + fromFieldPath: Optional + toFieldPath: metadata.labels['tags.example.cloud/repourl'] + type: FromCompositeFieldPath + - fromFieldPath: metadata.labels['tags.example.cloud/zone'] + policy: + fromFieldPath: Optional + toFieldPath: metadata.labels['tags.example.cloud/zone'] + type: FromCompositeFieldPath + resources: + - base: + apiVersion: acl.kafka.crossplane.io/v1alpha1 + kind: AccessControlList + metadata: + labels: + commonLabelA: commonLabelAValue + commonLabelB: commonLabelBValue + spec: + forProvider: {} + providerConfigRef: + name: default + name: AccessControlList + patches: + - patchSetName: Common + type: PatchSet + - patchSetName: Parameters + type: PatchSet + - patchSetName: Labels + type: PatchSet + - fromFieldPath: status.atProvider.id + policy: + fromFieldPath: Optional + toFieldPath: status.atProvider.id + type: ToCompositeFieldPath + - fromFieldPath: metadata.annotations["crossplane.io/external-name"] + policy: + fromFieldPath: Optional + toFieldPath: status.uid + type: ToCompositeFieldPath + - fromFieldPath: status.conditions + policy: + fromFieldPath: Optional + toFieldPath: status.observed.conditions + type: ToCompositeFieldPath diff --git a/package/Kafka-TopicCcl/definition.yaml b/package/Kafka-TopicCcl/definition.yaml new file mode 100644 index 0000000..27eed0b --- /dev/null +++ b/package/Kafka-TopicCcl/definition.yaml @@ -0,0 +1,253 @@ +## WARNING: This file was autogenerated! +## Manual modifications will be overwritten +## unless ignore: true is set in generate.yaml! +## Last Modification: 07:52:43 on 08-30-2023. + +apiVersion: apiextensions.crossplane.io/v1 +kind: CompositeResourceDefinition +metadata: + name: compositetopicacls.kafka.aws.example.cloud +spec: + claimNames: + kind: TopicAcl + plural: topicacls + group: kafka.aws.example.cloud + names: + categories: + - crossplane + - composition + - kafka + kind: CompositeTopicAcl + plural: compositetopicacls + versions: + - additionalPrinterColumns: + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + referenceable: true + schema: + openAPIV3Schema: + properties: + spec: + description: An AccessControlListSpec defines the desired state of an + AccessControlList + 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: AccessControlListParameters are the configurable fields + of a AccessControlList. + properties: + resourceHost: + description: ResourceHost is the Host from which principal listed + in ResourcePrinciple will have access. + type: string + resourceName: + description: ResourceName is the name of the resource. + type: string + resourceOperation: + description: ResourceOperation is the Operation that is being + allowed or denied. Valid values are Unknown, Any, All, Read, + Write, Create, Delete, Alter, Describe, ClusterAction, DescribeConfigs, + AlterConfigs, IdempotentWrite. + enum: + - Unknown + - Any + - All + - Read + - Write + - Create + - Delete + - Alter + - Describe + - ClusterAction + - DescribeConfigs + - AlterConfigs + - IdempotentWrite + type: string + resourcePatternTypeFilter: + description: ResourcePatternTypeFilter is the pattern filter. + Valid values are Prefixed, Any, Match, Literal. + enum: + - Prefixed + - Any + - Match + - Literal + type: string + resourcePermissionType: + description: ResourcePermissionType is the Type of permission. + Valid values are Unknown, Any, Allow, Deny. + enum: + - Unknown + - Any + - Allow + - Deny + type: string + resourcePrincipal: + description: ResourcePrincipal is the Principal that is being + allowed or denied. + type: string + resourceType: + description: ResourceType is the type of resource. Valid values + are Unknown, Any, Topic, Group, Cluster, TransactionalID + enum: + - Unknown + - Any + - Topic + - Group + - Cluster + - TransactionalID + type: string + required: + - resourceHost + - resourceName + - resourceOperation + - resourcePatternTypeFilter + - resourcePermissionType + - resourcePrincipal + - resourceType + type: object + providerConfigRef: + 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 + 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: + 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 + required: + - forProvider + type: object + status: + description: A AccessControlListStatus represents the observed state of + a AccessControlList. + properties: + atProvider: + description: AccessControlListObservation are the observable fields + of an AccessControlList + properties: + id: + type: string + type: object + observed: + description: Freeform field containing information about the observed + status. + type: object + x-kubernetes-preserve-unknown-fields: true + uid: + description: The unique ID of this TopicAcl resource reported by the + provider + type: string + type: object + served: true diff --git a/package/Kafka-TopicCcl/generate.yaml b/package/Kafka-TopicCcl/generate.yaml new file mode 100644 index 0000000..bd43de7 --- /dev/null +++ b/package/Kafka-TopicCcl/generate.yaml @@ -0,0 +1,16 @@ +group: kafka.aws.example.cloud +name: TopicAcl +version: v1alpha1 +provider: + baseURL: https://raw.githubusercontent.com/crossplane-contrib/%s/%s/package/crds/%s + name: provider-kafka + version: v0.4.0 + crd: + file: acl.kafka.crossplane.io_accesscontrollists.yaml + version: v1alpha1 +patchExternalName: false +patchName: false +compositions: + - name: topicacl + provider: sop + default: true diff --git a/package/RDS-DBInstance/composition-dbinstance.yaml b/package/RDS-DBInstance/composition-dbinstance.yaml index e5af126..6f2e100 100644 --- a/package/RDS-DBInstance/composition-dbinstance.yaml +++ b/package/RDS-DBInstance/composition-dbinstance.yaml @@ -1,7 +1,7 @@ ## WARNING: This file was autogenerated! ## Manual modifications will be overwritten ## unless ignore: true is set in generate.yaml! -## Last Modification: 11:59:27 on 04-25-2023. +## Last Modification: 08:00:38 on 08-30-2023. apiVersion: apiextensions.crossplane.io/v1 kind: Composition diff --git a/package/S3-Bucket/composition-bucket.yaml b/package/S3-Bucket/composition-bucket.yaml index e152aee..dd4112b 100644 --- a/package/S3-Bucket/composition-bucket.yaml +++ b/package/S3-Bucket/composition-bucket.yaml @@ -1,7 +1,7 @@ ## WARNING: This file was autogenerated! ## Manual modifications will be overwritten ## unless ignore: true is set in generate.yaml! -## Last Modification: 11:59:28 on 04-25-2023. +## Last Modification: 08:00:39 on 08-30-2023. apiVersion: apiextensions.crossplane.io/v1 kind: Composition diff --git a/package/S3-BucketPolicy/composition-bucketpolicy.yaml b/package/S3-BucketPolicy/composition-bucketpolicy.yaml index 90be112..aada82e 100644 --- a/package/S3-BucketPolicy/composition-bucketpolicy.yaml +++ b/package/S3-BucketPolicy/composition-bucketpolicy.yaml @@ -1,7 +1,7 @@ ## WARNING: This file was autogenerated! ## Manual modifications will be overwritten ## unless ignore: true is set in generate.yaml! -## Last Modification: 11:59:28 on 04-25-2023. +## Last Modification: 08:00:40 on 08-30-2023. apiVersion: apiextensions.crossplane.io/v1 kind: Composition diff --git a/package/ZPA-SegmentGroup/composition-segmentgroup.yaml b/package/ZPA-SegmentGroup/composition-segmentgroup.yaml index dd6d67e..33a62e8 100644 --- a/package/ZPA-SegmentGroup/composition-segmentgroup.yaml +++ b/package/ZPA-SegmentGroup/composition-segmentgroup.yaml @@ -1,7 +1,7 @@ ## WARNING: This file was autogenerated! ## Manual modifications will be overwritten ## unless ignore: true is set in generate.yaml! -## Last Modification: 11:59:29 on 04-25-2023. +## Last Modification: 08:00:40 on 08-30-2023. apiVersion: apiextensions.crossplane.io/v1 kind: Composition diff --git a/pkg/functions/generate.jsonnet b/pkg/functions/generate.jsonnet index a02bd4b..5b7e8c9 100644 --- a/pkg/functions/generate.jsonnet +++ b/pkg/functions/generate.jsonnet @@ -106,15 +106,16 @@ local definitionStatus = k8s.GenerateSchema( apiVersion: s.config.group + '/' + s.config.version, kind: "Composite"+s.config.name, }, - patchSets: [ - { + patchSets: (if std.objectHas(s.config, 'patchName') == false || s.config.patchName == true then [{ name: 'Name', patches: [{ type: 'FromCompositeFieldPath', fromFieldPath: 'metadata.labels[crossplane.io/claim-name]', toFieldPath: if std.objectHas(s.config, 'patchExternalName') && s.config.patchExternalName == false then 'metadata.name' else 'metadata.annotations[crossplane.io/external-name]', }], - }, + + }] else []) + +[ { name: 'Common', patches: k8s.GenLabelsPatch(s.globalLabels) diff --git a/pkg/main.go b/pkg/main.go index 59a627b..84bc8c0 100644 --- a/pkg/main.go +++ b/pkg/main.go @@ -112,6 +112,7 @@ type Generator struct { ConnectionSecretKeys *[]string `yaml:"connectionSecretKeys,omitempty" json:"connectionSecretKeys,omitempty"` Ignore bool `yaml:"ignore"` PatchExternalName *bool `yaml:"patchExternalName,omitempty" json:"patchExternalName,omitempty"` + PatchlName *bool `yaml:"patchName,omitempty" json:"patchName,omitempty"` UIDFieldPath *string `yaml:"uidFieldPath,omitempty" json:"uidFieldPath,omitempty"` OverrideFields []OverrideField `yaml:"overrideFields" json:"overrideFields"` Compositions []Composition `yaml:"compositions" json:"compositions"`