diff --git a/crossplane-crd-model/src/main/resources/kubernetes/apiextensions.crossplane.io_compositeresourcedefinitions.yaml b/crossplane-crd-model/src/main/resources/kubernetes/apiextensions.crossplane.io_compositeresourcedefinitions.yaml index 602690a..7ce85e2 100644 --- a/crossplane-crd-model/src/main/resources/kubernetes/apiextensions.crossplane.io_compositeresourcedefinitions.yaml +++ b/crossplane-crd-model/src/main/resources/kubernetes/apiextensions.crossplane.io_compositeresourcedefinitions.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.14.0 + controller-gen.kubebuilder.io/version: v0.13.0 name: compositeresourcedefinitions.apiextensions.crossplane.io spec: group: apiextensions.crossplane.io @@ -31,25 +31,19 @@ spec: name: v1 schema: openAPIV3Schema: - description: |- - A CompositeResourceDefinition defines a new kind of composite infrastructure - resource. The new resource is composed of other composite or managed - infrastructure resources. + description: A CompositeResourceDefinition defines a new kind of composite + infrastructure resource. The new resource is composed of other composite + or managed infrastructure resources. 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 + 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 + 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 @@ -58,45 +52,42 @@ spec: of the definition. properties: claimNames: - description: |- - ClaimNames specifies the names of an optional composite resource claim. - When claim names are specified Crossplane will create a namespaced - 'composite resource claim' CRD that corresponds to the defined composite - resource. This composite resource claim acts as a namespaced proxy for - the composite resource; creating, updating, or deleting the claim will - create, update, or delete a corresponding composite resource. You may add - claim names to an existing CompositeResourceDefinition, but they cannot - be changed or removed once they have been set. + description: ClaimNames specifies the names of an optional composite + resource claim. When claim names are specified Crossplane will create + a namespaced 'composite resource claim' CRD that corresponds to + the defined composite resource. This composite resource claim acts + as a namespaced proxy for the composite resource; creating, updating, + or deleting the claim will create, update, or delete a corresponding + composite resource. You may add claim names to an existing CompositeResourceDefinition, + but they cannot be changed or removed once they have been set. properties: categories: - description: |- - categories is a list of grouped resources this custom resource belongs to (e.g. 'all'). - This is published in API discovery documents, and used by clients to support invocations like - `kubectl get all`. + description: categories is a list of grouped resources this custom + resource belongs to (e.g. 'all'). This is published in API discovery + documents, and used by clients to support invocations like `kubectl + get all`. items: type: string type: array kind: - description: |- - kind is the serialized kind of the resource. It is normally CamelCase and singular. - Custom resource instances will use this value as the `kind` attribute in API calls. + description: kind is the serialized kind of the resource. It is + normally CamelCase and singular. Custom resource instances will + use this value as the `kind` attribute in API calls. type: string listKind: description: listKind is the serialized kind of the list for this resource. Defaults to "`kind`List". type: string plural: - description: |- - plural is the plural name of the resource to serve. + description: plural is the plural name of the resource to serve. The custom resources are served under `/apis///.../`. - Must match the name of the CustomResourceDefinition (in the form `.`). - Must be all lowercase. + Must match the name of the CustomResourceDefinition (in the + form `.`). Must be all lowercase. type: string shortNames: - description: |- - shortNames are short names for the resource, exposed in API discovery documents, - and used by clients to support invocations like `kubectl get `. - It must be all lowercase. + description: shortNames are short names for the resource, exposed + in API discovery documents, and used by clients to support invocations + like `kubectl get `. It must be all lowercase. items: type: string type: array @@ -109,10 +100,9 @@ spec: - plural type: object connectionSecretKeys: - description: |- - ConnectionSecretKeys is the list of keys that will be exposed to the end - user of the defined kind. - If the list is empty, all keys will be published. + description: ConnectionSecretKeys is the list of keys that will be + exposed to the end user of the defined kind. If the list is empty, + all keys will be published. items: type: string type: array @@ -121,11 +111,13 @@ spec: Composite resource. properties: strategy: - description: |- - strategy specifies how custom resources are converted between versions. Allowed values are: - - `"None"`: The converter only change the apiVersion and would not touch any other field in the custom resource. - - `"Webhook"`: API Server will call to an external webhook to do the conversion. Additional information - is needed for this option. This requires spec.preserveUnknownFields to be false, and spec.conversion.webhook to be set. + description: 'strategy specifies how custom resources are converted + between versions. Allowed values are: - `"None"`: The converter + only change the apiVersion and would not touch any other field + in the custom resource. - `"Webhook"`: API Server will call + to an external webhook to do the conversion. Additional information + is needed for this option. This requires spec.preserveUnknownFields + to be false, and spec.conversion.webhook to be set.' type: string webhook: description: webhook describes how to call the conversion webhook. @@ -136,27 +128,23 @@ spec: the webhook if strategy is `Webhook`. properties: caBundle: - description: |- - caBundle is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. - If unspecified, system trust roots on the apiserver are used. + description: caBundle is a PEM encoded CA bundle which + will be used to validate the webhook's server certificate. + If unspecified, system trust roots on the apiserver + are used. format: byte type: string service: - description: |- - service is a reference to the service for this webhook. Either - service or url must be specified. - - - If the webhook is running within the cluster, then you should use `service`. + description: "service is a reference to the service for + this webhook. Either service or url must be specified. + \n If the webhook is running within the cluster, then + you should use `service`." properties: name: - description: |- - name is the name of the service. - Required + description: name is the name of the service. Required type: string namespace: - description: |- - namespace is the namespace of the service. + description: namespace is the namespace of the service. Required type: string path: @@ -164,10 +152,10 @@ spec: the webhook will be contacted. type: string port: - description: |- - port is an optional service port at which the webhook will be contacted. - `port` should be a valid port number (1-65535, inclusive). - Defaults to 443 for backward compatibility. + description: port is an optional service port at which + the webhook will be contacted. `port` should be + a valid port number (1-65535, inclusive). Defaults + to 443 for backward compatibility. format: int32 type: integer required: @@ -175,47 +163,38 @@ spec: - namespace type: object url: - description: |- - url gives the location of the webhook, in standard URL form - (`scheme://host:port/path`). Exactly one of `url` or `service` - must be specified. - - - The `host` should not refer to a service running in the cluster; use - the `service` field instead. The host might be resolved via external - DNS in some apiservers (e.g., `kube-apiserver` cannot resolve - in-cluster DNS as that would be a layering violation). `host` may - also be an IP address. - - - Please note that using `localhost` or `127.0.0.1` as a `host` is - risky unless you take great care to run this webhook on all hosts - which run an apiserver which might need to make calls to this - webhook. Such installs are likely to be non-portable, i.e., not easy - to turn up in a new cluster. - - - The scheme must be "https"; the URL must begin with "https://". - - - A path is optional, and if present may be any string permissible in - a URL. You may use the path to pass an arbitrary string to the - webhook, for example, a cluster identifier. - - - Attempting to use a user or basic auth e.g. "user:password@" is not - allowed. Fragments ("#...") and query parameters ("?...") are not - allowed, either. + description: "url gives the location of the webhook, in + standard URL form (`scheme://host:port/path`). Exactly + one of `url` or `service` must be specified. \n The + `host` should not refer to a service running in the + cluster; use the `service` field instead. The host might + be resolved via external DNS in some apiservers (e.g., + `kube-apiserver` cannot resolve in-cluster DNS as that + would be a layering violation). `host` may also be an + IP address. \n Please note that using `localhost` or + `127.0.0.1` as a `host` is risky unless you take great + care to run this webhook on all hosts which run an apiserver + which might need to make calls to this webhook. Such + installs are likely to be non-portable, i.e., not easy + to turn up in a new cluster. \n The scheme must be \"https\"; + the URL must begin with \"https://\". \n A path is optional, + and if present may be any string permissible in a URL. + You may use the path to pass an arbitrary string to + the webhook, for example, a cluster identifier. \n Attempting + to use a user or basic auth e.g. \"user:password@\" + is not allowed. Fragments (\"#...\") and query parameters + (\"?...\") are not allowed, either." type: string type: object conversionReviewVersions: - description: |- - conversionReviewVersions is an ordered list of preferred `ConversionReview` - versions the Webhook expects. The API server will use the first version in - the list which it supports. If none of the versions specified in this list - are supported by API server, conversion will fail for the custom resource. - If a persisted Webhook configuration specifies allowed versions and does not - include any versions known to the API Server, calls to the webhook will fail. + description: conversionReviewVersions is an ordered list of + preferred `ConversionReview` versions the Webhook expects. + The API server will use the first version in the list which + it supports. If none of the versions specified in this list + are supported by API server, conversion will fail for the + custom resource. If a persisted Webhook configuration specifies + allowed versions and does not include any versions known + to the API Server, calls to the webhook will fail. items: type: string type: array @@ -227,17 +206,16 @@ spec: type: object defaultCompositeDeletePolicy: default: Background - description: |- - DefaultCompositeDeletePolicy is the policy used when deleting the Composite - that is associated with the Claim if no policy has been specified. + description: DefaultCompositeDeletePolicy is the policy used when + deleting the Composite that is associated with the Claim if no policy + has been specified. enum: - Background - Foreground type: string defaultCompositionRef: - description: |- - DefaultCompositionRef refers to the Composition resource that will be used - in case no composition selector is given. + description: DefaultCompositionRef refers to the Composition resource + that will be used in case no composition selector is given. properties: name: description: Name of the Composition. @@ -247,17 +225,17 @@ spec: type: object defaultCompositionUpdatePolicy: default: Automatic - description: |- - DefaultCompositionUpdatePolicy is the policy used when updating composites after a new - Composition Revision has been created if no policy has been specified on the composite. + description: DefaultCompositionUpdatePolicy is the policy used when + updating composites after a new Composition Revision has been created + if no policy has been specified on the composite. enum: - Automatic - Manual type: string enforcedCompositionRef: - description: |- - EnforcedCompositionRef refers to the Composition resource that will be used - by all composite instances whose schema is defined by this definition. + description: EnforcedCompositionRef refers to the Composition resource + that will be used by all composite instances whose schema is defined + by this definition. properties: name: description: Name of the Composition. @@ -266,10 +244,9 @@ spec: - name type: object group: - description: |- - Group specifies the API group of the defined composite resource. - Composite resources are served under `/apis//...`. Must match the - name of the XRD (in the form `.`). + description: Group specifies the API group of the defined composite + resource. Composite resources are served under `/apis//...`. + Must match the name of the XRD (in the form `.`). type: string metadata: description: Metadata specifies the desired metadata for the defined @@ -278,58 +255,53 @@ spec: annotations: additionalProperties: type: string - description: |- - Annotations is an unstructured key value map stored with a resource that may be - set by external tools to store and retrieve arbitrary metadata. They are not - queryable and should be preserved when modifying objects. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store and + retrieve arbitrary metadata. They are not queryable and should + be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations' type: object labels: additionalProperties: type: string - description: |- - Map of string keys and values that can be used to organize and categorize - (scope and select) objects. May match selectors of replication controllers - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels - and services. - These labels are added to the composite resource and claim CRD's in addition - to any labels defined by `CompositionResourceDefinition` `metadata.labels`. + description: 'Map of string keys and values that can be used to + organize and categorize (scope and select) objects. May match + selectors of replication controllers More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels + and services. These labels are added to the composite resource + and claim CRD''s in addition to any labels defined by `CompositionResourceDefinition` + `metadata.labels`.' type: object type: object names: - description: |- - Names specifies the resource and kind names of the defined composite - resource. + description: Names specifies the resource and kind names of the defined + composite resource. properties: categories: - description: |- - categories is a list of grouped resources this custom resource belongs to (e.g. 'all'). - This is published in API discovery documents, and used by clients to support invocations like - `kubectl get all`. + description: categories is a list of grouped resources this custom + resource belongs to (e.g. 'all'). This is published in API discovery + documents, and used by clients to support invocations like `kubectl + get all`. items: type: string type: array kind: - description: |- - kind is the serialized kind of the resource. It is normally CamelCase and singular. - Custom resource instances will use this value as the `kind` attribute in API calls. + description: kind is the serialized kind of the resource. It is + normally CamelCase and singular. Custom resource instances will + use this value as the `kind` attribute in API calls. type: string listKind: description: listKind is the serialized kind of the list for this resource. Defaults to "`kind`List". type: string plural: - description: |- - plural is the plural name of the resource to serve. + description: plural is the plural name of the resource to serve. The custom resources are served under `/apis///.../`. - Must match the name of the CustomResourceDefinition (in the form `.`). - Must be all lowercase. + Must match the name of the CustomResourceDefinition (in the + form `.`). Must be all lowercase. type: string shortNames: - description: |- - shortNames are short names for the resource, exposed in API discovery documents, - and used by clients to support invocations like `kubectl get `. - It must be all lowercase. + description: shortNames are short names for the resource, exposed + in API discovery documents, and used by clients to support invocations + like `kubectl get `. It must be all lowercase. items: type: string type: array @@ -342,28 +314,27 @@ spec: - plural type: object versions: - description: |- - Versions is the list of all API versions of the defined composite - resource. Version names are used to compute the order in which served - versions are listed in API discovery. If the version string is - "kube-like", it will sort above non "kube-like" version strings, which - are ordered lexicographically. "Kube-like" versions start with a "v", - then are followed by a number (the major version), then optionally the - string "alpha" or "beta" and another number (the minor version). These - are sorted first by GA > beta > alpha (where GA is a version with no - suffix such as beta or alpha), and then by comparing major version, then - minor version. An example sorted list of versions: v10, v2, v1, v11beta2, - v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10. + description: 'Versions is the list of all API versions of the defined + composite resource. Version names are used to compute the order + in which served versions are listed in API discovery. If the version + string is "kube-like", it will sort above non "kube-like" version + strings, which are ordered lexicographically. "Kube-like" versions + start with a "v", then are followed by a number (the major version), + then optionally the string "alpha" or "beta" and another number + (the minor version). These are sorted first by GA > beta > alpha + (where GA is a version with no suffix such as beta or alpha), and + then by comparing major version, then minor version. An example + sorted list of versions: v10, v2, v1, v11beta2, v10beta3, v3beta1, + v12alpha1, v11alpha2, foo1, foo10.' items: description: CompositeResourceDefinitionVersion describes a version of an XR. properties: additionalPrinterColumns: - description: |- - AdditionalPrinterColumns specifies additional columns returned in Table - output. If no columns are specified, a single column displaying the age - of the custom resource is used. See the following link for details: - https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables + description: 'AdditionalPrinterColumns specifies additional + columns returned in Table output. If no columns are specified, + a single column displaying the age of the custom resource + is used. See the following link for details: https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables' items: description: CustomResourceColumnDefinition specifies a column for server side printing. @@ -373,30 +344,32 @@ spec: of this column. type: string format: - description: |- - format is an optional OpenAPI type definition for this column. The 'name' format is applied - to the primary identifier column to assist in clients identifying column is the resource name. - See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details. + description: format is an optional OpenAPI type definition + for this column. The 'name' format is applied to the + primary identifier column to assist in clients identifying + column is the resource name. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types + for details. type: string jsonPath: - description: |- - jsonPath is a simple JSON path (i.e. with array notation) which is evaluated against - each custom resource to produce the value for this column. + description: jsonPath is a simple JSON path (i.e. with + array notation) which is evaluated against each custom + resource to produce the value for this column. type: string name: description: name is a human readable name for the column. type: string priority: - description: |- - priority is an integer defining the relative importance of this column compared to others. Lower - numbers are considered higher priority. Columns that may be omitted in limited space scenarios - should be given a priority greater than 0. + description: priority is an integer defining the relative + importance of this column compared to others. Lower + numbers are considered higher priority. Columns that + may be omitted in limited space scenarios should be + given a priority greater than 0. format: int32 type: integer type: - description: |- - type is an OpenAPI type definition for this column. - See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details. + description: type is an OpenAPI type definition for this + column. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types + for details. type: string required: - jsonPath @@ -405,43 +378,39 @@ spec: type: object type: array deprecated: - description: |- - The deprecated field specifies that this version is deprecated and should - not be used. + description: The deprecated field specifies that this version + is deprecated and should not be used. type: boolean deprecationWarning: - description: |- - DeprecationWarning specifies the message that should be shown to the user - when using this version. + description: DeprecationWarning specifies the message that should + be shown to the user when using this version. maxLength: 256 type: string name: - description: |- - Name of this version, e.g. “v1”, “v2beta1”, etc. Composite resources are - served under this version at `/apis///...` if `served` is - true. + description: Name of this version, e.g. “v1”, “v2beta1”, etc. + Composite resources are served under this version at `/apis///...` + if `served` is true. type: string referenceable: - description: |- - Referenceable specifies that this version may be referenced by a - Composition in order to configure which resources an XR may be composed - of. Exactly one version must be marked as referenceable; all Compositions - must target only the referenceable version. The referenceable version - must be served. It's mapped to the CRD's `spec.versions[*].storage` field. + description: Referenceable specifies that this version may be + referenced by a Composition in order to configure which resources + an XR may be composed of. Exactly one version must be marked + as referenceable; all Compositions must target only the referenceable + version. The referenceable version must be served. It's mapped + to the CRD's `spec.versions[*].storage` field. type: boolean schema: - description: |- - Schema describes the schema used for validation, pruning, and defaulting - of this version of the defined composite resource. Fields required by all - composite resources will be injected into this schema automatically, and - will override equivalently named fields in this schema. Omitting this - schema results in a schema that contains only the fields required by all - composite resources. + description: Schema describes the schema used for validation, + pruning, and defaulting of this version of the defined composite + resource. Fields required by all composite resources will + be injected into this schema automatically, and will override + equivalently named fields in this schema. Omitting this schema + results in a schema that contains only the fields required + by all composite resources. properties: openAPIV3Schema: - description: |- - OpenAPIV3Schema is the OpenAPI v3 schema to use for validation and - pruning. + description: OpenAPIV3Schema is the OpenAPI v3 schema to + use for validation and pruning. type: object x-kubernetes-preserve-unknown-fields: true type: object @@ -470,15 +439,13 @@ spec: 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. + 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. + 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 @@ -489,9 +456,8 @@ spec: 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. + 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 @@ -504,17 +470,16 @@ spec: - type x-kubernetes-list-type: map controllers: - description: |- - Controllers represents the status of the controllers that power this - composite resource definition. + description: Controllers represents the status of the controllers + that power this composite resource definition. properties: compositeResourceClaimType: - description: |- - The CompositeResourceClaimTypeRef is the type of composite resource claim - that Crossplane is currently reconciling for this definition. Its version - will eventually become consistent with the definition's referenceable - version. Note that clients may interact with any served type; this is - simply the type that Crossplane interacts with. + description: The CompositeResourceClaimTypeRef is the type of + composite resource claim that Crossplane is currently reconciling + for this definition. Its version will eventually become consistent + with the definition's referenceable version. Note that clients + may interact with any served type; this is simply the type that + Crossplane interacts with. properties: apiVersion: description: APIVersion of the type. @@ -527,12 +492,12 @@ spec: - kind type: object compositeResourceType: - description: |- - The CompositeResourceTypeRef is the type of composite resource that - Crossplane is currently reconciling for this definition. Its version will - eventually become consistent with the definition's referenceable version. - Note that clients may interact with any served type; this is simply the - type that Crossplane interacts with. + description: The CompositeResourceTypeRef is the type of composite + resource that Crossplane is currently reconciling for this definition. + Its version will eventually become consistent with the definition's + referenceable version. Note that clients may interact with any + served type; this is simply the type that Crossplane interacts + with. properties: apiVersion: description: APIVersion of the type. diff --git a/crossplane-crd-model/src/main/resources/kubernetes/apiextensions.crossplane.io_compositionrevisions.yaml b/crossplane-crd-model/src/main/resources/kubernetes/apiextensions.crossplane.io_compositionrevisions.yaml index 93f4dcb..019cb7b 100644 --- a/crossplane-crd-model/src/main/resources/kubernetes/apiextensions.crossplane.io_compositionrevisions.yaml +++ b/crossplane-crd-model/src/main/resources/kubernetes/apiextensions.crossplane.io_compositionrevisions.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.14.0 + controller-gen.kubebuilder.io/version: v0.13.0 name: compositionrevisions.apiextensions.crossplane.io spec: group: apiextensions.crossplane.io @@ -33,36 +33,28 @@ spec: name: v1 schema: openAPIV3Schema: - description: |- - A CompositionRevision represents a revision in time of a Composition. + description: A CompositionRevision represents a revision in time of a Composition. Revisions are created by Crossplane; they should be treated as immutable. 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 + 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 + 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: |- - CompositionRevisionSpec specifies the desired state of the composition - revision. + description: CompositionRevisionSpec specifies the desired state of the + composition revision. properties: compositeTypeRef: - description: |- - CompositeTypeRef specifies the type of composite resource that this - composition is compatible with. + description: CompositeTypeRef specifies the type of composite resource + that this composition is compatible with. properties: apiVersion: description: APIVersion of the type. @@ -75,44 +67,35 @@ spec: - kind type: object environment: - description: |- - Environment configures the environment in which resources are rendered. - - - THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored - unless the relevant Crossplane feature flag is enabled, and may be - changed or removed without notice. + description: "Environment configures the environment in which resources + are rendered. \n THIS IS AN ALPHA FIELD. Do not use it in production. + It is not honored unless the relevant Crossplane feature flag is + enabled, and may be changed or removed without notice." properties: defaultData: additionalProperties: x-kubernetes-preserve-unknown-fields: true - description: |- - DefaultData statically defines the initial state of the environment. - It has the same schema-less structure as the data field in - environment configs. - It is overwritten by the selected environment configs. + description: DefaultData statically defines the initial state + of the environment. It has the same schema-less structure as + the data field in environment configs. It is overwritten by + the selected environment configs. type: object environmentConfigs: - description: |- - EnvironmentConfigs selects a list of `EnvironmentConfig`s. The resolved - resources are stored in the composite resource at - `spec.environmentConfigRefs` and is only updated if it is null. - - - The list of references is used to compute an in-memory environment at - compose time. The data of all object is merged in the order they are - listed, meaning the values of EnvironmentConfigs with a larger index take - priority over ones with smaller indices. - - - The computed environment can be accessed in a composition using - `FromEnvironmentFieldPath` and `CombineFromEnvironment` patches. + description: "EnvironmentConfigs selects a list of `EnvironmentConfig`s. + The resolved resources are stored in the composite resource + at `spec.environmentConfigRefs` and is only updated if it is + null. \n The list of references is used to compute an in-memory + environment at compose time. The data of all object is merged + in the order they are listed, meaning the values of EnvironmentConfigs + with a larger index take priority over ones with smaller indices. + \n The computed environment can be accessed in a composition + using `FromEnvironmentFieldPath` and `CombineFromEnvironment` + patches." items: description: EnvironmentSource selects a EnvironmentConfig resource. properties: ref: - description: |- - Ref is a named reference to a single EnvironmentConfig. + description: Ref is a named reference to a single EnvironmentConfig. Either Ref or Selector is required. properties: name: @@ -128,20 +111,21 @@ spec: description: MatchLabels ensures an object with matching labels is selected. items: - description: |- - An EnvironmentSourceSelectorLabelMatcher acts like a k8s label selector but - can draw the label value from a different path. + description: An EnvironmentSourceSelectorLabelMatcher + acts like a k8s label selector but can draw the + label value from a different path. properties: fromFieldPathPolicy: default: Required - description: |- - FromFieldPathPolicy specifies the policy for the valueFromFieldPath. - The default is Required, meaning that an error will be returned if the - field is not found in the composite resource. - Optional means that if the field is not found in the composite resource, - that label pair will just be skipped. N.B. other specified label - matchers will still be used to retrieve the desired - environment config, if any. + description: FromFieldPathPolicy specifies the + policy for the valueFromFieldPath. The default + is Required, meaning that an error will be returned + if the field is not found in the composite resource. + Optional means that if the field is not found + in the composite resource, that label pair will + just be skipped. N.B. other specified label + matchers will still be used to retrieve the + desired environment config, if any. enum: - Optional - Required @@ -196,9 +180,8 @@ spec: type: object type: default: Reference - description: |- - Type specifies the way the EnvironmentConfig is selected. - Default is `Reference` + description: Type specifies the way the EnvironmentConfig + is selected. Default is `Reference` enum: - Reference - Selector @@ -206,51 +189,47 @@ spec: type: object type: array patches: - description: |- - Patches is a list of environment patches that are executed before a - composition's resources are composed. + description: Patches is a list of environment patches that are + executed before a composition's resources are composed. items: description: EnvironmentPatch is a patch for a Composition environment. properties: combine: - description: |- - Combine is the patch configuration for a CombineFromComposite or - CombineToComposite patch. + description: Combine is the patch configuration for a CombineFromComposite + or CombineToComposite patch. properties: strategy: - description: |- - Strategy defines the strategy to use to combine the input variable values. - Currently only string is supported. + description: Strategy defines the strategy to use to + combine the input variable values. Currently only + string is supported. enum: - string type: string string: - description: |- - String declares that input variables should be combined into a single - string, using the relevant settings for formatting purposes. + description: String declares that input variables should + be combined into a single string, using the relevant + settings for formatting purposes. properties: fmt: - description: |- - Format the input using a Go format string. See - https://golang.org/pkg/fmt/ for details. + description: Format the input using a Go format + string. See https://golang.org/pkg/fmt/ for details. type: string required: - fmt type: object variables: - description: |- - Variables are the list of variables whose values will be retrieved and - combined. + description: Variables are the list of variables whose + values will be retrieved and combined. items: - description: |- - A CombineVariable defines the source of a value that is combined with - others to form and patch an output value. Currently, this only supports - retrieving values from a field path. + description: A CombineVariable defines the source + of a value that is combined with others to form + and patch an output value. Currently, this only + supports retrieving values from a field path. properties: fromFieldPath: - description: |- - FromFieldPath is the path of the field on the source whose value is - to be used as input. + description: FromFieldPath is the path of the + field on the source whose value is to be used + as input. type: string required: - fromFieldPath @@ -262,21 +241,20 @@ spec: - variables type: object fromFieldPath: - description: |- - FromFieldPath is the path of the field on the resource whose value is - to be used as input. Required when type is FromCompositeFieldPath or - ToCompositeFieldPath. + description: FromFieldPath is the path of the field on the + resource whose value is to be used as input. Required + when type is FromCompositeFieldPath or ToCompositeFieldPath. type: string policy: description: Policy configures the specifics of patching behaviour. properties: fromFieldPath: - description: |- - FromFieldPath specifies how to patch from a field path. The default is - 'Optional', which means the patch will be a no-op if the specified - fromFieldPath does not exist. Use 'Required' if the patch should fail if - the specified path does not exist. + description: FromFieldPath specifies how to patch from + a field path. The default is 'Optional', which means + the patch will be a no-op if the specified fromFieldPath + does not exist. Use 'Required' if the patch should + fail if the specified path does not exist. enum: - Optional - Required @@ -296,36 +274,30 @@ spec: type: object type: object toFieldPath: - description: |- - ToFieldPath is the path of the field on the resource whose value will - be changed with the result of transforms. Leave empty if you'd like to - propagate to the same path as fromFieldPath. + description: ToFieldPath is the path of the field on the + resource whose value will be changed with the result of + transforms. Leave empty if you'd like to propagate to + the same path as fromFieldPath. type: string transforms: - description: |- - Transforms are the list of functions that are used as a FIFO pipe for the - input to be transformed. + description: Transforms are the list of functions that are + used as a FIFO pipe for the input to be transformed. items: - description: |- - Transform is a unit of process whose input is transformed into an output with - the supplied configuration. + description: Transform is a unit of process whose input + is transformed into an output with the supplied configuration. properties: convert: description: Convert is used to cast the input into the given output type. properties: format: - description: |- - The expected input format. - - - * `quantity` - parses the input as a K8s [`resource.Quantity`](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity). + description: "The expected input format. \n * + `quantity` - parses the input as a K8s [`resource.Quantity`](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity). Only used during `string -> float64` conversions. * `json` - parses the input as a JSON string. - Only used during `string -> object` or `string -> list` conversions. - - - If this property is null, the default conversion is applied. + Only used during `string -> object` or `string + -> list` conversions. \n If this property is + null, the default conversion is applied." enum: - none - quantity @@ -365,29 +337,27 @@ spec: - Input type: string fallbackValue: - description: |- - The fallback value that should be returned by the transform if now pattern - matches. + description: The fallback value that should be + returned by the transform if now pattern matches. x-kubernetes-preserve-unknown-fields: true patterns: - description: |- - The patterns that should be tested against the input string. - Patterns are tested in order. The value of the first match is used as - result of this transform. + description: The patterns that should be tested + against the input string. Patterns are tested + in order. The value of the first match is used + as result of this transform. items: - description: |- - MatchTransformPattern is a transform that returns the value that matches a - pattern. + description: MatchTransformPattern is a transform + that returns the value that matches a pattern. properties: literal: - description: |- - Literal exactly matches the input string (case sensitive). - Is required if `type` is `literal`. + description: Literal exactly matches the + input string (case sensitive). Is required + if `type` is `literal`. type: string regexp: - description: |- - Regexp to match against the input string. - Is required if `type` is `regexp`. + description: Regexp to match against the + input string. Is required if `type` is + `regexp`. type: string result: description: The value that is used as result @@ -395,17 +365,15 @@ spec: x-kubernetes-preserve-unknown-fields: true type: default: literal - description: |- - Type specifies how the pattern matches the input. - - - * `literal` - the pattern value has to exactly match (case sensitive) the - input string. This is the default. - - - * `regexp` - the pattern treated as a regular expression against - which the input string is tested. Crossplane will throw an error if the - key is not a valid regexp. + description: "Type specifies how the pattern + matches the input. \n * `literal` - the + pattern value has to exactly match (case + sensitive) the input string. This is the + default. \n * `regexp` - the pattern treated + as a regular expression against which + the input string is tested. Crossplane + will throw an error if the key is not + a valid regexp." enum: - literal - regexp @@ -417,9 +385,8 @@ spec: type: array type: object math: - description: |- - Math is used to transform the input via mathematical operations such as - multiplication. + description: Math is used to transform the input via + mathematical operations such as multiplication. properties: clampMax: description: ClampMax makes sure that the value @@ -446,19 +413,22 @@ spec: type: string type: object string: - description: |- - String is used to transform the input into a string or a different kind - of string. Note that the input does not necessarily need to be a string. + description: String is used to transform the input + into a string or a different kind of string. Note + that the input does not necessarily need to be a + string. properties: convert: - description: |- - Optional conversion method to be specified. - `ToUpper` and `ToLower` change the letter case of the input string. - `ToBase64` and `FromBase64` perform a base64 conversion based on the input string. - `ToJson` converts any input value into its raw JSON representation. - `ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input - converted to JSON. - `ToAdler32` generate a addler32 hash based on the input string. + description: Optional conversion method to be + specified. `ToUpper` and `ToLower` change the + letter case of the input string. `ToBase64` + and `FromBase64` perform a base64 conversion + based on the input string. `ToJson` converts + any input value into its raw JSON representation. + `ToSha1`, `ToSha256` and `ToSha512` generate + a hash value based on the input converted to + JSON. `ToAdler32` generate a addler32 hash based + on the input string. enum: - ToUpper - ToLower @@ -471,22 +441,10 @@ spec: - ToAdler32 type: string fmt: - description: |- - Format the input using a Go format string. See - https://golang.org/pkg/fmt/ for details. + description: Format the input using a Go format + string. See https://golang.org/pkg/fmt/ for + details. type: string - join: - description: Join defines parameters to join a - slice of values to a string. - properties: - separator: - description: |- - Separator defines the character that should separate the values from each - other in the joined string. - type: string - required: - - separator - type: object regexp: description: Extract a match from the input using a regular expression. @@ -496,8 +454,8 @@ spec: default) matches the entire expression. type: integer match: - description: |- - Match string. May optionally include submatches, aka capture groups. + description: Match string. May optionally + include submatches, aka capture groups. See https://pkg.go.dev/regexp/ for details. type: string required: @@ -517,7 +475,6 @@ spec: - TrimPrefix - TrimSuffix - Regexp - - Join type: string type: object type: @@ -535,9 +492,9 @@ spec: type: array type: default: FromCompositeFieldPath - description: |- - Type sets the patching behaviour to be used. Each patch type may require - its own fields to be set on the Patch object. + description: Type sets the patching behaviour to be used. + Each patch type may require its own fields to be set on + the Patch object. enum: - FromCompositeFieldPath - ToCompositeFieldPath @@ -547,27 +504,27 @@ spec: type: object type: array policy: - description: |- - Policy represents the Resolve and Resolution policies which apply to - all EnvironmentSourceReferences in EnvironmentConfigs list. + description: Policy represents the Resolve and Resolution policies + which apply to all EnvironmentSourceReferences in EnvironmentConfigs + list. 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. + 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. + 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 @@ -576,38 +533,28 @@ spec: type: object mode: default: Resources - description: |- - Mode controls what type or "mode" of Composition will be used. - - - "Resources" (the default) indicates that a Composition uses what is - commonly referred to as "Patch & Transform" or P&T composition. This mode - of Composition uses an array of resources, each a template for a composed - resource. - - - "Pipeline" indicates that a Composition specifies a pipeline - of Composition Functions, each of which is responsible for producing - composed resources that Crossplane should create or update. THE PIPELINE - MODE IS A BETA FEATURE. It is not honored if the relevant Crossplane - feature flag is disabled. + description: "Mode controls what type or \"mode\" of Composition will + be used. \n \"Resources\" (the default) indicates that a Composition + uses what is commonly referred to as \"Patch & Transform\" or P&T + composition. This mode of Composition uses an array of resources, + each a template for a composed resource. \n \"Pipeline\" indicates + that a Composition specifies a pipeline of Composition Functions, + each of which is responsible for producing composed resources that + Crossplane should create or update. THE PIPELINE MODE IS A BETA + FEATURE. It is not honored if the relevant Crossplane feature flag + is disabled." enum: - Resources - Pipeline type: string patchSets: - description: |- - PatchSets define a named set of patches that may be included by any - resource in this Composition. PatchSets cannot themselves refer to other - PatchSets. - - - PatchSets are only used by the "Resources" mode of Composition. They - are ignored by other modes. + description: "PatchSets define a named set of patches that may be + included by any resource in this Composition. PatchSets cannot themselves + refer to other PatchSets. \n PatchSets are only used by the \"Resources\" + mode of Composition. They are ignored by other modes." items: - description: |- - A PatchSet is a set of patches that can be reused from all resources within - a Composition. + description: A PatchSet is a set of patches that can be reused from + all resources within a Composition. properties: name: description: Name of this PatchSet. @@ -616,51 +563,50 @@ spec: description: Patches will be applied as an overlay to the base resource. items: - description: |- - Patch objects are applied between composite and composed resources. Their - behaviour depends on the Type selected. The default Type, - FromCompositeFieldPath, copies a value from the composite resource to - the composed resource, applying any defined transformers. + description: Patch objects are applied between composite and + composed resources. Their behaviour depends on the Type + selected. The default Type, FromCompositeFieldPath, copies + a value from the composite resource to the composed resource, + applying any defined transformers. properties: combine: - description: |- - Combine is the patch configuration for a CombineFromComposite, - CombineFromEnvironment, CombineToComposite or CombineToEnvironment patch. + description: Combine is the patch configuration for a + CombineFromComposite, CombineFromEnvironment, CombineToComposite + or CombineToEnvironment patch. properties: strategy: - description: |- - Strategy defines the strategy to use to combine the input variable values. - Currently only string is supported. + description: Strategy defines the strategy to use + to combine the input variable values. Currently + only string is supported. enum: - string type: string string: - description: |- - String declares that input variables should be combined into a single - string, using the relevant settings for formatting purposes. + description: String declares that input variables + should be combined into a single string, using the + relevant settings for formatting purposes. properties: fmt: - description: |- - Format the input using a Go format string. See - https://golang.org/pkg/fmt/ for details. + description: Format the input using a Go format + string. See https://golang.org/pkg/fmt/ for + details. type: string required: - fmt type: object variables: - description: |- - Variables are the list of variables whose values will be retrieved and - combined. + description: Variables are the list of variables whose + values will be retrieved and combined. items: - description: |- - A CombineVariable defines the source of a value that is combined with - others to form and patch an output value. Currently, this only supports - retrieving values from a field path. + description: A CombineVariable defines the source + of a value that is combined with others to form + and patch an output value. Currently, this only + supports retrieving values from a field path. properties: fromFieldPath: - description: |- - FromFieldPath is the path of the field on the source whose value is - to be used as input. + description: FromFieldPath is the path of the + field on the source whose value is to be used + as input. type: string required: - fromFieldPath @@ -672,10 +618,10 @@ spec: - variables type: object fromFieldPath: - description: |- - FromFieldPath is the path of the field on the resource whose value is - to be used as input. Required when type is FromCompositeFieldPath, - FromEnvironmentFieldPath, ToCompositeFieldPath, ToEnvironmentFieldPath. + description: FromFieldPath is the path of the field on + the resource whose value is to be used as input. Required + when type is FromCompositeFieldPath, FromEnvironmentFieldPath, + ToCompositeFieldPath, ToEnvironmentFieldPath. type: string patchSetName: description: PatchSetName to include patches from. Required @@ -686,11 +632,12 @@ spec: behaviour. properties: fromFieldPath: - description: |- - FromFieldPath specifies how to patch from a field path. The default is - 'Optional', which means the patch will be a no-op if the specified - fromFieldPath does not exist. Use 'Required' if the patch should fail if - the specified path does not exist. + description: FromFieldPath specifies how to patch + from a field path. The default is 'Optional', which + means the patch will be a no-op if the specified + fromFieldPath does not exist. Use 'Required' if + the patch should fail if the specified path does + not exist. enum: - Optional - Required @@ -710,36 +657,30 @@ spec: type: object type: object toFieldPath: - description: |- - ToFieldPath is the path of the field on the resource whose value will - be changed with the result of transforms. Leave empty if you'd like to - propagate to the same path as fromFieldPath. + description: ToFieldPath is the path of the field on the + resource whose value will be changed with the result + of transforms. Leave empty if you'd like to propagate + to the same path as fromFieldPath. type: string transforms: - description: |- - Transforms are the list of functions that are used as a FIFO pipe for the - input to be transformed. + description: Transforms are the list of functions that + are used as a FIFO pipe for the input to be transformed. items: - description: |- - Transform is a unit of process whose input is transformed into an output with - the supplied configuration. + description: Transform is a unit of process whose input + is transformed into an output with the supplied configuration. properties: convert: description: Convert is used to cast the input into the given output type. properties: format: - description: |- - The expected input format. - - + description: "The expected input format. \n * `quantity` - parses the input as a K8s [`resource.Quantity`](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity). Only used during `string -> float64` conversions. * `json` - parses the input as a JSON string. - Only used during `string -> object` or `string -> list` conversions. - - - If this property is null, the default conversion is applied. + Only used during `string -> object` or `string + -> list` conversions. \n If this property + is null, the default conversion is applied." enum: - none - quantity @@ -779,29 +720,28 @@ spec: - Input type: string fallbackValue: - description: |- - The fallback value that should be returned by the transform if now pattern + description: The fallback value that should + be returned by the transform if now pattern matches. x-kubernetes-preserve-unknown-fields: true patterns: - description: |- - The patterns that should be tested against the input string. - Patterns are tested in order. The value of the first match is used as - result of this transform. + description: The patterns that should be tested + against the input string. Patterns are tested + in order. The value of the first match is + used as result of this transform. items: - description: |- - MatchTransformPattern is a transform that returns the value that matches a - pattern. + description: MatchTransformPattern is a transform + that returns the value that matches a pattern. properties: literal: - description: |- - Literal exactly matches the input string (case sensitive). - Is required if `type` is `literal`. + description: Literal exactly matches the + input string (case sensitive). Is required + if `type` is `literal`. type: string regexp: - description: |- - Regexp to match against the input string. - Is required if `type` is `regexp`. + description: Regexp to match against the + input string. Is required if `type` + is `regexp`. type: string result: description: The value that is used as @@ -810,17 +750,15 @@ spec: x-kubernetes-preserve-unknown-fields: true type: default: literal - description: |- - Type specifies how the pattern matches the input. - - - * `literal` - the pattern value has to exactly match (case sensitive) the - input string. This is the default. - - - * `regexp` - the pattern treated as a regular expression against - which the input string is tested. Crossplane will throw an error if the - key is not a valid regexp. + description: "Type specifies how the pattern + matches the input. \n * `literal` - + the pattern value has to exactly match + (case sensitive) the input string. This + is the default. \n * `regexp` - the + pattern treated as a regular expression + against which the input string is tested. + Crossplane will throw an error if the + key is not a valid regexp." enum: - literal - regexp @@ -832,9 +770,8 @@ spec: type: array type: object math: - description: |- - Math is used to transform the input via mathematical operations such as - multiplication. + description: Math is used to transform the input + via mathematical operations such as multiplication. properties: clampMax: description: ClampMax makes sure that the value @@ -861,19 +798,22 @@ spec: type: string type: object string: - description: |- - String is used to transform the input into a string or a different kind - of string. Note that the input does not necessarily need to be a string. + description: String is used to transform the input + into a string or a different kind of string. Note + that the input does not necessarily need to be + a string. properties: convert: - description: |- - Optional conversion method to be specified. - `ToUpper` and `ToLower` change the letter case of the input string. - `ToBase64` and `FromBase64` perform a base64 conversion based on the input string. - `ToJson` converts any input value into its raw JSON representation. - `ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input - converted to JSON. - `ToAdler32` generate a addler32 hash based on the input string. + description: Optional conversion method to be + specified. `ToUpper` and `ToLower` change + the letter case of the input string. `ToBase64` + and `FromBase64` perform a base64 conversion + based on the input string. `ToJson` converts + any input value into its raw JSON representation. + `ToSha1`, `ToSha256` and `ToSha512` generate + a hash value based on the input converted + to JSON. `ToAdler32` generate a addler32 hash + based on the input string. enum: - ToUpper - ToLower @@ -886,22 +826,10 @@ spec: - ToAdler32 type: string fmt: - description: |- - Format the input using a Go format string. See - https://golang.org/pkg/fmt/ for details. + description: Format the input using a Go format + string. See https://golang.org/pkg/fmt/ for + details. type: string - join: - description: Join defines parameters to join - a slice of values to a string. - properties: - separator: - description: |- - Separator defines the character that should separate the values from each - other in the joined string. - type: string - required: - - separator - type: object regexp: description: Extract a match from the input using a regular expression. @@ -911,8 +839,8 @@ spec: default) matches the entire expression. type: integer match: - description: |- - Match string. May optionally include submatches, aka capture groups. + description: Match string. May optionally + include submatches, aka capture groups. See https://pkg.go.dev/regexp/ for details. type: string required: @@ -932,7 +860,6 @@ spec: - TrimPrefix - TrimSuffix - Regexp - - Join type: string type: object type: @@ -950,9 +877,9 @@ spec: type: array type: default: FromCompositeFieldPath - description: |- - Type sets the patching behaviour to be used. Each patch type may require - its own fields to be set on the Patch object. + description: Type sets the patching behaviour to be used. + Each patch type may require its own fields to be set + on the Patch object. enum: - FromCompositeFieldPath - FromEnvironmentFieldPath @@ -972,25 +899,19 @@ spec: type: object type: array pipeline: - description: |- - Pipeline is a list of composition function steps that will be used when a - composite resource referring to this composition is created. One of - resources and pipeline must be specified - you cannot specify both. - - - The Pipeline is only used by the "Pipeline" mode of Composition. It is - ignored by other modes. - - - THIS IS A BETA FIELD. It is not honored if the relevant Crossplane - feature flag is disabled. + description: "Pipeline is a list of composition function steps that + will be used when a composite resource referring to this composition + is created. One of resources and pipeline must be specified - you + cannot specify both. \n The Pipeline is only used by the \"Pipeline\" + mode of Composition. It is ignored by other modes. \n THIS IS A + BETA FIELD. It is not honored if the relevant Crossplane feature + flag is disabled." items: description: A PipelineStep in a Composition Function pipeline. properties: functionRef: - description: |- - FunctionRef is a reference to the Composition Function this step should - execute. + description: FunctionRef is a reference to the Composition Function + this step should execute. properties: name: description: Name of the referenced Function. @@ -999,10 +920,9 @@ spec: - name type: object input: - description: |- - Input is an optional, arbitrary Kubernetes resource (i.e. a resource - with an apiVersion and kind) that will be passed to the Composition - Function as the 'input' of its RunFunctionRequest. + description: Input is an optional, arbitrary Kubernetes resource + (i.e. a resource with an apiVersion and kind) that will be + passed to the Composition Function as the 'input' of its RunFunctionRequest. type: object x-kubernetes-embedded-resource: true x-kubernetes-preserve-unknown-fields: true @@ -1017,15 +937,12 @@ spec: publishConnectionDetailsWithStoreConfigRef: default: name: default - description: |- - PublishConnectionDetailsWithStoreConfig specifies the secret store config - with which the connection details of composite resources dynamically - provisioned using this composition will be published. - - - THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored - unless the relevant Crossplane feature flag is enabled, and may be - changed or removed without notice. + description: "PublishConnectionDetailsWithStoreConfig specifies the + secret store config with which the connection details of composite + resources dynamically provisioned using this composition will be + published. \n THIS IS AN ALPHA FIELD. Do not use it in production. + It is not honored unless the relevant Crossplane feature flag is + enabled, and may be changed or removed without notice." properties: name: description: Name of the referenced StoreConfig. @@ -1034,17 +951,13 @@ spec: - name type: object resources: - description: |- - Resources is a list of resource templates that will be used when a - composite resource referring to this composition is created. - - - Resources are only used by the "Resources" mode of Composition. They are - ignored by other modes. + description: "Resources is a list of resource templates that will + be used when a composite resource referring to this composition + is created. \n Resources are only used by the \"Resources\" mode + of Composition. They are ignored by other modes." items: - description: |- - ComposedTemplate is used to provide information about how the composed resource - should be processed. + description: ComposedTemplate is used to provide information about + how the composed resource should be processed. properties: base: description: Base is the target resource that the patches will @@ -1053,112 +966,108 @@ spec: x-kubernetes-embedded-resource: true x-kubernetes-preserve-unknown-fields: true connectionDetails: - description: |- - ConnectionDetails lists the propagation secret keys from this target - resource to the composition instance connection secret. + description: ConnectionDetails lists the propagation secret + keys from this target resource to the composition instance + connection secret. items: - description: |- - ConnectionDetail includes the information about the propagation of the connection - information from one secret to another. + description: ConnectionDetail includes the information about + the propagation of the connection information from one secret + to another. properties: fromConnectionSecretKey: - description: |- - FromConnectionSecretKey is the key that will be used to fetch the value - from the composed resource's connection secret. + description: FromConnectionSecretKey is the key that will + be used to fetch the value from the composed resource's + connection secret. type: string fromFieldPath: - description: |- - FromFieldPath is the path of the field on the composed resource whose - value to be used as input. Name must be specified if the type is - FromFieldPath. + description: FromFieldPath is the path of the field on + the composed resource whose value to be used as input. + Name must be specified if the type is FromFieldPath. type: string name: - description: |- - Name of the connection secret key that will be propagated to the - connection secret of the composition instance. Leave empty if you'd like - to use the same key name. + description: Name of the connection secret key that will + be propagated to the connection secret of the composition + instance. Leave empty if you'd like to use the same + key name. type: string type: - description: |- - Type sets the connection detail fetching behaviour to be used. Each - connection detail type may require its own fields to be set on the - ConnectionDetail object. If the type is omitted Crossplane will attempt - to infer it based on which other fields were specified. If multiple - fields are specified the order of precedence is: - 1. FromValue - 2. FromConnectionSecretKey - 3. FromFieldPath + description: 'Type sets the connection detail fetching + behaviour to be used. Each connection detail type may + require its own fields to be set on the ConnectionDetail + object. If the type is omitted Crossplane will attempt + to infer it based on which other fields were specified. + If multiple fields are specified the order of precedence + is: 1. FromValue 2. FromConnectionSecretKey 3. FromFieldPath' enum: - FromConnectionSecretKey - FromFieldPath - FromValue type: string value: - description: |- - Value that will be propagated to the connection secret of the composite - resource. May be set to inject a fixed, non-sensitive connection secret - value, for example a well-known port. + description: Value that will be propagated to the connection + secret of the composite resource. May be set to inject + a fixed, non-sensitive connection secret value, for + example a well-known port. type: string type: object type: array name: - description: |- - A Name uniquely identifies this entry within its Composition's resources - array. Names are optional but *strongly* recommended. When all entries in - the resources array are named entries may added, deleted, and reordered - as long as their names do not change. When entries are not named the - length and order of the resources array should be treated as immutable. + description: A Name uniquely identifies this entry within its + Composition's resources array. Names are optional but *strongly* + recommended. When all entries in the resources array are named + entries may added, deleted, and reordered as long as their + names do not change. When entries are not named the length + and order of the resources array should be treated as immutable. Either all or no entries must be named. type: string patches: description: Patches will be applied as overlay to the base resource. items: - description: |- - Patch objects are applied between composite and composed resources. Their - behaviour depends on the Type selected. The default Type, - FromCompositeFieldPath, copies a value from the composite resource to - the composed resource, applying any defined transformers. + description: Patch objects are applied between composite and + composed resources. Their behaviour depends on the Type + selected. The default Type, FromCompositeFieldPath, copies + a value from the composite resource to the composed resource, + applying any defined transformers. properties: combine: - description: |- - Combine is the patch configuration for a CombineFromComposite, - CombineFromEnvironment, CombineToComposite or CombineToEnvironment patch. + description: Combine is the patch configuration for a + CombineFromComposite, CombineFromEnvironment, CombineToComposite + or CombineToEnvironment patch. properties: strategy: - description: |- - Strategy defines the strategy to use to combine the input variable values. - Currently only string is supported. + description: Strategy defines the strategy to use + to combine the input variable values. Currently + only string is supported. enum: - string type: string string: - description: |- - String declares that input variables should be combined into a single - string, using the relevant settings for formatting purposes. + description: String declares that input variables + should be combined into a single string, using the + relevant settings for formatting purposes. properties: fmt: - description: |- - Format the input using a Go format string. See - https://golang.org/pkg/fmt/ for details. + description: Format the input using a Go format + string. See https://golang.org/pkg/fmt/ for + details. type: string required: - fmt type: object variables: - description: |- - Variables are the list of variables whose values will be retrieved and - combined. + description: Variables are the list of variables whose + values will be retrieved and combined. items: - description: |- - A CombineVariable defines the source of a value that is combined with - others to form and patch an output value. Currently, this only supports - retrieving values from a field path. + description: A CombineVariable defines the source + of a value that is combined with others to form + and patch an output value. Currently, this only + supports retrieving values from a field path. properties: fromFieldPath: - description: |- - FromFieldPath is the path of the field on the source whose value is - to be used as input. + description: FromFieldPath is the path of the + field on the source whose value is to be used + as input. type: string required: - fromFieldPath @@ -1170,10 +1079,10 @@ spec: - variables type: object fromFieldPath: - description: |- - FromFieldPath is the path of the field on the resource whose value is - to be used as input. Required when type is FromCompositeFieldPath, - FromEnvironmentFieldPath, ToCompositeFieldPath, ToEnvironmentFieldPath. + description: FromFieldPath is the path of the field on + the resource whose value is to be used as input. Required + when type is FromCompositeFieldPath, FromEnvironmentFieldPath, + ToCompositeFieldPath, ToEnvironmentFieldPath. type: string patchSetName: description: PatchSetName to include patches from. Required @@ -1184,11 +1093,12 @@ spec: behaviour. properties: fromFieldPath: - description: |- - FromFieldPath specifies how to patch from a field path. The default is - 'Optional', which means the patch will be a no-op if the specified - fromFieldPath does not exist. Use 'Required' if the patch should fail if - the specified path does not exist. + description: FromFieldPath specifies how to patch + from a field path. The default is 'Optional', which + means the patch will be a no-op if the specified + fromFieldPath does not exist. Use 'Required' if + the patch should fail if the specified path does + not exist. enum: - Optional - Required @@ -1208,36 +1118,30 @@ spec: type: object type: object toFieldPath: - description: |- - ToFieldPath is the path of the field on the resource whose value will - be changed with the result of transforms. Leave empty if you'd like to - propagate to the same path as fromFieldPath. + description: ToFieldPath is the path of the field on the + resource whose value will be changed with the result + of transforms. Leave empty if you'd like to propagate + to the same path as fromFieldPath. type: string transforms: - description: |- - Transforms are the list of functions that are used as a FIFO pipe for the - input to be transformed. + description: Transforms are the list of functions that + are used as a FIFO pipe for the input to be transformed. items: - description: |- - Transform is a unit of process whose input is transformed into an output with - the supplied configuration. + description: Transform is a unit of process whose input + is transformed into an output with the supplied configuration. properties: convert: description: Convert is used to cast the input into the given output type. properties: format: - description: |- - The expected input format. - - + description: "The expected input format. \n * `quantity` - parses the input as a K8s [`resource.Quantity`](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity). Only used during `string -> float64` conversions. * `json` - parses the input as a JSON string. - Only used during `string -> object` or `string -> list` conversions. - - - If this property is null, the default conversion is applied. + Only used during `string -> object` or `string + -> list` conversions. \n If this property + is null, the default conversion is applied." enum: - none - quantity @@ -1277,29 +1181,28 @@ spec: - Input type: string fallbackValue: - description: |- - The fallback value that should be returned by the transform if now pattern + description: The fallback value that should + be returned by the transform if now pattern matches. x-kubernetes-preserve-unknown-fields: true patterns: - description: |- - The patterns that should be tested against the input string. - Patterns are tested in order. The value of the first match is used as - result of this transform. + description: The patterns that should be tested + against the input string. Patterns are tested + in order. The value of the first match is + used as result of this transform. items: - description: |- - MatchTransformPattern is a transform that returns the value that matches a - pattern. + description: MatchTransformPattern is a transform + that returns the value that matches a pattern. properties: literal: - description: |- - Literal exactly matches the input string (case sensitive). - Is required if `type` is `literal`. + description: Literal exactly matches the + input string (case sensitive). Is required + if `type` is `literal`. type: string regexp: - description: |- - Regexp to match against the input string. - Is required if `type` is `regexp`. + description: Regexp to match against the + input string. Is required if `type` + is `regexp`. type: string result: description: The value that is used as @@ -1308,17 +1211,15 @@ spec: x-kubernetes-preserve-unknown-fields: true type: default: literal - description: |- - Type specifies how the pattern matches the input. - - - * `literal` - the pattern value has to exactly match (case sensitive) the - input string. This is the default. - - - * `regexp` - the pattern treated as a regular expression against - which the input string is tested. Crossplane will throw an error if the - key is not a valid regexp. + description: "Type specifies how the pattern + matches the input. \n * `literal` - + the pattern value has to exactly match + (case sensitive) the input string. This + is the default. \n * `regexp` - the + pattern treated as a regular expression + against which the input string is tested. + Crossplane will throw an error if the + key is not a valid regexp." enum: - literal - regexp @@ -1330,9 +1231,8 @@ spec: type: array type: object math: - description: |- - Math is used to transform the input via mathematical operations such as - multiplication. + description: Math is used to transform the input + via mathematical operations such as multiplication. properties: clampMax: description: ClampMax makes sure that the value @@ -1359,19 +1259,22 @@ spec: type: string type: object string: - description: |- - String is used to transform the input into a string or a different kind - of string. Note that the input does not necessarily need to be a string. + description: String is used to transform the input + into a string or a different kind of string. Note + that the input does not necessarily need to be + a string. properties: convert: - description: |- - Optional conversion method to be specified. - `ToUpper` and `ToLower` change the letter case of the input string. - `ToBase64` and `FromBase64` perform a base64 conversion based on the input string. - `ToJson` converts any input value into its raw JSON representation. - `ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input - converted to JSON. - `ToAdler32` generate a addler32 hash based on the input string. + description: Optional conversion method to be + specified. `ToUpper` and `ToLower` change + the letter case of the input string. `ToBase64` + and `FromBase64` perform a base64 conversion + based on the input string. `ToJson` converts + any input value into its raw JSON representation. + `ToSha1`, `ToSha256` and `ToSha512` generate + a hash value based on the input converted + to JSON. `ToAdler32` generate a addler32 hash + based on the input string. enum: - ToUpper - ToLower @@ -1384,22 +1287,10 @@ spec: - ToAdler32 type: string fmt: - description: |- - Format the input using a Go format string. See - https://golang.org/pkg/fmt/ for details. + description: Format the input using a Go format + string. See https://golang.org/pkg/fmt/ for + details. type: string - join: - description: Join defines parameters to join - a slice of values to a string. - properties: - separator: - description: |- - Separator defines the character that should separate the values from each - other in the joined string. - type: string - required: - - separator - type: object regexp: description: Extract a match from the input using a regular expression. @@ -1409,8 +1300,8 @@ spec: default) matches the entire expression. type: integer match: - description: |- - Match string. May optionally include submatches, aka capture groups. + description: Match string. May optionally + include submatches, aka capture groups. See https://pkg.go.dev/regexp/ for details. type: string required: @@ -1430,7 +1321,6 @@ spec: - TrimPrefix - TrimSuffix - Regexp - - Join type: string type: object type: @@ -1448,9 +1338,9 @@ spec: type: array type: default: FromCompositeFieldPath - description: |- - Type sets the patching behaviour to be used. Each patch type may require - its own fields to be set on the Patch object. + description: Type sets the patching behaviour to be used. + Each patch type may require its own fields to be set + on the Patch object. enum: - FromCompositeFieldPath - FromEnvironmentFieldPath @@ -1470,14 +1360,13 @@ spec: status: "True" type: Ready type: MatchCondition - description: |- - ReadinessChecks allows users to define custom readiness checks. All checks - have to return true in order for resource to be considered ready. The - default readiness check is to have the "Ready" condition to be "True". + description: ReadinessChecks allows users to define custom readiness + checks. All checks have to return true in order for resource + to be considered ready. The default readiness check is to + have the "Ready" condition to be "True". items: - description: |- - ReadinessCheck is used to indicate how to tell whether a resource is ready - for consumption + description: ReadinessCheck is used to indicate how to tell + whether a resource is ready for consumption properties: fieldPath: description: FieldPath shows the path of the field whose @@ -1535,24 +1424,21 @@ spec: format: int64 type: integer writeConnectionSecretsToNamespace: - description: |- - WriteConnectionSecretsToNamespace specifies the namespace in which the - connection secrets of composite resource dynamically provisioned using - this composition will be created. - This field is planned to be replaced in a future release in favor of - PublishConnectionDetailsWithStoreConfigRef. Currently, both could be - set independently and connection details would be published to both - without affecting each other as long as related fields at MR level - specified. + description: WriteConnectionSecretsToNamespace specifies the namespace + in which the connection secrets of composite resource dynamically + provisioned using this composition will be created. This field is + planned to be replaced in a future release in favor of PublishConnectionDetailsWithStoreConfigRef. + Currently, both could be set independently and connection details + would be published to both without affecting each other as long + as related fields at MR level specified. type: string required: - compositeTypeRef - revision type: object status: - description: |- - CompositionRevisionStatus shows the observed state of the composition - revision. + description: CompositionRevisionStatus shows the observed state of the + composition revision. properties: conditions: description: Conditions of the resource. @@ -1560,15 +1446,13 @@ spec: 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. + 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. + 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 @@ -1579,9 +1463,8 @@ spec: 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. + 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 @@ -1615,36 +1498,28 @@ spec: name: v1beta1 schema: openAPIV3Schema: - description: |- - A CompositionRevision represents a revision in time of a Composition. + description: A CompositionRevision represents a revision in time of a Composition. Revisions are created by Crossplane; they should be treated as immutable. 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 + 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 + 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: |- - CompositionRevisionSpec specifies the desired state of the composition - revision. + description: CompositionRevisionSpec specifies the desired state of the + composition revision. properties: compositeTypeRef: - description: |- - CompositeTypeRef specifies the type of composite resource that this - composition is compatible with. + description: CompositeTypeRef specifies the type of composite resource + that this composition is compatible with. properties: apiVersion: description: APIVersion of the type. @@ -1657,44 +1532,35 @@ spec: - kind type: object environment: - description: |- - Environment configures the environment in which resources are rendered. - - - THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored - unless the relevant Crossplane feature flag is enabled, and may be - changed or removed without notice. + description: "Environment configures the environment in which resources + are rendered. \n THIS IS AN ALPHA FIELD. Do not use it in production. + It is not honored unless the relevant Crossplane feature flag is + enabled, and may be changed or removed without notice." properties: defaultData: additionalProperties: x-kubernetes-preserve-unknown-fields: true - description: |- - DefaultData statically defines the initial state of the environment. - It has the same schema-less structure as the data field in - environment configs. - It is overwritten by the selected environment configs. + description: DefaultData statically defines the initial state + of the environment. It has the same schema-less structure as + the data field in environment configs. It is overwritten by + the selected environment configs. type: object environmentConfigs: - description: |- - EnvironmentConfigs selects a list of `EnvironmentConfig`s. The resolved - resources are stored in the composite resource at - `spec.environmentConfigRefs` and is only updated if it is null. - - - The list of references is used to compute an in-memory environment at - compose time. The data of all object is merged in the order they are - listed, meaning the values of EnvironmentConfigs with a larger index take - priority over ones with smaller indices. - - - The computed environment can be accessed in a composition using - `FromEnvironmentFieldPath` and `CombineFromEnvironment` patches. + description: "EnvironmentConfigs selects a list of `EnvironmentConfig`s. + The resolved resources are stored in the composite resource + at `spec.environmentConfigRefs` and is only updated if it is + null. \n The list of references is used to compute an in-memory + environment at compose time. The data of all object is merged + in the order they are listed, meaning the values of EnvironmentConfigs + with a larger index take priority over ones with smaller indices. + \n The computed environment can be accessed in a composition + using `FromEnvironmentFieldPath` and `CombineFromEnvironment` + patches." items: description: EnvironmentSource selects a EnvironmentConfig resource. properties: ref: - description: |- - Ref is a named reference to a single EnvironmentConfig. + description: Ref is a named reference to a single EnvironmentConfig. Either Ref or Selector is required. properties: name: @@ -1710,20 +1576,21 @@ spec: description: MatchLabels ensures an object with matching labels is selected. items: - description: |- - An EnvironmentSourceSelectorLabelMatcher acts like a k8s label selector but - can draw the label value from a different path. + description: An EnvironmentSourceSelectorLabelMatcher + acts like a k8s label selector but can draw the + label value from a different path. properties: fromFieldPathPolicy: default: Required - description: |- - FromFieldPathPolicy specifies the policy for the valueFromFieldPath. - The default is Required, meaning that an error will be returned if the - field is not found in the composite resource. - Optional means that if the field is not found in the composite resource, - that label pair will just be skipped. N.B. other specified label - matchers will still be used to retrieve the desired - environment config, if any. + description: FromFieldPathPolicy specifies the + policy for the valueFromFieldPath. The default + is Required, meaning that an error will be returned + if the field is not found in the composite resource. + Optional means that if the field is not found + in the composite resource, that label pair will + just be skipped. N.B. other specified label + matchers will still be used to retrieve the + desired environment config, if any. enum: - Optional - Required @@ -1778,9 +1645,8 @@ spec: type: object type: default: Reference - description: |- - Type specifies the way the EnvironmentConfig is selected. - Default is `Reference` + description: Type specifies the way the EnvironmentConfig + is selected. Default is `Reference` enum: - Reference - Selector @@ -1788,51 +1654,47 @@ spec: type: object type: array patches: - description: |- - Patches is a list of environment patches that are executed before a - composition's resources are composed. + description: Patches is a list of environment patches that are + executed before a composition's resources are composed. items: description: EnvironmentPatch is a patch for a Composition environment. properties: combine: - description: |- - Combine is the patch configuration for a CombineFromComposite or - CombineToComposite patch. + description: Combine is the patch configuration for a CombineFromComposite + or CombineToComposite patch. properties: strategy: - description: |- - Strategy defines the strategy to use to combine the input variable values. - Currently only string is supported. + description: Strategy defines the strategy to use to + combine the input variable values. Currently only + string is supported. enum: - string type: string string: - description: |- - String declares that input variables should be combined into a single - string, using the relevant settings for formatting purposes. + description: String declares that input variables should + be combined into a single string, using the relevant + settings for formatting purposes. properties: fmt: - description: |- - Format the input using a Go format string. See - https://golang.org/pkg/fmt/ for details. + description: Format the input using a Go format + string. See https://golang.org/pkg/fmt/ for details. type: string required: - fmt type: object variables: - description: |- - Variables are the list of variables whose values will be retrieved and - combined. + description: Variables are the list of variables whose + values will be retrieved and combined. items: - description: |- - A CombineVariable defines the source of a value that is combined with - others to form and patch an output value. Currently, this only supports - retrieving values from a field path. + description: A CombineVariable defines the source + of a value that is combined with others to form + and patch an output value. Currently, this only + supports retrieving values from a field path. properties: fromFieldPath: - description: |- - FromFieldPath is the path of the field on the source whose value is - to be used as input. + description: FromFieldPath is the path of the + field on the source whose value is to be used + as input. type: string required: - fromFieldPath @@ -1844,21 +1706,20 @@ spec: - variables type: object fromFieldPath: - description: |- - FromFieldPath is the path of the field on the resource whose value is - to be used as input. Required when type is FromCompositeFieldPath or - ToCompositeFieldPath. + description: FromFieldPath is the path of the field on the + resource whose value is to be used as input. Required + when type is FromCompositeFieldPath or ToCompositeFieldPath. type: string policy: description: Policy configures the specifics of patching behaviour. properties: fromFieldPath: - description: |- - FromFieldPath specifies how to patch from a field path. The default is - 'Optional', which means the patch will be a no-op if the specified - fromFieldPath does not exist. Use 'Required' if the patch should fail if - the specified path does not exist. + description: FromFieldPath specifies how to patch from + a field path. The default is 'Optional', which means + the patch will be a no-op if the specified fromFieldPath + does not exist. Use 'Required' if the patch should + fail if the specified path does not exist. enum: - Optional - Required @@ -1878,36 +1739,30 @@ spec: type: object type: object toFieldPath: - description: |- - ToFieldPath is the path of the field on the resource whose value will - be changed with the result of transforms. Leave empty if you'd like to - propagate to the same path as fromFieldPath. + description: ToFieldPath is the path of the field on the + resource whose value will be changed with the result of + transforms. Leave empty if you'd like to propagate to + the same path as fromFieldPath. type: string transforms: - description: |- - Transforms are the list of functions that are used as a FIFO pipe for the - input to be transformed. + description: Transforms are the list of functions that are + used as a FIFO pipe for the input to be transformed. items: - description: |- - Transform is a unit of process whose input is transformed into an output with - the supplied configuration. + description: Transform is a unit of process whose input + is transformed into an output with the supplied configuration. properties: convert: description: Convert is used to cast the input into the given output type. properties: format: - description: |- - The expected input format. - - - * `quantity` - parses the input as a K8s [`resource.Quantity`](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity). + description: "The expected input format. \n * + `quantity` - parses the input as a K8s [`resource.Quantity`](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity). Only used during `string -> float64` conversions. * `json` - parses the input as a JSON string. - Only used during `string -> object` or `string -> list` conversions. - - - If this property is null, the default conversion is applied. + Only used during `string -> object` or `string + -> list` conversions. \n If this property is + null, the default conversion is applied." enum: - none - quantity @@ -1947,29 +1802,27 @@ spec: - Input type: string fallbackValue: - description: |- - The fallback value that should be returned by the transform if now pattern - matches. + description: The fallback value that should be + returned by the transform if now pattern matches. x-kubernetes-preserve-unknown-fields: true patterns: - description: |- - The patterns that should be tested against the input string. - Patterns are tested in order. The value of the first match is used as - result of this transform. + description: The patterns that should be tested + against the input string. Patterns are tested + in order. The value of the first match is used + as result of this transform. items: - description: |- - MatchTransformPattern is a transform that returns the value that matches a - pattern. + description: MatchTransformPattern is a transform + that returns the value that matches a pattern. properties: literal: - description: |- - Literal exactly matches the input string (case sensitive). - Is required if `type` is `literal`. + description: Literal exactly matches the + input string (case sensitive). Is required + if `type` is `literal`. type: string regexp: - description: |- - Regexp to match against the input string. - Is required if `type` is `regexp`. + description: Regexp to match against the + input string. Is required if `type` is + `regexp`. type: string result: description: The value that is used as result @@ -1977,17 +1830,15 @@ spec: x-kubernetes-preserve-unknown-fields: true type: default: literal - description: |- - Type specifies how the pattern matches the input. - - - * `literal` - the pattern value has to exactly match (case sensitive) the - input string. This is the default. - - - * `regexp` - the pattern treated as a regular expression against - which the input string is tested. Crossplane will throw an error if the - key is not a valid regexp. + description: "Type specifies how the pattern + matches the input. \n * `literal` - the + pattern value has to exactly match (case + sensitive) the input string. This is the + default. \n * `regexp` - the pattern treated + as a regular expression against which + the input string is tested. Crossplane + will throw an error if the key is not + a valid regexp." enum: - literal - regexp @@ -1999,9 +1850,8 @@ spec: type: array type: object math: - description: |- - Math is used to transform the input via mathematical operations such as - multiplication. + description: Math is used to transform the input via + mathematical operations such as multiplication. properties: clampMax: description: ClampMax makes sure that the value @@ -2028,19 +1878,22 @@ spec: type: string type: object string: - description: |- - String is used to transform the input into a string or a different kind - of string. Note that the input does not necessarily need to be a string. + description: String is used to transform the input + into a string or a different kind of string. Note + that the input does not necessarily need to be a + string. properties: convert: - description: |- - Optional conversion method to be specified. - `ToUpper` and `ToLower` change the letter case of the input string. - `ToBase64` and `FromBase64` perform a base64 conversion based on the input string. - `ToJson` converts any input value into its raw JSON representation. - `ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input - converted to JSON. - `ToAdler32` generate a addler32 hash based on the input string. + description: Optional conversion method to be + specified. `ToUpper` and `ToLower` change the + letter case of the input string. `ToBase64` + and `FromBase64` perform a base64 conversion + based on the input string. `ToJson` converts + any input value into its raw JSON representation. + `ToSha1`, `ToSha256` and `ToSha512` generate + a hash value based on the input converted to + JSON. `ToAdler32` generate a addler32 hash based + on the input string. enum: - ToUpper - ToLower @@ -2053,22 +1906,10 @@ spec: - ToAdler32 type: string fmt: - description: |- - Format the input using a Go format string. See - https://golang.org/pkg/fmt/ for details. + description: Format the input using a Go format + string. See https://golang.org/pkg/fmt/ for + details. type: string - join: - description: Join defines parameters to join a - slice of values to a string. - properties: - separator: - description: |- - Separator defines the character that should separate the values from each - other in the joined string. - type: string - required: - - separator - type: object regexp: description: Extract a match from the input using a regular expression. @@ -2078,8 +1919,8 @@ spec: default) matches the entire expression. type: integer match: - description: |- - Match string. May optionally include submatches, aka capture groups. + description: Match string. May optionally + include submatches, aka capture groups. See https://pkg.go.dev/regexp/ for details. type: string required: @@ -2099,7 +1940,6 @@ spec: - TrimPrefix - TrimSuffix - Regexp - - Join type: string type: object type: @@ -2117,9 +1957,9 @@ spec: type: array type: default: FromCompositeFieldPath - description: |- - Type sets the patching behaviour to be used. Each patch type may require - its own fields to be set on the Patch object. + description: Type sets the patching behaviour to be used. + Each patch type may require its own fields to be set on + the Patch object. enum: - FromCompositeFieldPath - ToCompositeFieldPath @@ -2129,27 +1969,27 @@ spec: type: object type: array policy: - description: |- - Policy represents the Resolve and Resolution policies which apply to - all EnvironmentSourceReferences in EnvironmentConfigs list. + description: Policy represents the Resolve and Resolution policies + which apply to all EnvironmentSourceReferences in EnvironmentConfigs + list. 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. + 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. + 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 @@ -2158,38 +1998,28 @@ spec: type: object mode: default: Resources - description: |- - Mode controls what type or "mode" of Composition will be used. - - - "Resources" (the default) indicates that a Composition uses what is - commonly referred to as "Patch & Transform" or P&T composition. This mode - of Composition uses an array of resources, each a template for a composed - resource. - - - "Pipeline" indicates that a Composition specifies a pipeline - of Composition Functions, each of which is responsible for producing - composed resources that Crossplane should create or update. THE PIPELINE - MODE IS A BETA FEATURE. It is not honored if the relevant Crossplane - feature flag is disabled. + description: "Mode controls what type or \"mode\" of Composition will + be used. \n \"Resources\" (the default) indicates that a Composition + uses what is commonly referred to as \"Patch & Transform\" or P&T + composition. This mode of Composition uses an array of resources, + each a template for a composed resource. \n \"Pipeline\" indicates + that a Composition specifies a pipeline of Composition Functions, + each of which is responsible for producing composed resources that + Crossplane should create or update. THE PIPELINE MODE IS A BETA + FEATURE. It is not honored if the relevant Crossplane feature flag + is disabled." enum: - Resources - Pipeline type: string patchSets: - description: |- - PatchSets define a named set of patches that may be included by any - resource in this Composition. PatchSets cannot themselves refer to other - PatchSets. - - - PatchSets are only used by the "Resources" mode of Composition. They - are ignored by other modes. + description: "PatchSets define a named set of patches that may be + included by any resource in this Composition. PatchSets cannot themselves + refer to other PatchSets. \n PatchSets are only used by the \"Resources\" + mode of Composition. They are ignored by other modes." items: - description: |- - A PatchSet is a set of patches that can be reused from all resources within - a Composition. + description: A PatchSet is a set of patches that can be reused from + all resources within a Composition. properties: name: description: Name of this PatchSet. @@ -2198,51 +2028,50 @@ spec: description: Patches will be applied as an overlay to the base resource. items: - description: |- - Patch objects are applied between composite and composed resources. Their - behaviour depends on the Type selected. The default Type, - FromCompositeFieldPath, copies a value from the composite resource to - the composed resource, applying any defined transformers. + description: Patch objects are applied between composite and + composed resources. Their behaviour depends on the Type + selected. The default Type, FromCompositeFieldPath, copies + a value from the composite resource to the composed resource, + applying any defined transformers. properties: combine: - description: |- - Combine is the patch configuration for a CombineFromComposite, - CombineFromEnvironment, CombineToComposite or CombineToEnvironment patch. + description: Combine is the patch configuration for a + CombineFromComposite, CombineFromEnvironment, CombineToComposite + or CombineToEnvironment patch. properties: strategy: - description: |- - Strategy defines the strategy to use to combine the input variable values. - Currently only string is supported. + description: Strategy defines the strategy to use + to combine the input variable values. Currently + only string is supported. enum: - string type: string string: - description: |- - String declares that input variables should be combined into a single - string, using the relevant settings for formatting purposes. + description: String declares that input variables + should be combined into a single string, using the + relevant settings for formatting purposes. properties: fmt: - description: |- - Format the input using a Go format string. See - https://golang.org/pkg/fmt/ for details. + description: Format the input using a Go format + string. See https://golang.org/pkg/fmt/ for + details. type: string required: - fmt type: object variables: - description: |- - Variables are the list of variables whose values will be retrieved and - combined. + description: Variables are the list of variables whose + values will be retrieved and combined. items: - description: |- - A CombineVariable defines the source of a value that is combined with - others to form and patch an output value. Currently, this only supports - retrieving values from a field path. + description: A CombineVariable defines the source + of a value that is combined with others to form + and patch an output value. Currently, this only + supports retrieving values from a field path. properties: fromFieldPath: - description: |- - FromFieldPath is the path of the field on the source whose value is - to be used as input. + description: FromFieldPath is the path of the + field on the source whose value is to be used + as input. type: string required: - fromFieldPath @@ -2254,10 +2083,10 @@ spec: - variables type: object fromFieldPath: - description: |- - FromFieldPath is the path of the field on the resource whose value is - to be used as input. Required when type is FromCompositeFieldPath, - FromEnvironmentFieldPath, ToCompositeFieldPath, ToEnvironmentFieldPath. + description: FromFieldPath is the path of the field on + the resource whose value is to be used as input. Required + when type is FromCompositeFieldPath, FromEnvironmentFieldPath, + ToCompositeFieldPath, ToEnvironmentFieldPath. type: string patchSetName: description: PatchSetName to include patches from. Required @@ -2268,11 +2097,12 @@ spec: behaviour. properties: fromFieldPath: - description: |- - FromFieldPath specifies how to patch from a field path. The default is - 'Optional', which means the patch will be a no-op if the specified - fromFieldPath does not exist. Use 'Required' if the patch should fail if - the specified path does not exist. + description: FromFieldPath specifies how to patch + from a field path. The default is 'Optional', which + means the patch will be a no-op if the specified + fromFieldPath does not exist. Use 'Required' if + the patch should fail if the specified path does + not exist. enum: - Optional - Required @@ -2292,36 +2122,30 @@ spec: type: object type: object toFieldPath: - description: |- - ToFieldPath is the path of the field on the resource whose value will - be changed with the result of transforms. Leave empty if you'd like to - propagate to the same path as fromFieldPath. + description: ToFieldPath is the path of the field on the + resource whose value will be changed with the result + of transforms. Leave empty if you'd like to propagate + to the same path as fromFieldPath. type: string transforms: - description: |- - Transforms are the list of functions that are used as a FIFO pipe for the - input to be transformed. + description: Transforms are the list of functions that + are used as a FIFO pipe for the input to be transformed. items: - description: |- - Transform is a unit of process whose input is transformed into an output with - the supplied configuration. + description: Transform is a unit of process whose input + is transformed into an output with the supplied configuration. properties: convert: description: Convert is used to cast the input into the given output type. properties: format: - description: |- - The expected input format. - - + description: "The expected input format. \n * `quantity` - parses the input as a K8s [`resource.Quantity`](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity). Only used during `string -> float64` conversions. * `json` - parses the input as a JSON string. - Only used during `string -> object` or `string -> list` conversions. - - - If this property is null, the default conversion is applied. + Only used during `string -> object` or `string + -> list` conversions. \n If this property + is null, the default conversion is applied." enum: - none - quantity @@ -2361,29 +2185,28 @@ spec: - Input type: string fallbackValue: - description: |- - The fallback value that should be returned by the transform if now pattern + description: The fallback value that should + be returned by the transform if now pattern matches. x-kubernetes-preserve-unknown-fields: true patterns: - description: |- - The patterns that should be tested against the input string. - Patterns are tested in order. The value of the first match is used as - result of this transform. + description: The patterns that should be tested + against the input string. Patterns are tested + in order. The value of the first match is + used as result of this transform. items: - description: |- - MatchTransformPattern is a transform that returns the value that matches a - pattern. + description: MatchTransformPattern is a transform + that returns the value that matches a pattern. properties: literal: - description: |- - Literal exactly matches the input string (case sensitive). - Is required if `type` is `literal`. + description: Literal exactly matches the + input string (case sensitive). Is required + if `type` is `literal`. type: string regexp: - description: |- - Regexp to match against the input string. - Is required if `type` is `regexp`. + description: Regexp to match against the + input string. Is required if `type` + is `regexp`. type: string result: description: The value that is used as @@ -2392,17 +2215,15 @@ spec: x-kubernetes-preserve-unknown-fields: true type: default: literal - description: |- - Type specifies how the pattern matches the input. - - - * `literal` - the pattern value has to exactly match (case sensitive) the - input string. This is the default. - - - * `regexp` - the pattern treated as a regular expression against - which the input string is tested. Crossplane will throw an error if the - key is not a valid regexp. + description: "Type specifies how the pattern + matches the input. \n * `literal` - + the pattern value has to exactly match + (case sensitive) the input string. This + is the default. \n * `regexp` - the + pattern treated as a regular expression + against which the input string is tested. + Crossplane will throw an error if the + key is not a valid regexp." enum: - literal - regexp @@ -2414,9 +2235,8 @@ spec: type: array type: object math: - description: |- - Math is used to transform the input via mathematical operations such as - multiplication. + description: Math is used to transform the input + via mathematical operations such as multiplication. properties: clampMax: description: ClampMax makes sure that the value @@ -2443,19 +2263,22 @@ spec: type: string type: object string: - description: |- - String is used to transform the input into a string or a different kind - of string. Note that the input does not necessarily need to be a string. + description: String is used to transform the input + into a string or a different kind of string. Note + that the input does not necessarily need to be + a string. properties: convert: - description: |- - Optional conversion method to be specified. - `ToUpper` and `ToLower` change the letter case of the input string. - `ToBase64` and `FromBase64` perform a base64 conversion based on the input string. - `ToJson` converts any input value into its raw JSON representation. - `ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input - converted to JSON. - `ToAdler32` generate a addler32 hash based on the input string. + description: Optional conversion method to be + specified. `ToUpper` and `ToLower` change + the letter case of the input string. `ToBase64` + and `FromBase64` perform a base64 conversion + based on the input string. `ToJson` converts + any input value into its raw JSON representation. + `ToSha1`, `ToSha256` and `ToSha512` generate + a hash value based on the input converted + to JSON. `ToAdler32` generate a addler32 hash + based on the input string. enum: - ToUpper - ToLower @@ -2468,22 +2291,10 @@ spec: - ToAdler32 type: string fmt: - description: |- - Format the input using a Go format string. See - https://golang.org/pkg/fmt/ for details. + description: Format the input using a Go format + string. See https://golang.org/pkg/fmt/ for + details. type: string - join: - description: Join defines parameters to join - a slice of values to a string. - properties: - separator: - description: |- - Separator defines the character that should separate the values from each - other in the joined string. - type: string - required: - - separator - type: object regexp: description: Extract a match from the input using a regular expression. @@ -2493,8 +2304,8 @@ spec: default) matches the entire expression. type: integer match: - description: |- - Match string. May optionally include submatches, aka capture groups. + description: Match string. May optionally + include submatches, aka capture groups. See https://pkg.go.dev/regexp/ for details. type: string required: @@ -2514,7 +2325,6 @@ spec: - TrimPrefix - TrimSuffix - Regexp - - Join type: string type: object type: @@ -2532,9 +2342,9 @@ spec: type: array type: default: FromCompositeFieldPath - description: |- - Type sets the patching behaviour to be used. Each patch type may require - its own fields to be set on the Patch object. + description: Type sets the patching behaviour to be used. + Each patch type may require its own fields to be set + on the Patch object. enum: - FromCompositeFieldPath - FromEnvironmentFieldPath @@ -2554,25 +2364,19 @@ spec: type: object type: array pipeline: - description: |- - Pipeline is a list of composition function steps that will be used when a - composite resource referring to this composition is created. One of - resources and pipeline must be specified - you cannot specify both. - - - The Pipeline is only used by the "Pipeline" mode of Composition. It is - ignored by other modes. - - - THIS IS A BETA FIELD. It is not honored if the relevant Crossplane - feature flag is disabled. + description: "Pipeline is a list of composition function steps that + will be used when a composite resource referring to this composition + is created. One of resources and pipeline must be specified - you + cannot specify both. \n The Pipeline is only used by the \"Pipeline\" + mode of Composition. It is ignored by other modes. \n THIS IS A + BETA FIELD. It is not honored if the relevant Crossplane feature + flag is disabled." items: description: A PipelineStep in a Composition Function pipeline. properties: functionRef: - description: |- - FunctionRef is a reference to the Composition Function this step should - execute. + description: FunctionRef is a reference to the Composition Function + this step should execute. properties: name: description: Name of the referenced Function. @@ -2581,10 +2385,9 @@ spec: - name type: object input: - description: |- - Input is an optional, arbitrary Kubernetes resource (i.e. a resource - with an apiVersion and kind) that will be passed to the Composition - Function as the 'input' of its RunFunctionRequest. + description: Input is an optional, arbitrary Kubernetes resource + (i.e. a resource with an apiVersion and kind) that will be + passed to the Composition Function as the 'input' of its RunFunctionRequest. type: object x-kubernetes-embedded-resource: true x-kubernetes-preserve-unknown-fields: true @@ -2599,15 +2402,12 @@ spec: publishConnectionDetailsWithStoreConfigRef: default: name: default - description: |- - PublishConnectionDetailsWithStoreConfig specifies the secret store config - with which the connection details of composite resources dynamically - provisioned using this composition will be published. - - - THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored - unless the relevant Crossplane feature flag is enabled, and may be - changed or removed without notice. + description: "PublishConnectionDetailsWithStoreConfig specifies the + secret store config with which the connection details of composite + resources dynamically provisioned using this composition will be + published. \n THIS IS AN ALPHA FIELD. Do not use it in production. + It is not honored unless the relevant Crossplane feature flag is + enabled, and may be changed or removed without notice." properties: name: description: Name of the referenced StoreConfig. @@ -2616,17 +2416,13 @@ spec: - name type: object resources: - description: |- - Resources is a list of resource templates that will be used when a - composite resource referring to this composition is created. - - - Resources are only used by the "Resources" mode of Composition. They are - ignored by other modes. + description: "Resources is a list of resource templates that will + be used when a composite resource referring to this composition + is created. \n Resources are only used by the \"Resources\" mode + of Composition. They are ignored by other modes." items: - description: |- - ComposedTemplate is used to provide information about how the composed resource - should be processed. + description: ComposedTemplate is used to provide information about + how the composed resource should be processed. properties: base: description: Base is the target resource that the patches will @@ -2635,112 +2431,108 @@ spec: x-kubernetes-embedded-resource: true x-kubernetes-preserve-unknown-fields: true connectionDetails: - description: |- - ConnectionDetails lists the propagation secret keys from this target - resource to the composition instance connection secret. + description: ConnectionDetails lists the propagation secret + keys from this target resource to the composition instance + connection secret. items: - description: |- - ConnectionDetail includes the information about the propagation of the connection - information from one secret to another. + description: ConnectionDetail includes the information about + the propagation of the connection information from one secret + to another. properties: fromConnectionSecretKey: - description: |- - FromConnectionSecretKey is the key that will be used to fetch the value - from the composed resource's connection secret. + description: FromConnectionSecretKey is the key that will + be used to fetch the value from the composed resource's + connection secret. type: string fromFieldPath: - description: |- - FromFieldPath is the path of the field on the composed resource whose - value to be used as input. Name must be specified if the type is - FromFieldPath. + description: FromFieldPath is the path of the field on + the composed resource whose value to be used as input. + Name must be specified if the type is FromFieldPath. type: string name: - description: |- - Name of the connection secret key that will be propagated to the - connection secret of the composition instance. Leave empty if you'd like - to use the same key name. + description: Name of the connection secret key that will + be propagated to the connection secret of the composition + instance. Leave empty if you'd like to use the same + key name. type: string type: - description: |- - Type sets the connection detail fetching behaviour to be used. Each - connection detail type may require its own fields to be set on the - ConnectionDetail object. If the type is omitted Crossplane will attempt - to infer it based on which other fields were specified. If multiple - fields are specified the order of precedence is: - 1. FromValue - 2. FromConnectionSecretKey - 3. FromFieldPath + description: 'Type sets the connection detail fetching + behaviour to be used. Each connection detail type may + require its own fields to be set on the ConnectionDetail + object. If the type is omitted Crossplane will attempt + to infer it based on which other fields were specified. + If multiple fields are specified the order of precedence + is: 1. FromValue 2. FromConnectionSecretKey 3. FromFieldPath' enum: - FromConnectionSecretKey - FromFieldPath - FromValue type: string value: - description: |- - Value that will be propagated to the connection secret of the composite - resource. May be set to inject a fixed, non-sensitive connection secret - value, for example a well-known port. + description: Value that will be propagated to the connection + secret of the composite resource. May be set to inject + a fixed, non-sensitive connection secret value, for + example a well-known port. type: string type: object type: array name: - description: |- - A Name uniquely identifies this entry within its Composition's resources - array. Names are optional but *strongly* recommended. When all entries in - the resources array are named entries may added, deleted, and reordered - as long as their names do not change. When entries are not named the - length and order of the resources array should be treated as immutable. + description: A Name uniquely identifies this entry within its + Composition's resources array. Names are optional but *strongly* + recommended. When all entries in the resources array are named + entries may added, deleted, and reordered as long as their + names do not change. When entries are not named the length + and order of the resources array should be treated as immutable. Either all or no entries must be named. type: string patches: description: Patches will be applied as overlay to the base resource. items: - description: |- - Patch objects are applied between composite and composed resources. Their - behaviour depends on the Type selected. The default Type, - FromCompositeFieldPath, copies a value from the composite resource to - the composed resource, applying any defined transformers. + description: Patch objects are applied between composite and + composed resources. Their behaviour depends on the Type + selected. The default Type, FromCompositeFieldPath, copies + a value from the composite resource to the composed resource, + applying any defined transformers. properties: combine: - description: |- - Combine is the patch configuration for a CombineFromComposite, - CombineFromEnvironment, CombineToComposite or CombineToEnvironment patch. + description: Combine is the patch configuration for a + CombineFromComposite, CombineFromEnvironment, CombineToComposite + or CombineToEnvironment patch. properties: strategy: - description: |- - Strategy defines the strategy to use to combine the input variable values. - Currently only string is supported. + description: Strategy defines the strategy to use + to combine the input variable values. Currently + only string is supported. enum: - string type: string string: - description: |- - String declares that input variables should be combined into a single - string, using the relevant settings for formatting purposes. + description: String declares that input variables + should be combined into a single string, using the + relevant settings for formatting purposes. properties: fmt: - description: |- - Format the input using a Go format string. See - https://golang.org/pkg/fmt/ for details. + description: Format the input using a Go format + string. See https://golang.org/pkg/fmt/ for + details. type: string required: - fmt type: object variables: - description: |- - Variables are the list of variables whose values will be retrieved and - combined. + description: Variables are the list of variables whose + values will be retrieved and combined. items: - description: |- - A CombineVariable defines the source of a value that is combined with - others to form and patch an output value. Currently, this only supports - retrieving values from a field path. + description: A CombineVariable defines the source + of a value that is combined with others to form + and patch an output value. Currently, this only + supports retrieving values from a field path. properties: fromFieldPath: - description: |- - FromFieldPath is the path of the field on the source whose value is - to be used as input. + description: FromFieldPath is the path of the + field on the source whose value is to be used + as input. type: string required: - fromFieldPath @@ -2752,10 +2544,10 @@ spec: - variables type: object fromFieldPath: - description: |- - FromFieldPath is the path of the field on the resource whose value is - to be used as input. Required when type is FromCompositeFieldPath, - FromEnvironmentFieldPath, ToCompositeFieldPath, ToEnvironmentFieldPath. + description: FromFieldPath is the path of the field on + the resource whose value is to be used as input. Required + when type is FromCompositeFieldPath, FromEnvironmentFieldPath, + ToCompositeFieldPath, ToEnvironmentFieldPath. type: string patchSetName: description: PatchSetName to include patches from. Required @@ -2766,11 +2558,12 @@ spec: behaviour. properties: fromFieldPath: - description: |- - FromFieldPath specifies how to patch from a field path. The default is - 'Optional', which means the patch will be a no-op if the specified - fromFieldPath does not exist. Use 'Required' if the patch should fail if - the specified path does not exist. + description: FromFieldPath specifies how to patch + from a field path. The default is 'Optional', which + means the patch will be a no-op if the specified + fromFieldPath does not exist. Use 'Required' if + the patch should fail if the specified path does + not exist. enum: - Optional - Required @@ -2790,36 +2583,30 @@ spec: type: object type: object toFieldPath: - description: |- - ToFieldPath is the path of the field on the resource whose value will - be changed with the result of transforms. Leave empty if you'd like to - propagate to the same path as fromFieldPath. + description: ToFieldPath is the path of the field on the + resource whose value will be changed with the result + of transforms. Leave empty if you'd like to propagate + to the same path as fromFieldPath. type: string transforms: - description: |- - Transforms are the list of functions that are used as a FIFO pipe for the - input to be transformed. + description: Transforms are the list of functions that + are used as a FIFO pipe for the input to be transformed. items: - description: |- - Transform is a unit of process whose input is transformed into an output with - the supplied configuration. + description: Transform is a unit of process whose input + is transformed into an output with the supplied configuration. properties: convert: description: Convert is used to cast the input into the given output type. properties: format: - description: |- - The expected input format. - - + description: "The expected input format. \n * `quantity` - parses the input as a K8s [`resource.Quantity`](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity). Only used during `string -> float64` conversions. * `json` - parses the input as a JSON string. - Only used during `string -> object` or `string -> list` conversions. - - - If this property is null, the default conversion is applied. + Only used during `string -> object` or `string + -> list` conversions. \n If this property + is null, the default conversion is applied." enum: - none - quantity @@ -2859,29 +2646,28 @@ spec: - Input type: string fallbackValue: - description: |- - The fallback value that should be returned by the transform if now pattern + description: The fallback value that should + be returned by the transform if now pattern matches. x-kubernetes-preserve-unknown-fields: true patterns: - description: |- - The patterns that should be tested against the input string. - Patterns are tested in order. The value of the first match is used as - result of this transform. + description: The patterns that should be tested + against the input string. Patterns are tested + in order. The value of the first match is + used as result of this transform. items: - description: |- - MatchTransformPattern is a transform that returns the value that matches a - pattern. + description: MatchTransformPattern is a transform + that returns the value that matches a pattern. properties: literal: - description: |- - Literal exactly matches the input string (case sensitive). - Is required if `type` is `literal`. + description: Literal exactly matches the + input string (case sensitive). Is required + if `type` is `literal`. type: string regexp: - description: |- - Regexp to match against the input string. - Is required if `type` is `regexp`. + description: Regexp to match against the + input string. Is required if `type` + is `regexp`. type: string result: description: The value that is used as @@ -2890,17 +2676,15 @@ spec: x-kubernetes-preserve-unknown-fields: true type: default: literal - description: |- - Type specifies how the pattern matches the input. - - - * `literal` - the pattern value has to exactly match (case sensitive) the - input string. This is the default. - - - * `regexp` - the pattern treated as a regular expression against - which the input string is tested. Crossplane will throw an error if the - key is not a valid regexp. + description: "Type specifies how the pattern + matches the input. \n * `literal` - + the pattern value has to exactly match + (case sensitive) the input string. This + is the default. \n * `regexp` - the + pattern treated as a regular expression + against which the input string is tested. + Crossplane will throw an error if the + key is not a valid regexp." enum: - literal - regexp @@ -2912,9 +2696,8 @@ spec: type: array type: object math: - description: |- - Math is used to transform the input via mathematical operations such as - multiplication. + description: Math is used to transform the input + via mathematical operations such as multiplication. properties: clampMax: description: ClampMax makes sure that the value @@ -2941,19 +2724,22 @@ spec: type: string type: object string: - description: |- - String is used to transform the input into a string or a different kind - of string. Note that the input does not necessarily need to be a string. + description: String is used to transform the input + into a string or a different kind of string. Note + that the input does not necessarily need to be + a string. properties: convert: - description: |- - Optional conversion method to be specified. - `ToUpper` and `ToLower` change the letter case of the input string. - `ToBase64` and `FromBase64` perform a base64 conversion based on the input string. - `ToJson` converts any input value into its raw JSON representation. - `ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input - converted to JSON. - `ToAdler32` generate a addler32 hash based on the input string. + description: Optional conversion method to be + specified. `ToUpper` and `ToLower` change + the letter case of the input string. `ToBase64` + and `FromBase64` perform a base64 conversion + based on the input string. `ToJson` converts + any input value into its raw JSON representation. + `ToSha1`, `ToSha256` and `ToSha512` generate + a hash value based on the input converted + to JSON. `ToAdler32` generate a addler32 hash + based on the input string. enum: - ToUpper - ToLower @@ -2966,22 +2752,10 @@ spec: - ToAdler32 type: string fmt: - description: |- - Format the input using a Go format string. See - https://golang.org/pkg/fmt/ for details. + description: Format the input using a Go format + string. See https://golang.org/pkg/fmt/ for + details. type: string - join: - description: Join defines parameters to join - a slice of values to a string. - properties: - separator: - description: |- - Separator defines the character that should separate the values from each - other in the joined string. - type: string - required: - - separator - type: object regexp: description: Extract a match from the input using a regular expression. @@ -2991,8 +2765,8 @@ spec: default) matches the entire expression. type: integer match: - description: |- - Match string. May optionally include submatches, aka capture groups. + description: Match string. May optionally + include submatches, aka capture groups. See https://pkg.go.dev/regexp/ for details. type: string required: @@ -3012,7 +2786,6 @@ spec: - TrimPrefix - TrimSuffix - Regexp - - Join type: string type: object type: @@ -3030,9 +2803,9 @@ spec: type: array type: default: FromCompositeFieldPath - description: |- - Type sets the patching behaviour to be used. Each patch type may require - its own fields to be set on the Patch object. + description: Type sets the patching behaviour to be used. + Each patch type may require its own fields to be set + on the Patch object. enum: - FromCompositeFieldPath - FromEnvironmentFieldPath @@ -3052,14 +2825,13 @@ spec: status: "True" type: Ready type: MatchCondition - description: |- - ReadinessChecks allows users to define custom readiness checks. All checks - have to return true in order for resource to be considered ready. The - default readiness check is to have the "Ready" condition to be "True". + description: ReadinessChecks allows users to define custom readiness + checks. All checks have to return true in order for resource + to be considered ready. The default readiness check is to + have the "Ready" condition to be "True". items: - description: |- - ReadinessCheck is used to indicate how to tell whether a resource is ready - for consumption + description: ReadinessCheck is used to indicate how to tell + whether a resource is ready for consumption properties: fieldPath: description: FieldPath shows the path of the field whose @@ -3117,24 +2889,21 @@ spec: format: int64 type: integer writeConnectionSecretsToNamespace: - description: |- - WriteConnectionSecretsToNamespace specifies the namespace in which the - connection secrets of composite resource dynamically provisioned using - this composition will be created. - This field is planned to be replaced in a future release in favor of - PublishConnectionDetailsWithStoreConfigRef. Currently, both could be - set independently and connection details would be published to both - without affecting each other as long as related fields at MR level - specified. + description: WriteConnectionSecretsToNamespace specifies the namespace + in which the connection secrets of composite resource dynamically + provisioned using this composition will be created. This field is + planned to be replaced in a future release in favor of PublishConnectionDetailsWithStoreConfigRef. + Currently, both could be set independently and connection details + would be published to both without affecting each other as long + as related fields at MR level specified. type: string required: - compositeTypeRef - revision type: object status: - description: |- - CompositionRevisionStatus shows the observed state of the composition - revision. + description: CompositionRevisionStatus shows the observed state of the + composition revision. properties: conditions: description: Conditions of the resource. @@ -3142,15 +2911,13 @@ spec: 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. + 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. + 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 @@ -3161,9 +2928,8 @@ spec: 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. + 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 diff --git a/crossplane-crd-model/src/main/resources/kubernetes/apiextensions.crossplane.io_compositions.yaml b/crossplane-crd-model/src/main/resources/kubernetes/apiextensions.crossplane.io_compositions.yaml index cb1d489..10882fb 100644 --- a/crossplane-crd-model/src/main/resources/kubernetes/apiextensions.crossplane.io_compositions.yaml +++ b/crossplane-crd-model/src/main/resources/kubernetes/apiextensions.crossplane.io_compositions.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.14.0 + controller-gen.kubebuilder.io/version: v0.13.0 name: compositions.apiextensions.crossplane.io spec: group: apiextensions.crossplane.io @@ -33,19 +33,14 @@ spec: description: A Composition specifies how a composite resource should be composed. 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 + 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 + 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 @@ -53,9 +48,8 @@ spec: description: CompositionSpec specifies desired state of a composition. properties: compositeTypeRef: - description: |- - CompositeTypeRef specifies the type of composite resource that this - composition is compatible with. + description: CompositeTypeRef specifies the type of composite resource + that this composition is compatible with. properties: apiVersion: description: APIVersion of the type. @@ -68,44 +62,35 @@ spec: - kind type: object environment: - description: |- - Environment configures the environment in which resources are rendered. - - - THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored - unless the relevant Crossplane feature flag is enabled, and may be - changed or removed without notice. + description: "Environment configures the environment in which resources + are rendered. \n THIS IS AN ALPHA FIELD. Do not use it in production. + It is not honored unless the relevant Crossplane feature flag is + enabled, and may be changed or removed without notice." properties: defaultData: additionalProperties: x-kubernetes-preserve-unknown-fields: true - description: |- - DefaultData statically defines the initial state of the environment. - It has the same schema-less structure as the data field in - environment configs. - It is overwritten by the selected environment configs. + description: DefaultData statically defines the initial state + of the environment. It has the same schema-less structure as + the data field in environment configs. It is overwritten by + the selected environment configs. type: object environmentConfigs: - description: |- - EnvironmentConfigs selects a list of `EnvironmentConfig`s. The resolved - resources are stored in the composite resource at - `spec.environmentConfigRefs` and is only updated if it is null. - - - The list of references is used to compute an in-memory environment at - compose time. The data of all object is merged in the order they are - listed, meaning the values of EnvironmentConfigs with a larger index take - priority over ones with smaller indices. - - - The computed environment can be accessed in a composition using - `FromEnvironmentFieldPath` and `CombineFromEnvironment` patches. + description: "EnvironmentConfigs selects a list of `EnvironmentConfig`s. + The resolved resources are stored in the composite resource + at `spec.environmentConfigRefs` and is only updated if it is + null. \n The list of references is used to compute an in-memory + environment at compose time. The data of all object is merged + in the order they are listed, meaning the values of EnvironmentConfigs + with a larger index take priority over ones with smaller indices. + \n The computed environment can be accessed in a composition + using `FromEnvironmentFieldPath` and `CombineFromEnvironment` + patches." items: description: EnvironmentSource selects a EnvironmentConfig resource. properties: ref: - description: |- - Ref is a named reference to a single EnvironmentConfig. + description: Ref is a named reference to a single EnvironmentConfig. Either Ref or Selector is required. properties: name: @@ -121,20 +106,21 @@ spec: description: MatchLabels ensures an object with matching labels is selected. items: - description: |- - An EnvironmentSourceSelectorLabelMatcher acts like a k8s label selector but - can draw the label value from a different path. + description: An EnvironmentSourceSelectorLabelMatcher + acts like a k8s label selector but can draw the + label value from a different path. properties: fromFieldPathPolicy: default: Required - description: |- - FromFieldPathPolicy specifies the policy for the valueFromFieldPath. - The default is Required, meaning that an error will be returned if the - field is not found in the composite resource. - Optional means that if the field is not found in the composite resource, - that label pair will just be skipped. N.B. other specified label - matchers will still be used to retrieve the desired - environment config, if any. + description: FromFieldPathPolicy specifies the + policy for the valueFromFieldPath. The default + is Required, meaning that an error will be returned + if the field is not found in the composite resource. + Optional means that if the field is not found + in the composite resource, that label pair will + just be skipped. N.B. other specified label + matchers will still be used to retrieve the + desired environment config, if any. enum: - Optional - Required @@ -189,9 +175,8 @@ spec: type: object type: default: Reference - description: |- - Type specifies the way the EnvironmentConfig is selected. - Default is `Reference` + description: Type specifies the way the EnvironmentConfig + is selected. Default is `Reference` enum: - Reference - Selector @@ -199,51 +184,47 @@ spec: type: object type: array patches: - description: |- - Patches is a list of environment patches that are executed before a - composition's resources are composed. + description: Patches is a list of environment patches that are + executed before a composition's resources are composed. items: description: EnvironmentPatch is a patch for a Composition environment. properties: combine: - description: |- - Combine is the patch configuration for a CombineFromComposite or - CombineToComposite patch. + description: Combine is the patch configuration for a CombineFromComposite + or CombineToComposite patch. properties: strategy: - description: |- - Strategy defines the strategy to use to combine the input variable values. - Currently only string is supported. + description: Strategy defines the strategy to use to + combine the input variable values. Currently only + string is supported. enum: - string type: string string: - description: |- - String declares that input variables should be combined into a single - string, using the relevant settings for formatting purposes. + description: String declares that input variables should + be combined into a single string, using the relevant + settings for formatting purposes. properties: fmt: - description: |- - Format the input using a Go format string. See - https://golang.org/pkg/fmt/ for details. + description: Format the input using a Go format + string. See https://golang.org/pkg/fmt/ for details. type: string required: - fmt type: object variables: - description: |- - Variables are the list of variables whose values will be retrieved and - combined. + description: Variables are the list of variables whose + values will be retrieved and combined. items: - description: |- - A CombineVariable defines the source of a value that is combined with - others to form and patch an output value. Currently, this only supports - retrieving values from a field path. + description: A CombineVariable defines the source + of a value that is combined with others to form + and patch an output value. Currently, this only + supports retrieving values from a field path. properties: fromFieldPath: - description: |- - FromFieldPath is the path of the field on the source whose value is - to be used as input. + description: FromFieldPath is the path of the + field on the source whose value is to be used + as input. type: string required: - fromFieldPath @@ -255,21 +236,20 @@ spec: - variables type: object fromFieldPath: - description: |- - FromFieldPath is the path of the field on the resource whose value is - to be used as input. Required when type is FromCompositeFieldPath or - ToCompositeFieldPath. + description: FromFieldPath is the path of the field on the + resource whose value is to be used as input. Required + when type is FromCompositeFieldPath or ToCompositeFieldPath. type: string policy: description: Policy configures the specifics of patching behaviour. properties: fromFieldPath: - description: |- - FromFieldPath specifies how to patch from a field path. The default is - 'Optional', which means the patch will be a no-op if the specified - fromFieldPath does not exist. Use 'Required' if the patch should fail if - the specified path does not exist. + description: FromFieldPath specifies how to patch from + a field path. The default is 'Optional', which means + the patch will be a no-op if the specified fromFieldPath + does not exist. Use 'Required' if the patch should + fail if the specified path does not exist. enum: - Optional - Required @@ -289,36 +269,30 @@ spec: type: object type: object toFieldPath: - description: |- - ToFieldPath is the path of the field on the resource whose value will - be changed with the result of transforms. Leave empty if you'd like to - propagate to the same path as fromFieldPath. + description: ToFieldPath is the path of the field on the + resource whose value will be changed with the result of + transforms. Leave empty if you'd like to propagate to + the same path as fromFieldPath. type: string transforms: - description: |- - Transforms are the list of functions that are used as a FIFO pipe for the - input to be transformed. + description: Transforms are the list of functions that are + used as a FIFO pipe for the input to be transformed. items: - description: |- - Transform is a unit of process whose input is transformed into an output with - the supplied configuration. + description: Transform is a unit of process whose input + is transformed into an output with the supplied configuration. properties: convert: description: Convert is used to cast the input into the given output type. properties: format: - description: |- - The expected input format. - - - * `quantity` - parses the input as a K8s [`resource.Quantity`](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity). + description: "The expected input format. \n * + `quantity` - parses the input as a K8s [`resource.Quantity`](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity). Only used during `string -> float64` conversions. * `json` - parses the input as a JSON string. - Only used during `string -> object` or `string -> list` conversions. - - - If this property is null, the default conversion is applied. + Only used during `string -> object` or `string + -> list` conversions. \n If this property is + null, the default conversion is applied." enum: - none - quantity @@ -358,29 +332,27 @@ spec: - Input type: string fallbackValue: - description: |- - The fallback value that should be returned by the transform if now pattern - matches. + description: The fallback value that should be + returned by the transform if now pattern matches. x-kubernetes-preserve-unknown-fields: true patterns: - description: |- - The patterns that should be tested against the input string. - Patterns are tested in order. The value of the first match is used as - result of this transform. + description: The patterns that should be tested + against the input string. Patterns are tested + in order. The value of the first match is used + as result of this transform. items: - description: |- - MatchTransformPattern is a transform that returns the value that matches a - pattern. + description: MatchTransformPattern is a transform + that returns the value that matches a pattern. properties: literal: - description: |- - Literal exactly matches the input string (case sensitive). - Is required if `type` is `literal`. + description: Literal exactly matches the + input string (case sensitive). Is required + if `type` is `literal`. type: string regexp: - description: |- - Regexp to match against the input string. - Is required if `type` is `regexp`. + description: Regexp to match against the + input string. Is required if `type` is + `regexp`. type: string result: description: The value that is used as result @@ -388,17 +360,15 @@ spec: x-kubernetes-preserve-unknown-fields: true type: default: literal - description: |- - Type specifies how the pattern matches the input. - - - * `literal` - the pattern value has to exactly match (case sensitive) the - input string. This is the default. - - - * `regexp` - the pattern treated as a regular expression against - which the input string is tested. Crossplane will throw an error if the - key is not a valid regexp. + description: "Type specifies how the pattern + matches the input. \n * `literal` - the + pattern value has to exactly match (case + sensitive) the input string. This is the + default. \n * `regexp` - the pattern treated + as a regular expression against which + the input string is tested. Crossplane + will throw an error if the key is not + a valid regexp." enum: - literal - regexp @@ -410,9 +380,8 @@ spec: type: array type: object math: - description: |- - Math is used to transform the input via mathematical operations such as - multiplication. + description: Math is used to transform the input via + mathematical operations such as multiplication. properties: clampMax: description: ClampMax makes sure that the value @@ -439,19 +408,22 @@ spec: type: string type: object string: - description: |- - String is used to transform the input into a string or a different kind - of string. Note that the input does not necessarily need to be a string. + description: String is used to transform the input + into a string or a different kind of string. Note + that the input does not necessarily need to be a + string. properties: convert: - description: |- - Optional conversion method to be specified. - `ToUpper` and `ToLower` change the letter case of the input string. - `ToBase64` and `FromBase64` perform a base64 conversion based on the input string. - `ToJson` converts any input value into its raw JSON representation. - `ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input - converted to JSON. - `ToAdler32` generate a addler32 hash based on the input string. + description: Optional conversion method to be + specified. `ToUpper` and `ToLower` change the + letter case of the input string. `ToBase64` + and `FromBase64` perform a base64 conversion + based on the input string. `ToJson` converts + any input value into its raw JSON representation. + `ToSha1`, `ToSha256` and `ToSha512` generate + a hash value based on the input converted to + JSON. `ToAdler32` generate a addler32 hash based + on the input string. enum: - ToUpper - ToLower @@ -464,22 +436,10 @@ spec: - ToAdler32 type: string fmt: - description: |- - Format the input using a Go format string. See - https://golang.org/pkg/fmt/ for details. + description: Format the input using a Go format + string. See https://golang.org/pkg/fmt/ for + details. type: string - join: - description: Join defines parameters to join a - slice of values to a string. - properties: - separator: - description: |- - Separator defines the character that should separate the values from each - other in the joined string. - type: string - required: - - separator - type: object regexp: description: Extract a match from the input using a regular expression. @@ -489,8 +449,8 @@ spec: default) matches the entire expression. type: integer match: - description: |- - Match string. May optionally include submatches, aka capture groups. + description: Match string. May optionally + include submatches, aka capture groups. See https://pkg.go.dev/regexp/ for details. type: string required: @@ -510,7 +470,6 @@ spec: - TrimPrefix - TrimSuffix - Regexp - - Join type: string type: object type: @@ -528,9 +487,9 @@ spec: type: array type: default: FromCompositeFieldPath - description: |- - Type sets the patching behaviour to be used. Each patch type may require - its own fields to be set on the Patch object. + description: Type sets the patching behaviour to be used. + Each patch type may require its own fields to be set on + the Patch object. enum: - FromCompositeFieldPath - ToCompositeFieldPath @@ -540,27 +499,27 @@ spec: type: object type: array policy: - description: |- - Policy represents the Resolve and Resolution policies which apply to - all EnvironmentSourceReferences in EnvironmentConfigs list. + description: Policy represents the Resolve and Resolution policies + which apply to all EnvironmentSourceReferences in EnvironmentConfigs + list. 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. + 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. + 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 @@ -569,38 +528,28 @@ spec: type: object mode: default: Resources - description: |- - Mode controls what type or "mode" of Composition will be used. - - - "Resources" (the default) indicates that a Composition uses what is - commonly referred to as "Patch & Transform" or P&T composition. This mode - of Composition uses an array of resources, each a template for a composed - resource. - - - "Pipeline" indicates that a Composition specifies a pipeline - of Composition Functions, each of which is responsible for producing - composed resources that Crossplane should create or update. THE PIPELINE - MODE IS A BETA FEATURE. It is not honored if the relevant Crossplane - feature flag is disabled. + description: "Mode controls what type or \"mode\" of Composition will + be used. \n \"Resources\" (the default) indicates that a Composition + uses what is commonly referred to as \"Patch & Transform\" or P&T + composition. This mode of Composition uses an array of resources, + each a template for a composed resource. \n \"Pipeline\" indicates + that a Composition specifies a pipeline of Composition Functions, + each of which is responsible for producing composed resources that + Crossplane should create or update. THE PIPELINE MODE IS A BETA + FEATURE. It is not honored if the relevant Crossplane feature flag + is disabled." enum: - Resources - Pipeline type: string patchSets: - description: |- - PatchSets define a named set of patches that may be included by any - resource in this Composition. PatchSets cannot themselves refer to other - PatchSets. - - - PatchSets are only used by the "Resources" mode of Composition. They - are ignored by other modes. + description: "PatchSets define a named set of patches that may be + included by any resource in this Composition. PatchSets cannot themselves + refer to other PatchSets. \n PatchSets are only used by the \"Resources\" + mode of Composition. They are ignored by other modes." items: - description: |- - A PatchSet is a set of patches that can be reused from all resources within - a Composition. + description: A PatchSet is a set of patches that can be reused from + all resources within a Composition. properties: name: description: Name of this PatchSet. @@ -609,51 +558,50 @@ spec: description: Patches will be applied as an overlay to the base resource. items: - description: |- - Patch objects are applied between composite and composed resources. Their - behaviour depends on the Type selected. The default Type, - FromCompositeFieldPath, copies a value from the composite resource to - the composed resource, applying any defined transformers. + description: Patch objects are applied between composite and + composed resources. Their behaviour depends on the Type + selected. The default Type, FromCompositeFieldPath, copies + a value from the composite resource to the composed resource, + applying any defined transformers. properties: combine: - description: |- - Combine is the patch configuration for a CombineFromComposite, - CombineFromEnvironment, CombineToComposite or CombineToEnvironment patch. + description: Combine is the patch configuration for a + CombineFromComposite, CombineFromEnvironment, CombineToComposite + or CombineToEnvironment patch. properties: strategy: - description: |- - Strategy defines the strategy to use to combine the input variable values. - Currently only string is supported. + description: Strategy defines the strategy to use + to combine the input variable values. Currently + only string is supported. enum: - string type: string string: - description: |- - String declares that input variables should be combined into a single - string, using the relevant settings for formatting purposes. + description: String declares that input variables + should be combined into a single string, using the + relevant settings for formatting purposes. properties: fmt: - description: |- - Format the input using a Go format string. See - https://golang.org/pkg/fmt/ for details. + description: Format the input using a Go format + string. See https://golang.org/pkg/fmt/ for + details. type: string required: - fmt type: object variables: - description: |- - Variables are the list of variables whose values will be retrieved and - combined. + description: Variables are the list of variables whose + values will be retrieved and combined. items: - description: |- - A CombineVariable defines the source of a value that is combined with - others to form and patch an output value. Currently, this only supports - retrieving values from a field path. + description: A CombineVariable defines the source + of a value that is combined with others to form + and patch an output value. Currently, this only + supports retrieving values from a field path. properties: fromFieldPath: - description: |- - FromFieldPath is the path of the field on the source whose value is - to be used as input. + description: FromFieldPath is the path of the + field on the source whose value is to be used + as input. type: string required: - fromFieldPath @@ -665,10 +613,10 @@ spec: - variables type: object fromFieldPath: - description: |- - FromFieldPath is the path of the field on the resource whose value is - to be used as input. Required when type is FromCompositeFieldPath, - FromEnvironmentFieldPath, ToCompositeFieldPath, ToEnvironmentFieldPath. + description: FromFieldPath is the path of the field on + the resource whose value is to be used as input. Required + when type is FromCompositeFieldPath, FromEnvironmentFieldPath, + ToCompositeFieldPath, ToEnvironmentFieldPath. type: string patchSetName: description: PatchSetName to include patches from. Required @@ -679,11 +627,12 @@ spec: behaviour. properties: fromFieldPath: - description: |- - FromFieldPath specifies how to patch from a field path. The default is - 'Optional', which means the patch will be a no-op if the specified - fromFieldPath does not exist. Use 'Required' if the patch should fail if - the specified path does not exist. + description: FromFieldPath specifies how to patch + from a field path. The default is 'Optional', which + means the patch will be a no-op if the specified + fromFieldPath does not exist. Use 'Required' if + the patch should fail if the specified path does + not exist. enum: - Optional - Required @@ -703,36 +652,30 @@ spec: type: object type: object toFieldPath: - description: |- - ToFieldPath is the path of the field on the resource whose value will - be changed with the result of transforms. Leave empty if you'd like to - propagate to the same path as fromFieldPath. + description: ToFieldPath is the path of the field on the + resource whose value will be changed with the result + of transforms. Leave empty if you'd like to propagate + to the same path as fromFieldPath. type: string transforms: - description: |- - Transforms are the list of functions that are used as a FIFO pipe for the - input to be transformed. + description: Transforms are the list of functions that + are used as a FIFO pipe for the input to be transformed. items: - description: |- - Transform is a unit of process whose input is transformed into an output with - the supplied configuration. + description: Transform is a unit of process whose input + is transformed into an output with the supplied configuration. properties: convert: description: Convert is used to cast the input into the given output type. properties: format: - description: |- - The expected input format. - - + description: "The expected input format. \n * `quantity` - parses the input as a K8s [`resource.Quantity`](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity). Only used during `string -> float64` conversions. * `json` - parses the input as a JSON string. - Only used during `string -> object` or `string -> list` conversions. - - - If this property is null, the default conversion is applied. + Only used during `string -> object` or `string + -> list` conversions. \n If this property + is null, the default conversion is applied." enum: - none - quantity @@ -772,29 +715,28 @@ spec: - Input type: string fallbackValue: - description: |- - The fallback value that should be returned by the transform if now pattern + description: The fallback value that should + be returned by the transform if now pattern matches. x-kubernetes-preserve-unknown-fields: true patterns: - description: |- - The patterns that should be tested against the input string. - Patterns are tested in order. The value of the first match is used as - result of this transform. + description: The patterns that should be tested + against the input string. Patterns are tested + in order. The value of the first match is + used as result of this transform. items: - description: |- - MatchTransformPattern is a transform that returns the value that matches a - pattern. + description: MatchTransformPattern is a transform + that returns the value that matches a pattern. properties: literal: - description: |- - Literal exactly matches the input string (case sensitive). - Is required if `type` is `literal`. + description: Literal exactly matches the + input string (case sensitive). Is required + if `type` is `literal`. type: string regexp: - description: |- - Regexp to match against the input string. - Is required if `type` is `regexp`. + description: Regexp to match against the + input string. Is required if `type` + is `regexp`. type: string result: description: The value that is used as @@ -803,17 +745,15 @@ spec: x-kubernetes-preserve-unknown-fields: true type: default: literal - description: |- - Type specifies how the pattern matches the input. - - - * `literal` - the pattern value has to exactly match (case sensitive) the - input string. This is the default. - - - * `regexp` - the pattern treated as a regular expression against - which the input string is tested. Crossplane will throw an error if the - key is not a valid regexp. + description: "Type specifies how the pattern + matches the input. \n * `literal` - + the pattern value has to exactly match + (case sensitive) the input string. This + is the default. \n * `regexp` - the + pattern treated as a regular expression + against which the input string is tested. + Crossplane will throw an error if the + key is not a valid regexp." enum: - literal - regexp @@ -825,9 +765,8 @@ spec: type: array type: object math: - description: |- - Math is used to transform the input via mathematical operations such as - multiplication. + description: Math is used to transform the input + via mathematical operations such as multiplication. properties: clampMax: description: ClampMax makes sure that the value @@ -854,19 +793,22 @@ spec: type: string type: object string: - description: |- - String is used to transform the input into a string or a different kind - of string. Note that the input does not necessarily need to be a string. + description: String is used to transform the input + into a string or a different kind of string. Note + that the input does not necessarily need to be + a string. properties: convert: - description: |- - Optional conversion method to be specified. - `ToUpper` and `ToLower` change the letter case of the input string. - `ToBase64` and `FromBase64` perform a base64 conversion based on the input string. - `ToJson` converts any input value into its raw JSON representation. - `ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input - converted to JSON. - `ToAdler32` generate a addler32 hash based on the input string. + description: Optional conversion method to be + specified. `ToUpper` and `ToLower` change + the letter case of the input string. `ToBase64` + and `FromBase64` perform a base64 conversion + based on the input string. `ToJson` converts + any input value into its raw JSON representation. + `ToSha1`, `ToSha256` and `ToSha512` generate + a hash value based on the input converted + to JSON. `ToAdler32` generate a addler32 hash + based on the input string. enum: - ToUpper - ToLower @@ -879,22 +821,10 @@ spec: - ToAdler32 type: string fmt: - description: |- - Format the input using a Go format string. See - https://golang.org/pkg/fmt/ for details. + description: Format the input using a Go format + string. See https://golang.org/pkg/fmt/ for + details. type: string - join: - description: Join defines parameters to join - a slice of values to a string. - properties: - separator: - description: |- - Separator defines the character that should separate the values from each - other in the joined string. - type: string - required: - - separator - type: object regexp: description: Extract a match from the input using a regular expression. @@ -904,8 +834,8 @@ spec: default) matches the entire expression. type: integer match: - description: |- - Match string. May optionally include submatches, aka capture groups. + description: Match string. May optionally + include submatches, aka capture groups. See https://pkg.go.dev/regexp/ for details. type: string required: @@ -925,7 +855,6 @@ spec: - TrimPrefix - TrimSuffix - Regexp - - Join type: string type: object type: @@ -943,9 +872,9 @@ spec: type: array type: default: FromCompositeFieldPath - description: |- - Type sets the patching behaviour to be used. Each patch type may require - its own fields to be set on the Patch object. + description: Type sets the patching behaviour to be used. + Each patch type may require its own fields to be set + on the Patch object. enum: - FromCompositeFieldPath - FromEnvironmentFieldPath @@ -965,25 +894,19 @@ spec: type: object type: array pipeline: - description: |- - Pipeline is a list of composition function steps that will be used when a - composite resource referring to this composition is created. One of - resources and pipeline must be specified - you cannot specify both. - - - The Pipeline is only used by the "Pipeline" mode of Composition. It is - ignored by other modes. - - - THIS IS A BETA FIELD. It is not honored if the relevant Crossplane - feature flag is disabled. + description: "Pipeline is a list of composition function steps that + will be used when a composite resource referring to this composition + is created. One of resources and pipeline must be specified - you + cannot specify both. \n The Pipeline is only used by the \"Pipeline\" + mode of Composition. It is ignored by other modes. \n THIS IS A + BETA FIELD. It is not honored if the relevant Crossplane feature + flag is disabled." items: description: A PipelineStep in a Composition Function pipeline. properties: functionRef: - description: |- - FunctionRef is a reference to the Composition Function this step should - execute. + description: FunctionRef is a reference to the Composition Function + this step should execute. properties: name: description: Name of the referenced Function. @@ -992,10 +915,9 @@ spec: - name type: object input: - description: |- - Input is an optional, arbitrary Kubernetes resource (i.e. a resource - with an apiVersion and kind) that will be passed to the Composition - Function as the 'input' of its RunFunctionRequest. + description: Input is an optional, arbitrary Kubernetes resource + (i.e. a resource with an apiVersion and kind) that will be + passed to the Composition Function as the 'input' of its RunFunctionRequest. type: object x-kubernetes-embedded-resource: true x-kubernetes-preserve-unknown-fields: true @@ -1010,15 +932,12 @@ spec: publishConnectionDetailsWithStoreConfigRef: default: name: default - description: |- - PublishConnectionDetailsWithStoreConfig specifies the secret store config - with which the connection details of composite resources dynamically - provisioned using this composition will be published. - - - THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored - unless the relevant Crossplane feature flag is enabled, and may be - changed or removed without notice. + description: "PublishConnectionDetailsWithStoreConfig specifies the + secret store config with which the connection details of composite + resources dynamically provisioned using this composition will be + published. \n THIS IS AN ALPHA FIELD. Do not use it in production. + It is not honored unless the relevant Crossplane feature flag is + enabled, and may be changed or removed without notice." properties: name: description: Name of the referenced StoreConfig. @@ -1027,17 +946,13 @@ spec: - name type: object resources: - description: |- - Resources is a list of resource templates that will be used when a - composite resource referring to this composition is created. - - - Resources are only used by the "Resources" mode of Composition. They are - ignored by other modes. + description: "Resources is a list of resource templates that will + be used when a composite resource referring to this composition + is created. \n Resources are only used by the \"Resources\" mode + of Composition. They are ignored by other modes." items: - description: |- - ComposedTemplate is used to provide information about how the composed resource - should be processed. + description: ComposedTemplate is used to provide information about + how the composed resource should be processed. properties: base: description: Base is the target resource that the patches will @@ -1046,112 +961,108 @@ spec: x-kubernetes-embedded-resource: true x-kubernetes-preserve-unknown-fields: true connectionDetails: - description: |- - ConnectionDetails lists the propagation secret keys from this target - resource to the composition instance connection secret. + description: ConnectionDetails lists the propagation secret + keys from this target resource to the composition instance + connection secret. items: - description: |- - ConnectionDetail includes the information about the propagation of the connection - information from one secret to another. + description: ConnectionDetail includes the information about + the propagation of the connection information from one secret + to another. properties: fromConnectionSecretKey: - description: |- - FromConnectionSecretKey is the key that will be used to fetch the value - from the composed resource's connection secret. + description: FromConnectionSecretKey is the key that will + be used to fetch the value from the composed resource's + connection secret. type: string fromFieldPath: - description: |- - FromFieldPath is the path of the field on the composed resource whose - value to be used as input. Name must be specified if the type is - FromFieldPath. + description: FromFieldPath is the path of the field on + the composed resource whose value to be used as input. + Name must be specified if the type is FromFieldPath. type: string name: - description: |- - Name of the connection secret key that will be propagated to the - connection secret of the composition instance. Leave empty if you'd like - to use the same key name. + description: Name of the connection secret key that will + be propagated to the connection secret of the composition + instance. Leave empty if you'd like to use the same + key name. type: string type: - description: |- - Type sets the connection detail fetching behaviour to be used. Each - connection detail type may require its own fields to be set on the - ConnectionDetail object. If the type is omitted Crossplane will attempt - to infer it based on which other fields were specified. If multiple - fields are specified the order of precedence is: - 1. FromValue - 2. FromConnectionSecretKey - 3. FromFieldPath + description: 'Type sets the connection detail fetching + behaviour to be used. Each connection detail type may + require its own fields to be set on the ConnectionDetail + object. If the type is omitted Crossplane will attempt + to infer it based on which other fields were specified. + If multiple fields are specified the order of precedence + is: 1. FromValue 2. FromConnectionSecretKey 3. FromFieldPath' enum: - FromConnectionSecretKey - FromFieldPath - FromValue type: string value: - description: |- - Value that will be propagated to the connection secret of the composite - resource. May be set to inject a fixed, non-sensitive connection secret - value, for example a well-known port. + description: Value that will be propagated to the connection + secret of the composite resource. May be set to inject + a fixed, non-sensitive connection secret value, for + example a well-known port. type: string type: object type: array name: - description: |- - A Name uniquely identifies this entry within its Composition's resources - array. Names are optional but *strongly* recommended. When all entries in - the resources array are named entries may added, deleted, and reordered - as long as their names do not change. When entries are not named the - length and order of the resources array should be treated as immutable. + description: A Name uniquely identifies this entry within its + Composition's resources array. Names are optional but *strongly* + recommended. When all entries in the resources array are named + entries may added, deleted, and reordered as long as their + names do not change. When entries are not named the length + and order of the resources array should be treated as immutable. Either all or no entries must be named. type: string patches: description: Patches will be applied as overlay to the base resource. items: - description: |- - Patch objects are applied between composite and composed resources. Their - behaviour depends on the Type selected. The default Type, - FromCompositeFieldPath, copies a value from the composite resource to - the composed resource, applying any defined transformers. + description: Patch objects are applied between composite and + composed resources. Their behaviour depends on the Type + selected. The default Type, FromCompositeFieldPath, copies + a value from the composite resource to the composed resource, + applying any defined transformers. properties: combine: - description: |- - Combine is the patch configuration for a CombineFromComposite, - CombineFromEnvironment, CombineToComposite or CombineToEnvironment patch. + description: Combine is the patch configuration for a + CombineFromComposite, CombineFromEnvironment, CombineToComposite + or CombineToEnvironment patch. properties: strategy: - description: |- - Strategy defines the strategy to use to combine the input variable values. - Currently only string is supported. + description: Strategy defines the strategy to use + to combine the input variable values. Currently + only string is supported. enum: - string type: string string: - description: |- - String declares that input variables should be combined into a single - string, using the relevant settings for formatting purposes. + description: String declares that input variables + should be combined into a single string, using the + relevant settings for formatting purposes. properties: fmt: - description: |- - Format the input using a Go format string. See - https://golang.org/pkg/fmt/ for details. + description: Format the input using a Go format + string. See https://golang.org/pkg/fmt/ for + details. type: string required: - fmt type: object variables: - description: |- - Variables are the list of variables whose values will be retrieved and - combined. + description: Variables are the list of variables whose + values will be retrieved and combined. items: - description: |- - A CombineVariable defines the source of a value that is combined with - others to form and patch an output value. Currently, this only supports - retrieving values from a field path. + description: A CombineVariable defines the source + of a value that is combined with others to form + and patch an output value. Currently, this only + supports retrieving values from a field path. properties: fromFieldPath: - description: |- - FromFieldPath is the path of the field on the source whose value is - to be used as input. + description: FromFieldPath is the path of the + field on the source whose value is to be used + as input. type: string required: - fromFieldPath @@ -1163,10 +1074,10 @@ spec: - variables type: object fromFieldPath: - description: |- - FromFieldPath is the path of the field on the resource whose value is - to be used as input. Required when type is FromCompositeFieldPath, - FromEnvironmentFieldPath, ToCompositeFieldPath, ToEnvironmentFieldPath. + description: FromFieldPath is the path of the field on + the resource whose value is to be used as input. Required + when type is FromCompositeFieldPath, FromEnvironmentFieldPath, + ToCompositeFieldPath, ToEnvironmentFieldPath. type: string patchSetName: description: PatchSetName to include patches from. Required @@ -1177,11 +1088,12 @@ spec: behaviour. properties: fromFieldPath: - description: |- - FromFieldPath specifies how to patch from a field path. The default is - 'Optional', which means the patch will be a no-op if the specified - fromFieldPath does not exist. Use 'Required' if the patch should fail if - the specified path does not exist. + description: FromFieldPath specifies how to patch + from a field path. The default is 'Optional', which + means the patch will be a no-op if the specified + fromFieldPath does not exist. Use 'Required' if + the patch should fail if the specified path does + not exist. enum: - Optional - Required @@ -1201,36 +1113,30 @@ spec: type: object type: object toFieldPath: - description: |- - ToFieldPath is the path of the field on the resource whose value will - be changed with the result of transforms. Leave empty if you'd like to - propagate to the same path as fromFieldPath. + description: ToFieldPath is the path of the field on the + resource whose value will be changed with the result + of transforms. Leave empty if you'd like to propagate + to the same path as fromFieldPath. type: string transforms: - description: |- - Transforms are the list of functions that are used as a FIFO pipe for the - input to be transformed. + description: Transforms are the list of functions that + are used as a FIFO pipe for the input to be transformed. items: - description: |- - Transform is a unit of process whose input is transformed into an output with - the supplied configuration. + description: Transform is a unit of process whose input + is transformed into an output with the supplied configuration. properties: convert: description: Convert is used to cast the input into the given output type. properties: format: - description: |- - The expected input format. - - + description: "The expected input format. \n * `quantity` - parses the input as a K8s [`resource.Quantity`](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity). Only used during `string -> float64` conversions. * `json` - parses the input as a JSON string. - Only used during `string -> object` or `string -> list` conversions. - - - If this property is null, the default conversion is applied. + Only used during `string -> object` or `string + -> list` conversions. \n If this property + is null, the default conversion is applied." enum: - none - quantity @@ -1270,29 +1176,28 @@ spec: - Input type: string fallbackValue: - description: |- - The fallback value that should be returned by the transform if now pattern + description: The fallback value that should + be returned by the transform if now pattern matches. x-kubernetes-preserve-unknown-fields: true patterns: - description: |- - The patterns that should be tested against the input string. - Patterns are tested in order. The value of the first match is used as - result of this transform. + description: The patterns that should be tested + against the input string. Patterns are tested + in order. The value of the first match is + used as result of this transform. items: - description: |- - MatchTransformPattern is a transform that returns the value that matches a - pattern. + description: MatchTransformPattern is a transform + that returns the value that matches a pattern. properties: literal: - description: |- - Literal exactly matches the input string (case sensitive). - Is required if `type` is `literal`. + description: Literal exactly matches the + input string (case sensitive). Is required + if `type` is `literal`. type: string regexp: - description: |- - Regexp to match against the input string. - Is required if `type` is `regexp`. + description: Regexp to match against the + input string. Is required if `type` + is `regexp`. type: string result: description: The value that is used as @@ -1301,17 +1206,15 @@ spec: x-kubernetes-preserve-unknown-fields: true type: default: literal - description: |- - Type specifies how the pattern matches the input. - - - * `literal` - the pattern value has to exactly match (case sensitive) the - input string. This is the default. - - - * `regexp` - the pattern treated as a regular expression against - which the input string is tested. Crossplane will throw an error if the - key is not a valid regexp. + description: "Type specifies how the pattern + matches the input. \n * `literal` - + the pattern value has to exactly match + (case sensitive) the input string. This + is the default. \n * `regexp` - the + pattern treated as a regular expression + against which the input string is tested. + Crossplane will throw an error if the + key is not a valid regexp." enum: - literal - regexp @@ -1323,9 +1226,8 @@ spec: type: array type: object math: - description: |- - Math is used to transform the input via mathematical operations such as - multiplication. + description: Math is used to transform the input + via mathematical operations such as multiplication. properties: clampMax: description: ClampMax makes sure that the value @@ -1352,19 +1254,22 @@ spec: type: string type: object string: - description: |- - String is used to transform the input into a string or a different kind - of string. Note that the input does not necessarily need to be a string. + description: String is used to transform the input + into a string or a different kind of string. Note + that the input does not necessarily need to be + a string. properties: convert: - description: |- - Optional conversion method to be specified. - `ToUpper` and `ToLower` change the letter case of the input string. - `ToBase64` and `FromBase64` perform a base64 conversion based on the input string. - `ToJson` converts any input value into its raw JSON representation. - `ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input - converted to JSON. - `ToAdler32` generate a addler32 hash based on the input string. + description: Optional conversion method to be + specified. `ToUpper` and `ToLower` change + the letter case of the input string. `ToBase64` + and `FromBase64` perform a base64 conversion + based on the input string. `ToJson` converts + any input value into its raw JSON representation. + `ToSha1`, `ToSha256` and `ToSha512` generate + a hash value based on the input converted + to JSON. `ToAdler32` generate a addler32 hash + based on the input string. enum: - ToUpper - ToLower @@ -1377,22 +1282,10 @@ spec: - ToAdler32 type: string fmt: - description: |- - Format the input using a Go format string. See - https://golang.org/pkg/fmt/ for details. + description: Format the input using a Go format + string. See https://golang.org/pkg/fmt/ for + details. type: string - join: - description: Join defines parameters to join - a slice of values to a string. - properties: - separator: - description: |- - Separator defines the character that should separate the values from each - other in the joined string. - type: string - required: - - separator - type: object regexp: description: Extract a match from the input using a regular expression. @@ -1402,8 +1295,8 @@ spec: default) matches the entire expression. type: integer match: - description: |- - Match string. May optionally include submatches, aka capture groups. + description: Match string. May optionally + include submatches, aka capture groups. See https://pkg.go.dev/regexp/ for details. type: string required: @@ -1423,7 +1316,6 @@ spec: - TrimPrefix - TrimSuffix - Regexp - - Join type: string type: object type: @@ -1441,9 +1333,9 @@ spec: type: array type: default: FromCompositeFieldPath - description: |- - Type sets the patching behaviour to be used. Each patch type may require - its own fields to be set on the Patch object. + description: Type sets the patching behaviour to be used. + Each patch type may require its own fields to be set + on the Patch object. enum: - FromCompositeFieldPath - FromEnvironmentFieldPath @@ -1463,14 +1355,13 @@ spec: status: "True" type: Ready type: MatchCondition - description: |- - ReadinessChecks allows users to define custom readiness checks. All checks - have to return true in order for resource to be considered ready. The - default readiness check is to have the "Ready" condition to be "True". + description: ReadinessChecks allows users to define custom readiness + checks. All checks have to return true in order for resource + to be considered ready. The default readiness check is to + have the "Ready" condition to be "True". items: - description: |- - ReadinessCheck is used to indicate how to tell whether a resource is ready - for consumption + description: ReadinessCheck is used to indicate how to tell + whether a resource is ready for consumption properties: fieldPath: description: FieldPath shows the path of the field whose @@ -1524,15 +1415,13 @@ spec: type: object type: array writeConnectionSecretsToNamespace: - description: |- - WriteConnectionSecretsToNamespace specifies the namespace in which the - connection secrets of composite resource dynamically provisioned using - this composition will be created. - This field is planned to be replaced in a future release in favor of - PublishConnectionDetailsWithStoreConfigRef. Currently, both could be - set independently and connection details would be published to both - without affecting each other as long as related fields at MR level - specified. + description: WriteConnectionSecretsToNamespace specifies the namespace + in which the connection secrets of composite resource dynamically + provisioned using this composition will be created. This field is + planned to be replaced in a future release in favor of PublishConnectionDetailsWithStoreConfigRef. + Currently, both could be set independently and connection details + would be published to both without affecting each other as long + as related fields at MR level specified. type: string required: - compositeTypeRef diff --git a/crossplane-crd-model/src/main/resources/kubernetes/apiextensions.crossplane.io_environmentconfigs.yaml b/crossplane-crd-model/src/main/resources/kubernetes/apiextensions.crossplane.io_environmentconfigs.yaml index 9a703e2..5cbd61a 100644 --- a/crossplane-crd-model/src/main/resources/kubernetes/apiextensions.crossplane.io_environmentconfigs.yaml +++ b/crossplane-crd-model/src/main/resources/kubernetes/apiextensions.crossplane.io_environmentconfigs.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.14.0 + controller-gen.kubebuilder.io/version: v0.13.0 name: environmentconfigs.apiextensions.crossplane.io spec: group: apiextensions.crossplane.io @@ -28,26 +28,20 @@ spec: values. 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 + 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 data: additionalProperties: x-kubernetes-preserve-unknown-fields: true - description: |- - The data of this EnvironmentConfig. - This may contain any kind of structure that can be serialized into JSON. + description: The data of this EnvironmentConfig. This may contain any + kind of structure that can be serialized into JSON. type: object 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 + 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 diff --git a/crossplane-crd-model/src/main/resources/kubernetes/apiextensions.crossplane.io_usages.yaml b/crossplane-crd-model/src/main/resources/kubernetes/apiextensions.crossplane.io_usages.yaml index e05a9b4..70a2215 100644 --- a/crossplane-crd-model/src/main/resources/kubernetes/apiextensions.crossplane.io_usages.yaml +++ b/crossplane-crd-model/src/main/resources/kubernetes/apiextensions.crossplane.io_usages.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.14.0 + controller-gen.kubebuilder.io/version: v0.13.0 name: usages.apiextensions.crossplane.io spec: group: apiextensions.crossplane.io @@ -32,19 +32,14 @@ spec: resources. 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 + 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 + 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 @@ -58,9 +53,7 @@ spec: description: API version of the referent. type: string kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string resourceRef: description: Reference to the resource. @@ -72,14 +65,12 @@ spec: - name type: object resourceSelector: - description: |- - Selector to the resource. - This field will be ignored if ResourceRef is set. + description: Selector to the resource. This field will be ignored + if ResourceRef is set. properties: matchControllerRef: - description: |- - MatchControllerRef ensures an object with the same controller reference - as the selecting object is selected. + description: MatchControllerRef ensures an object with the + same controller reference as the selecting object is selected. type: boolean matchLabels: additionalProperties: @@ -100,9 +91,7 @@ spec: description: API version of the referent. type: string kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string resourceRef: description: Reference to the resource. @@ -114,14 +103,12 @@ spec: - name type: object resourceSelector: - description: |- - Selector to the resource. - This field will be ignored if ResourceRef is set. + description: Selector to the resource. This field will be ignored + if ResourceRef is set. properties: matchControllerRef: - description: |- - MatchControllerRef ensures an object with the same controller reference - as the selecting object is selected. + description: MatchControllerRef ensures an object with the + same controller reference as the selecting object is selected. type: boolean matchLabels: additionalProperties: @@ -158,15 +145,13 @@ spec: 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. + 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. + 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 @@ -177,9 +162,8 @@ spec: 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. + 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 diff --git a/crossplane-crd-model/src/main/resources/kubernetes/fetch.sh b/crossplane-crd-model/src/main/resources/kubernetes/fetch.sh index 0c3588a..16352d4 100755 --- a/crossplane-crd-model/src/main/resources/kubernetes/fetch.sh +++ b/crossplane-crd-model/src/main/resources/kubernetes/fetch.sh @@ -1,6 +1,6 @@ #!/bin/bash -release="release-1.16" +release="release-1.14" apiextensions=$(gh api --jq '.[].name' "/repos/crossplane/crossplane/contents/cluster/crds?ref=${release}" | grep apiextensions) diff --git a/crossplane-function-base/src/main/java/io/crossplane/compositefunctions/CrossplaneFunctionRequest.java b/crossplane-function-base/src/main/java/io/crossplane/compositefunctions/CrossplaneFunctionRequest.java deleted file mode 100644 index 48b184c..0000000 --- a/crossplane-function-base/src/main/java/io/crossplane/compositefunctions/CrossplaneFunctionRequest.java +++ /dev/null @@ -1,18 +0,0 @@ -package io.crossplane.compositefunctions; - -import io.crossplane.compositefunctions.protobuf.Credentials; -import io.crossplane.compositefunctions.protobuf.Resources; -import io.crossplane.compositefunctions.protobuf.State; - -import java.util.Map; - -/** - * Holder for the request from crossplane - * @param observedState The observedstate of the crossplane resources - * @param extraResourcesMap A map of any extra resources requested - * @param credentialsMap A map of credentials sent as input - */ -public record CrossplaneFunctionRequest(State observedState, - Map extraResourcesMap, - Map credentialsMap) { -} diff --git a/crossplane-function-base/src/main/java/io/crossplane/compositefunctions/CrossplaneCompositeFunctionBase.java b/crossplane-function-base/src/main/java/io/crossplane/compositefunctions/base/CrossplaneCompositeFunctionBase.java similarity index 65% rename from crossplane-function-base/src/main/java/io/crossplane/compositefunctions/CrossplaneCompositeFunctionBase.java rename to crossplane-function-base/src/main/java/io/crossplane/compositefunctions/base/CrossplaneCompositeFunctionBase.java index cddf20b..4511573 100644 --- a/crossplane-function-base/src/main/java/io/crossplane/compositefunctions/CrossplaneCompositeFunctionBase.java +++ b/crossplane-function-base/src/main/java/io/crossplane/compositefunctions/base/CrossplaneCompositeFunctionBase.java @@ -1,6 +1,10 @@ -package io.crossplane.compositefunctions; +package io.crossplane.compositefunctions.base; -import io.crossplane.compositefunctions.protobuf.*; + +import io.crossplane.compositefunctions.protobuf.FunctionRunnerServiceGrpc; +import io.crossplane.compositefunctions.protobuf.RunFunctionRequest; +import io.crossplane.compositefunctions.protobuf.RunFunctionResponse; +import io.crossplane.compositefunctions.protobuf.State; import io.grpc.stub.StreamObserver; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -25,11 +29,12 @@ public abstract class CrossplaneCompositeFunctionBase extends FunctionRunnerServ State desired = request.getDesired(); // Copy existing state into new desired state - // Should these be sent to the function? Probably? desiredBuilder.putAllResources(desired.getResourcesMap()); CrossplaneFunctionRequest crossplaneFunctionRequest = new CrossplaneFunctionRequest(request.getObserved(), - request.getExtraResourcesMap(), request.getCredentialsMap()); + request.getDesired()); + + // request.getExtraResourcesMap(), request.getCredentialsMap() logger.debug("Calling method with implemented logic"); CrossplaneFunctionResponse crossplaneFunctionResponse = runFunction(crossplaneFunctionRequest); @@ -39,15 +44,26 @@ public abstract class CrossplaneCompositeFunctionBase extends FunctionRunnerServ desiredBuilder.putResources(entry.getKey(), CrossplaneObjectToProtobufConverter.convertToResource(entry.getValue())); } - Requirements requirements = Requirements.newBuilder() - .putAllExtraResources(crossplaneFunctionResponse.resourceSelectors()) - .build(); + RunFunctionResponse.Builder responseBuilder = RunFunctionResponse.newBuilder(); - RunFunctionResponse runFunctionResponse = RunFunctionResponse - .newBuilder() - .setRequirements(requirements) - .addAllResults(crossplaneFunctionResponse.results()) - .setDesired(desiredBuilder.build()) + /* + if (! crossplaneFunctionResponse.resourceSelectors().isEmpty()) { + Requirements requirements = Requirements.newBuilder() + .putAllExtraResources(crossplaneFunctionResponse.resourceSelectors()) + .build(); + responseBuilder.setRequirements(requirements); + } + */ + + if (! crossplaneFunctionResponse.results().isEmpty()) { + responseBuilder.addAllResults(crossplaneFunctionResponse.results()); + } + + if (desiredBuilder.getResourcesCount() > 0) { + responseBuilder.setDesired(desiredBuilder.build()); + } + + RunFunctionResponse runFunctionResponse = responseBuilder .build(); responseObserver.onNext(runFunctionResponse); diff --git a/crossplane-function-base/src/main/java/io/crossplane/compositefunctions/base/CrossplaneFunctionRequest.java b/crossplane-function-base/src/main/java/io/crossplane/compositefunctions/base/CrossplaneFunctionRequest.java new file mode 100644 index 0000000..862776c --- /dev/null +++ b/crossplane-function-base/src/main/java/io/crossplane/compositefunctions/base/CrossplaneFunctionRequest.java @@ -0,0 +1,18 @@ +package io.crossplane.compositefunctions.base; + +import io.crossplane.compositefunctions.protobuf.State; + +import java.util.Map; + +/** + * Holder for the request from crossplane + * @param observedState The observedstate of the crossplane resources + * @param desiredState The sum of previously called functions state. To override, create a new resource with the same name in the response + */ +public record CrossplaneFunctionRequest(State observedState, State desiredState) { + + // * @param extraResourcesMap A map of any extra resources requested + // * @param credentialsMap A map of credentials sent as input + // Map extraResourcesMap, + // Map credentialsMap +} diff --git a/crossplane-function-base/src/main/java/io/crossplane/compositefunctions/CrossplaneFunctionResponse.java b/crossplane-function-base/src/main/java/io/crossplane/compositefunctions/base/CrossplaneFunctionResponse.java similarity index 62% rename from crossplane-function-base/src/main/java/io/crossplane/compositefunctions/CrossplaneFunctionResponse.java rename to crossplane-function-base/src/main/java/io/crossplane/compositefunctions/base/CrossplaneFunctionResponse.java index beb2478..29735ba 100644 --- a/crossplane-function-base/src/main/java/io/crossplane/compositefunctions/CrossplaneFunctionResponse.java +++ b/crossplane-function-base/src/main/java/io/crossplane/compositefunctions/base/CrossplaneFunctionResponse.java @@ -1,6 +1,5 @@ -package io.crossplane.compositefunctions; +package io.crossplane.compositefunctions.base; -import io.crossplane.compositefunctions.protobuf.ResourceSelector; import io.crossplane.compositefunctions.protobuf.Result; import java.util.ArrayList; @@ -11,18 +10,19 @@ import java.util.Map; /** * Holder for the response to Crossplane * @param desiredResources Map of the desired resources - * @param resourceSelectors Map of the resource selectors for any extra resources * @param results List of the results */ public record CrossplaneFunctionResponse(Map desiredResources, - Map resourceSelectors, List results) { + // @param resourceSelectors Map of the resource selectors for any extra resources + // Map resourceSelectors, + /** * Create an empty response with all fields initiated */ public CrossplaneFunctionResponse() { - this(new HashMap<>(), new HashMap<>(), new ArrayList<>()); + this(new HashMap<>(), new ArrayList<>()); } } diff --git a/crossplane-function-base/src/main/java/io/crossplane/compositefunctions/CrossplaneObjectToProtobufConverter.java b/crossplane-function-base/src/main/java/io/crossplane/compositefunctions/base/CrossplaneObjectToProtobufConverter.java similarity index 97% rename from crossplane-function-base/src/main/java/io/crossplane/compositefunctions/CrossplaneObjectToProtobufConverter.java rename to crossplane-function-base/src/main/java/io/crossplane/compositefunctions/base/CrossplaneObjectToProtobufConverter.java index e937774..b279562 100644 --- a/crossplane-function-base/src/main/java/io/crossplane/compositefunctions/CrossplaneObjectToProtobufConverter.java +++ b/crossplane-function-base/src/main/java/io/crossplane/compositefunctions/base/CrossplaneObjectToProtobufConverter.java @@ -1,4 +1,4 @@ -package io.crossplane.compositefunctions; +package io.crossplane.compositefunctions.base; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.protobuf.Struct; diff --git a/crossplane-function-example/pom.xml b/crossplane-function-example/pom.xml new file mode 100644 index 0000000..35d0974 --- /dev/null +++ b/crossplane-function-example/pom.xml @@ -0,0 +1,41 @@ + + + 4.0.0 + + + io.crossplane.compositefunctions + crossplane-parent + ${revision} + + + crossplane-function-example + Crossplane example implementation of a function + + + + + io.crossplane.compositefunctions + crossplane-function-springboot-starter + + + org.slf4j + slf4j-api + + + com.fasterxml.jackson.core + jackson-databind + + + org.springframework.boot + spring-boot-autoconfigure + + + org.bouncycastle + bcpkix-jdk18on + + + + + + \ No newline at end of file diff --git a/crossplane-function-example/src/main/java/io/crossplane/compositefunctions/example/ExampleFunctionApplication.java b/crossplane-function-example/src/main/java/io/crossplane/compositefunctions/example/ExampleFunctionApplication.java new file mode 100644 index 0000000..f3d7cc7 --- /dev/null +++ b/crossplane-function-example/src/main/java/io/crossplane/compositefunctions/example/ExampleFunctionApplication.java @@ -0,0 +1,17 @@ +package io.crossplane.compositefunctions.example; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +import java.security.Security; + +@SpringBootApplication +public class ExampleFunctionApplication { + + public static void main(String[] args) { + // The bouncycastle provider is needed for the autogenerated certificates that crossplane generates to work + Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); + SpringApplication.run(ExampleFunctionApplication.class, args); + + } +} diff --git a/crossplane-function-example/src/main/java/io/crossplane/compositefunctions/example/model/XBuckets.java b/crossplane-function-example/src/main/java/io/crossplane/compositefunctions/example/model/XBuckets.java new file mode 100644 index 0000000..c3f87d0 --- /dev/null +++ b/crossplane-function-example/src/main/java/io/crossplane/compositefunctions/example/model/XBuckets.java @@ -0,0 +1,17 @@ +package io.crossplane.compositefunctions.example.model; + +import io.fabric8.kubernetes.client.CustomResource; +import io.fabric8.kubernetes.model.annotation.Group; +import io.fabric8.kubernetes.model.annotation.Plural; +import io.fabric8.kubernetes.model.annotation.Singular; +import io.fabric8.kubernetes.model.annotation.Version; + +@Version(value = "v1", storage = true, served = true) +@Group("example.crossplane.io") +@Singular("XBuckets") +@Plural("XBucketsList") +public class XBuckets extends CustomResource { + + + +} diff --git a/crossplane-function-example/src/main/java/io/crossplane/compositefunctions/example/model/XBucketsSpec.java b/crossplane-function-example/src/main/java/io/crossplane/compositefunctions/example/model/XBucketsSpec.java new file mode 100644 index 0000000..8c5217b --- /dev/null +++ b/crossplane-function-example/src/main/java/io/crossplane/compositefunctions/example/model/XBucketsSpec.java @@ -0,0 +1,28 @@ +package io.crossplane.compositefunctions.example.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +import java.util.List; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class XBucketsSpec { + + private String region; + private List names; + + public String getRegion() { + return region; + } + + public void setRegion(String region) { + this.region = region; + } + + public List getNames() { + return names; + } + + public void setNames(List names) { + this.names = names; + } +} diff --git a/crossplane-function-example/src/main/java/io/crossplane/compositefunctions/example/resource/ExampleFunctionResource.java b/crossplane-function-example/src/main/java/io/crossplane/compositefunctions/example/resource/ExampleFunctionResource.java new file mode 100644 index 0000000..96597ca --- /dev/null +++ b/crossplane-function-example/src/main/java/io/crossplane/compositefunctions/example/resource/ExampleFunctionResource.java @@ -0,0 +1,33 @@ +package io.crossplane.compositefunctions.example.resource; + +import io.crossplane.compositefunctions.base.CrossplaneCompositeFunctionBase; +import io.crossplane.compositefunctions.base.CrossplaneFunctionRequest; +import io.crossplane.compositefunctions.base.CrossplaneFunctionResponse; +import io.crossplane.compositefunctions.example.model.XBuckets; +import io.crossplane.compositefunctions.starter.conversion.CrossplaneResourceService; +import net.devh.boot.grpc.server.service.GrpcService; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.Optional; + +@GrpcService +public class ExampleFunctionResource extends CrossplaneCompositeFunctionBase { + + final CrossplaneResourceService crossplaneResourceService; + + @Autowired + public ExampleFunctionResource(CrossplaneResourceService crossplaneResourceService) { + this.crossplaneResourceService = crossplaneResourceService; + } + + + @Override + public CrossplaneFunctionResponse runFunction(CrossplaneFunctionRequest crossplaneFunctionRequest) { + Optional xBuckets = crossplaneResourceService.getResource(crossplaneFunctionRequest.observedState(), XBuckets.class); + + return new CrossplaneFunctionResponse(); + } + + + +} diff --git a/crossplane-function-example/src/main/resources/application-dev.yaml b/crossplane-function-example/src/main/resources/application-dev.yaml new file mode 100644 index 0000000..a60642b --- /dev/null +++ b/crossplane-function-example/src/main/resources/application-dev.yaml @@ -0,0 +1,5 @@ +grpc: + server: + security: + # For local testing we disable the security setting. This enables us to use the crossplane beta render functionality + enabled: false \ No newline at end of file diff --git a/crossplane-function-example/src/main/resources/application-kubernetes.yaml b/crossplane-function-example/src/main/resources/application-kubernetes.yaml new file mode 100644 index 0000000..aa19284 --- /dev/null +++ b/crossplane-function-example/src/main/resources/application-kubernetes.yaml @@ -0,0 +1,13 @@ +grpc: + server: + security: + # When runnin on kubernetes, crossplane expects a TLS endpoint to be presented, and + # injects the pod with the certificate and ca store to use. We just point to the mounted files + # in our config to be compliant. + # See also the ExampleFunctionApplication class, as we need to register bouncycastle as the provider for these + # certificates to work in Java + enabled: true + client-auth: optional + certificate-chain: file:///tls/server/tls.crt + private-key: file:///tls/server/tls.key + trust-cert-collection: file:///tls/server/ca.crt diff --git a/crossplane-function-example/src/main/resources/application.yaml b/crossplane-function-example/src/main/resources/application.yaml new file mode 100644 index 0000000..3dc25b8 --- /dev/null +++ b/crossplane-function-example/src/main/resources/application.yaml @@ -0,0 +1,8 @@ +spring: + profiles: + active: development + + +grpc: + server: + port: 9443 \ No newline at end of file diff --git a/crossplane-function-example/src/test/resources/composition.yaml b/crossplane-function-example/src/test/resources/composition.yaml new file mode 100644 index 0000000..32e90a0 --- /dev/null +++ b/crossplane-function-example/src/test/resources/composition.yaml @@ -0,0 +1,13 @@ +apiVersion: apiextensions.crossplane.io/v1 +kind: Composition +metadata: + name: create-buckets +spec: + compositeTypeRef: + apiVersion: example.crossplane.io/v1 + kind: XBuckets + mode: Pipeline + pipeline: + - step: create-buckets + functionRef: + name: function-example \ No newline at end of file diff --git a/crossplane-function-example/src/test/resources/functions.yaml b/crossplane-function-example/src/test/resources/functions.yaml new file mode 100644 index 0000000..339ec85 --- /dev/null +++ b/crossplane-function-example/src/test/resources/functions.yaml @@ -0,0 +1,6 @@ +apiVersion: pkg.crossplane.io/v1beta1 +kind: Function +metadata: + name: function-example + annotations: + render.crossplane.io/runtime: Development \ No newline at end of file diff --git a/crossplane-function-example/src/test/resources/xr.yaml b/crossplane-function-example/src/test/resources/xr.yaml new file mode 100644 index 0000000..46a8702 --- /dev/null +++ b/crossplane-function-example/src/test/resources/xr.yaml @@ -0,0 +1,10 @@ +apiVersion: example.crossplane.io/v1 +kind: XBuckets +metadata: + name: example-buckets +spec: + region: us-east-2 + names: + - crossplane-functions-example-a + - crossplane-functions-example-b + - crossplane-functions-example-c \ No newline at end of file diff --git a/crossplane-function-springboot-starter/pom.xml b/crossplane-function-springboot-starter/pom.xml new file mode 100644 index 0000000..57bd118 --- /dev/null +++ b/crossplane-function-springboot-starter/pom.xml @@ -0,0 +1,55 @@ + + + 4.0.0 + + io.crossplane.compositefunctions + crossplane-parent + ${revision} + + + crossplane-function-springboot-starter + + + + + io.crossplane.compositefunctions + crossplane-function-base + + + + io.crossplane.compositefunctions + crossplane-crd-model + + + + org.springframework.boot + spring-boot-autoconfigure + provided + + + + com.google.protobuf + protobuf-java-util + + + + net.devh + grpc-server-spring-boot-starter + + + + com.fasterxml.jackson.module + jackson-module-jsonSchema-jakarta + + + + io.fabric8 + kubernetes-client + provided + + + + + \ No newline at end of file diff --git a/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/config/CrossplaneServiceConfiguration.java b/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/config/CrossplaneServiceConfiguration.java new file mode 100644 index 0000000..dcba8b8 --- /dev/null +++ b/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/config/CrossplaneServiceConfiguration.java @@ -0,0 +1,9 @@ +package io.crossplane.compositefunctions.starter.config; + +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.context.annotation.ComponentScan; + +@AutoConfiguration +@ComponentScan(basePackages = {"io.crossplane.compositefunctions.starter.conversion"}) +public class CrossplaneServiceConfiguration { +} diff --git a/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/conversion/CrossplaneExtraResourcesService.java b/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/conversion/CrossplaneExtraResourcesService.java new file mode 100644 index 0000000..4ef62e1 --- /dev/null +++ b/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/conversion/CrossplaneExtraResourcesService.java @@ -0,0 +1,53 @@ +package io.crossplane.compositefunctions.starter.conversion; + +import com.google.protobuf.util.JsonFormat; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + + +@Component +public class CrossplaneExtraResourcesService { + + private static final Logger logger = LoggerFactory.getLogger(CrossplaneExtraResourcesService.class); + private final JsonFormat.Printer printer = JsonFormat.printer(); + + /* + public Optional getExtraResource(Map extraResources, String resourceName, Class clazz) { + return getExtraResources(extraResources, resourceName, 1, clazz).get(0); + } + + public List> getExtraResources(Map extraResources, String resourceName, int expectedResources, Class clazz) { + List> result = new ArrayList<>(); + Resources resources = extraResources.get(resourceName); + + if (resources != null ) { + if (resources.getItemsCount() != expectedResources) { + throw new CrossplaneUnexpectedItemsException("Unexpected number of resources. Expected " + expectedResources + " but got " + resources.getItemsCount() + "."); + } + for (int i = 0; i < expectedResources; i++) { + try { + logger.debug("We have an extra resource " + clazz.getSimpleName()); + result.add(Optional.ofNullable(Serialization.unmarshal(printer.print(resources.getItems(i).getResource()), clazz))); + } catch (Exception e) { + throw new CrossplaneUnmarshallException("Error when unmarshalling the extra resource " + clazz.getName(), e); + } + } + + } + return result; + } + + public Map createExtraResourcesSelector(String resourceName, HasMetadata type) { + ResourceSelector resourceSelector = ResourceSelector.newBuilder() + .setApiVersion(type.getApiVersion()) + .setKind(type.getKind()) + .setMatchName(resourceName) + .build(); + + return Map.of(resourceName, resourceSelector); + } + + */ +} diff --git a/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/conversion/CrossplaneObservableService.java b/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/conversion/CrossplaneObservableService.java new file mode 100644 index 0000000..c1850d5 --- /dev/null +++ b/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/conversion/CrossplaneObservableService.java @@ -0,0 +1,36 @@ +package io.crossplane.compositefunctions.starter.conversion; + + +import com.google.protobuf.util.JsonFormat; +import io.crossplane.compositefunctions.protobuf.Resource; +import io.crossplane.compositefunctions.protobuf.State; +import io.crossplane.compositefunctions.starter.exception.CrossplaneUnmarshallException; +import io.fabric8.kubernetes.client.utils.Serialization; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import java.util.Optional; + +@Component +public class CrossplaneObservableService { + + private static final Logger logger = LoggerFactory.getLogger(CrossplaneObservableService.class); + private final JsonFormat.Printer printer = JsonFormat.printer(); + + public Optional getObservableResource(String resourceName, State observedState, Class clazz) { + Resource observedResource = observedState.getResourcesOrDefault(resourceName, null); + Optional result = Optional.empty(); + if (observedResource != null) { + try { + logger.debug("We have an observed " + clazz.getSimpleName()); + result = Optional.ofNullable(Serialization.unmarshal(printer.print(observedResource.getResource()), clazz)); + } catch (Exception e) { + + throw new CrossplaneUnmarshallException("Error when unmarshalling the observed resource " + clazz.getName(), e); + } + } + return result; + } + +} diff --git a/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/conversion/CrossplaneResourceService.java b/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/conversion/CrossplaneResourceService.java new file mode 100644 index 0000000..12a1a57 --- /dev/null +++ b/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/conversion/CrossplaneResourceService.java @@ -0,0 +1,25 @@ +package io.crossplane.compositefunctions.starter.conversion; + +import com.google.protobuf.util.JsonFormat; +import io.crossplane.compositefunctions.protobuf.State; +import io.crossplane.compositefunctions.starter.exception.CrossplaneUnmarshallException; +import io.fabric8.kubernetes.client.utils.Serialization; +import org.springframework.stereotype.Component; + +import java.util.Optional; + +@Component +public class CrossplaneResourceService { + + final JsonFormat.Printer printer = JsonFormat.printer(); + + public Optional getResource(State observedState, Class clazz) { + try { + String resource = printer.print(observedState.getComposite().getResource()); + return Optional.ofNullable(Serialization.unmarshal(resource, clazz)); + } catch (Exception e) { + throw new CrossplaneUnmarshallException("Error when unmarshalling the resource " + clazz.getName(), e); + } + + } +} diff --git a/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/exception/CrossplaneUnexpectedItemsException.java b/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/exception/CrossplaneUnexpectedItemsException.java new file mode 100644 index 0000000..1e87c1d --- /dev/null +++ b/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/exception/CrossplaneUnexpectedItemsException.java @@ -0,0 +1,12 @@ +package io.crossplane.compositefunctions.starter.exception; + +public class CrossplaneUnexpectedItemsException extends RuntimeException { + + public CrossplaneUnexpectedItemsException(String message) { + super(message); + } + + public CrossplaneUnexpectedItemsException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/exception/CrossplaneUnmarshallException.java b/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/exception/CrossplaneUnmarshallException.java new file mode 100644 index 0000000..c6b1b93 --- /dev/null +++ b/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/exception/CrossplaneUnmarshallException.java @@ -0,0 +1,12 @@ +package io.crossplane.compositefunctions.starter.exception; + +public class CrossplaneUnmarshallException extends RuntimeException { + + public CrossplaneUnmarshallException(String message) { + super(message); + } + + public CrossplaneUnmarshallException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/registration/CrossplanJsonSchemaGenerator.java b/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/registration/CrossplanJsonSchemaGenerator.java new file mode 100644 index 0000000..1b61aa2 --- /dev/null +++ b/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/registration/CrossplanJsonSchemaGenerator.java @@ -0,0 +1,84 @@ +package io.crossplane.compositefunctions.starter.registration; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatTypes; +import com.fasterxml.jackson.module.jsonSchema.jakarta.JsonSchema; +import com.fasterxml.jackson.module.jsonSchema.jakarta.JsonSchemaGenerator; +import com.fasterxml.jackson.module.jsonSchema.jakarta.types.ArraySchema; +import io.crossplane.apiextensions.v1.compositeresourcedefinitionspec.versions.schema.OpenAPIV3Schema; +import io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaProps; + +import java.io.IOException; +import java.util.stream.Stream; + +public class CrossplanJsonSchemaGenerator { + + public static OpenAPIV3Schema getOpenAPIV3Schema(Class clazz, Class mixin) { + try { + ObjectMapper mapper = new ObjectMapper(); + //Add mixin class to ignore id field as OpenShift does not support it. + mapper.addMixIn(clazz, mixin); + // apper.addMixIn(ObjectMeta.class, MetadataIgnorer.class); + JsonSchemaGenerator generator = new JsonSchemaGenerator(mapper); + JsonSchema jsonSchema = generator.generateSchema(clazz); + + removeIdField(jsonSchema); + //Since JSONSchemaProps and JsonSchema is two POJOs of the same JSON schema type (specified by https://json-schema.org/specification.html) + //We would ideally just cast like this: JSONSchemaProps props = (JSONSchemaProps) jsonSchema; + //But that is not allowed, so we have to write as string and re-parse. + //This was the easiest way to convert from one to the other + String s = mapper.writeValueAsString(jsonSchema); + + return mapper.readValue(s, OpenAPIV3Schema.class); + } catch (IOException e) { + throw new RuntimeException("Failed to generate JSONSchema for class " + clazz.getSimpleName(), e); + } + } + + private static void removeIdField(JsonSchema jsonSchema) { + jsonSchema.setId(null); + + if (JsonFormatTypes.OBJECT.equals(jsonSchema.getType())) { + jsonSchema.asObjectSchema().getProperties().forEach((key, value) -> removeIdField(value)); + } else if (JsonFormatTypes.ARRAY.equals(jsonSchema.getType())) { + final ArraySchema.Items items = jsonSchema.asArraySchema().getItems(); + if (items.isArrayItems()) { + Stream.of(items.asArrayItems().getJsonSchemas()).forEach(s -> removeIdField(s)); + } else { + removeIdField(items.asSingleItems().getSchema()); + } + } + + } + + public static JSONSchemaProps getJsonSchema(Class clazz) { + try { + ObjectMapper mapper = new ObjectMapper(); + //Add mixin class to ignore id field as OpenShift does not support it. + mapper.addMixIn(JSONSchemaProps.class, IdIgnorer.class); + // apper.addMixIn(ObjectMeta.class, MetadataIgnorer.class); + JsonSchemaGenerator generator = new JsonSchemaGenerator(mapper); + JsonSchema jsonSchema = generator.generateSchema(clazz); + + //Since JSONSchemaProps and JsonSchema is two POJOs of the same JSON schema type (specified by https://json-schema.org/specification.html) + //We would ideally just cast like this: JSONSchemaProps props = (JSONSchemaProps) jsonSchema; + //But that is not allowed, so we have to write as string and re-parse. + //This was the easiest way to convert from one to the other + String s = mapper.writeValueAsString(jsonSchema); + return mapper.readValue(s, JSONSchemaProps.class); + } catch (IOException e) { + throw new RuntimeException("Failed to generate JSONSchema for class " + clazz.getSimpleName(), e); + } + } + + + + private abstract class IdIgnorer { + + @JsonIgnore + String id; + @JsonIgnore abstract String getId(); + @JsonIgnore abstract void setId(java.lang.String id); + } +} diff --git a/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/registration/CrossplaneCompositeResourceMixin.java b/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/registration/CrossplaneCompositeResourceMixin.java new file mode 100644 index 0000000..fce63ab --- /dev/null +++ b/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/registration/CrossplaneCompositeResourceMixin.java @@ -0,0 +1,43 @@ +package io.crossplane.compositefunctions.starter.registration; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.fabric8.kubernetes.api.model.ObjectMeta; + +public abstract class CrossplaneCompositeResourceMixin { + + @JsonIgnore + String id; + @JsonIgnore + ObjectMeta metadata; + @JsonIgnore + String apiVersion = ""; + + @JsonIgnore + String kind = ""; + + @JsonIgnore + Void status; + + @JsonIgnore + abstract ObjectMeta getMetadata(); + + + + @JsonIgnore + abstract void setMetadata(ObjectMeta metadata); + + @JsonIgnore + abstract String getApiVersion(); + + @JsonIgnore + abstract void setApiVersion(String apiVersion); + + @JsonIgnore + abstract String getKind(); + + @JsonIgnore + abstract void setKind(String kind); + + @JsonIgnore abstract String getId(); + @JsonIgnore abstract void setId(String id); +} diff --git a/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/registration/CrossplaneCompositeResourceService.java b/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/registration/CrossplaneCompositeResourceService.java new file mode 100644 index 0000000..c57c71b --- /dev/null +++ b/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/registration/CrossplaneCompositeResourceService.java @@ -0,0 +1,146 @@ +package io.crossplane.compositefunctions.starter.registration; + +import io.crossplane.apiextensions.v1.CompositeResourceDefinition; +import io.crossplane.apiextensions.v1.CompositeResourceDefinitionSpec; +import io.crossplane.apiextensions.v1.Composition; +import io.crossplane.apiextensions.v1.CompositionSpec; +import io.crossplane.apiextensions.v1.compositeresourcedefinitionspec.ClaimNames; +import io.crossplane.apiextensions.v1.compositeresourcedefinitionspec.Names; +import io.crossplane.apiextensions.v1.compositeresourcedefinitionspec.Versions; +import io.crossplane.apiextensions.v1.compositeresourcedefinitionspec.versions.Schema; +import io.crossplane.apiextensions.v1.compositionspec.CompositeTypeRef; +import io.crossplane.apiextensions.v1.compositionspec.Pipeline; +import io.crossplane.apiextensions.v1.compositionspec.pipeline.FunctionRef; +import io.fabric8.kubernetes.api.model.Namespaced; +import io.fabric8.kubernetes.client.CustomResource; +import io.fabric8.kubernetes.client.KubernetesClient; +import io.fabric8.kubernetes.client.dsl.Resource; + +import java.util.ArrayList; +import java.util.List; + +import static io.crossplane.compositefunctions.starter.registration.CrossplanJsonSchemaGenerator.getOpenAPIV3Schema; + +public class CrossplaneCompositeResourceService { + + + + public static > void registerOrUpdateCompositeResource(String functionName, + List additionalFunctions, + T functionDefinition, + KubernetesClient kubernetesClient) { + + CompositeResourceDefinition compositeResourceDefinition = createCompositeResourceDefinition(functionDefinition); + + registerOrUpdateCompositeResourceDefinition(compositeResourceDefinition, kubernetesClient); + + Composition composition = createCompositionDefinition(functionName, additionalFunctions, functionDefinition); + + registerOrUpdateCompositeResourceDefinition(composition, kubernetesClient); + + } + + private static void registerOrUpdateCompositeResourceDefinition(CompositeResourceDefinition compositeResourceDefinition, KubernetesClient kubernetesClient) { + var customResourceClient = kubernetesClient.resources(CompositeResourceDefinition.class); + Resource resource = customResourceClient.resource(compositeResourceDefinition); + + CompositeResourceDefinition serverSide = resource.get(); + if (serverSide == null) { + resource.create(); + } else { + resource.update(); + } + } + + public static > CompositeResourceDefinition createCompositeResourceDefinition(T functionDefinition) { //}, Class functionMixin) { + + CompositeResourceDefinition compositeResourceDefinition = new CompositeResourceDefinition(); + compositeResourceDefinition.setMetadata(CrossplaneMetadataBuilder.createMetadata(functionDefinition.getCRDName())); + + CompositeResourceDefinitionSpec spec = new CompositeResourceDefinitionSpec(); + spec.setGroup(functionDefinition.getGroup()); + + String namePrefix = ""; + + if (functionDefinition instanceof Namespaced) { + ClaimNames claimNames = new ClaimNames(); + claimNames.setKind(functionDefinition.getKind()); + claimNames.setPlural(functionDefinition.getPlural()); + claimNames.setSingular(functionDefinition.getSingular()); + spec.setClaimNames(claimNames); + namePrefix = "x"; + } + + Names names = new Names(); + names.setKind(namePrefix + functionDefinition.getKind()); + names.setPlural(namePrefix + functionDefinition.getPlural()); + names.setSingular(namePrefix + functionDefinition.getSingular()); + spec.setNames(names); + + Versions versions = new Versions(); + versions.setName(functionDefinition.getVersion()); + + // This is not 100%. isStorage vs referencable. Need to check the crossplan docs + versions.setReferenceable(functionDefinition.isStorage()); + versions.setServed(functionDefinition.isServed()); + + + Schema schema = new Schema(); + schema.setOpenAPIV3Schema(getOpenAPIV3Schema(functionDefinition.getClass(), CrossplaneCompositeResourceMixin.class)); + + versions.setSchema(schema); + spec.setVersions(List.of(versions)); + compositeResourceDefinition.setSpec(spec); + return compositeResourceDefinition; + } + + + private static void registerOrUpdateCompositeResourceDefinition(Composition compositeResourceDefinition, KubernetesClient kubernetesClient) { + var customResourceClient = kubernetesClient.resources(Composition.class); + Resource resource = customResourceClient.resource(compositeResourceDefinition); + + Composition serverSide = resource.get(); + if (serverSide == null) { + resource.create(); + } else { + resource.update(); + } + } + + private static > Composition createCompositionDefinition( + String functionName, List additionalFunctions, + T functionDefinition) { + + Composition composition = new Composition(); + + composition.setMetadata(CrossplaneMetadataBuilder.createMetadata(functionDefinition.getKind().toLowerCase() + "-composition")); + CompositionSpec compositionSpec = new CompositionSpec(); + + CompositeTypeRef compositeTypeRef = new CompositeTypeRef(); + compositeTypeRef.setKind(functionDefinition.getKind()); + compositeTypeRef.setApiVersion(functionDefinition.getApiVersion()); + + compositionSpec.setCompositeTypeRef(compositeTypeRef); + compositionSpec.setMode(CompositionSpec.Mode.PIPELINE); + + List pipelineList = new ArrayList<>(); + + pipelineList.add(createPipeline(functionName)); + + additionalFunctions.forEach(s -> pipelineList.add(createPipeline(s))); + + compositionSpec.setPipeline(pipelineList); + composition.setSpec(compositionSpec); + return composition; + } + + private static Pipeline createPipeline(String pipelineName) { + Pipeline pipeline = new Pipeline(); + pipeline.setStep(pipelineName); + FunctionRef functionRef = new FunctionRef(); + functionRef.setName(pipelineName); + pipeline.setFunctionRef(functionRef); + return pipeline; + } + +} diff --git a/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/registration/CrossplaneMetadataBuilder.java b/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/registration/CrossplaneMetadataBuilder.java new file mode 100644 index 0000000..565fdc3 --- /dev/null +++ b/crossplane-function-springboot-starter/src/main/java/io/crossplane/compositefunctions/starter/registration/CrossplaneMetadataBuilder.java @@ -0,0 +1,37 @@ +package io.crossplane.compositefunctions.starter.registration; + +import io.fabric8.kubernetes.api.model.ObjectMeta; +import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; + +import java.util.LinkedHashMap; +import java.util.Map; + +public class CrossplaneMetadataBuilder { + + private CrossplaneMetadataBuilder() { + } + + public static ObjectMeta createMetadata(String name, String namespace) { + return createMetadata(name, namespace, null); + } + + public static ObjectMeta createMetadata(String name, String namespace, Map annotations) { + return new ObjectMetaBuilder().withName(name).withNamespace(namespace).withAnnotations(annotations).build(); + } + + + public static ObjectMeta createMetadata(String name) { + return createMetadata(name, null); + } + + public static ObjectMeta addAnnotations(Map annotations, ObjectMeta objectMeta) { + + Map existingAnnotations = objectMeta.getAnnotations(); + if (existingAnnotations == null) { + existingAnnotations = new LinkedHashMap<>(); + } + existingAnnotations.putAll(annotations); + objectMeta.setAnnotations(existingAnnotations); + return objectMeta; + } +} diff --git a/crossplane-function-springboot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/crossplane-function-springboot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..542198c --- /dev/null +++ b/crossplane-function-springboot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +io.crossplane.compositefunctions.starter.config.CrossplaneServiceConfiguration \ No newline at end of file diff --git a/crossplane-protobuf-model/src/main/proto/fetch.sh b/crossplane-protobuf-model/src/main/proto/fetch.sh index 78b5292..4540db8 100755 --- a/crossplane-protobuf-model/src/main/proto/fetch.sh +++ b/crossplane-protobuf-model/src/main/proto/fetch.sh @@ -1,6 +1,6 @@ #!/bin/bash -release="release-1.16" +release="release-1.14" file="run_function.proto" gh api -H "Accept: application/vnd.github.raw+json" "/repos/crossplane/crossplane/contents/apis/apiextensions/fn/proto/v1beta1/${file}?ref=${release}" > $file diff --git a/crossplane-protobuf-model/src/main/proto/run_function.proto b/crossplane-protobuf-model/src/main/proto/run_function.proto index 7db077e..6a0937c 100644 --- a/crossplane-protobuf-model/src/main/proto/run_function.proto +++ b/crossplane-protobuf-model/src/main/proto/run_function.proto @@ -62,37 +62,6 @@ message RunFunctionRequest { // and that context will be passed to subsequent Functions. Crossplane // discards all context returned by the last Function in the pipeline. optional google.protobuf.Struct context = 5; - - // Optional extra resources that the Function required. - // Note that extra resources is a map to Resources, plural. - // The map key corresponds to the key in a RunFunctionResponse's - // extra_resources field. If a Function requested extra resources that - // did not exist, Crossplane sets the map key to an empty Resources message to - // indicate that it attempted to satisfy the request. - map extra_resources = 6; - - // Optional credentials that this Function may use to communicate with an - // external system. - map credentials = 7; -} - -// Credentials that a Function may use to communicate with an external system. -message Credentials { - // Source of the credentials. - oneof source { - // Credential data loaded by Crossplane, for example from a Secret. - CredentialData credential_data = 1; - } -} - -// CredentialData loaded by Crossplane, for example from a Secret. -message CredentialData { - map data = 1; -} - -// Resources represents the state of several Crossplane resources. -message Resources { - repeated Resource items = 1; } // A RunFunctionResponse contains the result of a Composition Function run. @@ -120,9 +89,6 @@ message RunFunctionResponse { // Optional context to be passed to the next Function in the pipeline as part // of the RunFunctionRequest. Dropped on the last function in the pipeline. optional google.protobuf.Struct context = 4; - - // Requirements that must be satisfied for this Function to run successfully. - Requirements requirements = 5; } // RequestMeta contains metadata pertaining to a RunFunctionRequest. @@ -132,36 +98,6 @@ message RequestMeta { string tag = 1; } -// Requirements that must be satisfied for a Function to run successfully. -message Requirements { - // Extra resources that this Function requires. - // The map key uniquely identifies the group of resources. - map extra_resources = 1; -} - -// ResourceSelector selects a group of resources, either by name or by label. -message ResourceSelector { - // API version of resources to select. - string api_version = 1; - - // Kind of resources to select. - string kind = 2; - - // Resources to match. - oneof match { - // Match the resource with this name. - string match_name = 3; - - // Match all resources with these labels. - MatchLabels match_labels = 4; - } -} - -// MatchLabels defines a set of labels to match resources against. -message MatchLabels { - map labels = 1; -} - // ResponseMeta contains metadata pertaining to a RunFunctionResponse. message ResponseMeta { // An opaque string identifying the content of the request. Must match the diff --git a/pom.xml b/pom.xml index 054cd54..c400f25 100644 --- a/pom.xml +++ b/pom.xml @@ -3,6 +3,11 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.3.1 + io.crossplane.compositefunctions crossplane-parent @@ -20,13 +25,16 @@ 17 + 3.3.1 6.13.0 1.7.1 - 4.27.0 + 3.25.1 1.64.0 1.3.5 2.0.13 2.17.1 + 1.77 + 3.1.0.RELEASE 1.6.0 @@ -41,6 +49,8 @@ crossplane-crd-model crossplane-protobuf-model crossplane-function-base + crossplane-function-springboot-starter + crossplane-function-example @@ -55,7 +65,17 @@ crossplane-protobuf-model ${revision} + + io.crossplane.compositefunctions + crossplane-function-base + ${revision} + + + io.crossplane.compositefunctions + crossplane-function-springboot-starter + ${revision} + io.fabric8 @@ -64,6 +84,8 @@ import pom + + com.google.protobuf protobuf-java @@ -101,6 +123,16 @@ grpc-util ${grpc.version} + + io.grpc + grpc-services + ${grpc.version} + + + io.grpc + grpc-inprocess + ${grpc.version} + io.grpc grpc-netty-shaded @@ -121,6 +153,16 @@ jackson-databind ${jackson-databind.version} + + org.bouncycastle + bcpkix-jdk18on + ${bouncycastle.version} + + + net.devh + grpc-server-spring-boot-starter + ${grpc-spring-boot-starter.version} +