---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.20.0
  name: resourcesets.fluxcd.controlplane.io
spec:
  group: fluxcd.controlplane.io
  names:
    kind: ResourceSet
    listKind: ResourceSetList
    plural: resourcesets
    shortNames:
    - rset
    singular: resourceset
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - jsonPath: .status.conditions[?(@.type=="Ready")].status
      name: Ready
      type: string
    - jsonPath: .status.conditions[?(@.type=="Ready")].message
      name: Status
      type: string
    name: v1
    schema:
      openAPIV3Schema:
        description: ResourceSet is the Schema for the ResourceSets API.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: ResourceSetSpec defines the desired state of ResourceSet
            properties:
              commonMetadata:
                description: |-
                  CommonMetadata specifies the common labels and annotations that are
                  applied to all resources. Any existing label or annotation will be
                  overridden if its key matches a common one.
                properties:
                  annotations:
                    additionalProperties:
                      type: string
                    description: Annotations to be added to the object's metadata.
                    type: object
                  labels:
                    additionalProperties:
                      type: string
                    description: Labels to be added to the object's metadata.
                    type: object
                type: object
              dependsOn:
                description: |-
                  DependsOn specifies the list of Kubernetes resources that must
                  exist on the cluster before the reconciliation process starts.
                items:
                  description: Dependency defines a ResourceSet dependency on a Kubernetes
                    resource.
                  properties:
                    apiVersion:
                      description: APIVersion of the resource to depend on.
                      type: string
                    kind:
                      description: Kind of the resource to depend on.
                      type: string
                    name:
                      description: Name of the resource to depend on.
                      type: string
                    namespace:
                      description: Namespace of the resource to depend on.
                      type: string
                    ready:
                      description: Ready checks if the resource Ready status condition
                        is true.
                      type: boolean
                    readyExpr:
                      description: |-
                        ReadyExpr checks if the resource satisfies the given CEL expression.
                        The expression replaces the default readiness check and
                        is only evaluated if Ready is set to 'true'.
                      type: string
                  required:
                  - apiVersion
                  - kind
                  - name
                  type: object
                type: array
              inputStrategy:
                description: |-
                  InputStrategy defines how the inputs are combined when multiple
                  input provider objects are used. Defaults to flattening all inputs
                  from all providers into a single list of input sets.
                properties:
                  includeEmptyProviders:
                    description: |-
                      IncludeEmptyProviders controls how input providers that export no
                      inputs are treated. Only applies when Name is Permute. When true, if
                      any provider has zero inputs the resulting permutation set is empty
                      (mathematically correct Cartesian product behavior). When false or
                      unset (default), providers with zero inputs are silently skipped and
                      the remaining providers still permute among themselves.
                    type: boolean
                  name:
                    description: |-
                      Name defines how the inputs are combined when multiple
                      input provider objects are used. Supported values are:
                      - Flatten: all inputs sets from all input provider objects are
                        flattened into a single list of input sets.
                      - Permute: all inputs sets from all input provider objects are
                        combined using a Cartesian product, resulting in a list of input sets
                        that contains every possible combination of input values.
                        For example, if provider A has inputs [{x: 1}, {x: 2}] and provider B has
                        inputs [{y: "a"}, {y: "b"}], the resulting input sets will be:
                        [{x: 1, y: "a"}, {x: 1, y: "b"}, {x: 2, y: "a"}, {x: 2, y: "b"}].
                        This strategy can lead to a large number of input sets and should be
                        used with caution. Users should use filtering features from
                        ResourceSetInputProvider to limit the amount of exported inputs.
                    enum:
                    - Flatten
                    - Permute
                    type: string
                required:
                - name
                type: object
                x-kubernetes-validations:
                - message: includeEmptyProviders only applies when name is Permute
                  rule: '!has(self.includeEmptyProviders) || self.name == ''Permute'''
              inputs:
                description: Inputs contains the list of ResourceSet inputs.
                items:
                  additionalProperties:
                    x-kubernetes-preserve-unknown-fields: true
                  description: ResourceSetInput defines the key-value pairs of the
                    ResourceSet input.
                  type: object
                type: array
              inputsFrom:
                description: |-
                  InputsFrom contains the list of references to input providers.
                  When set, the inputs are fetched from the providers and concatenated
                  with the in-line inputs defined in the ResourceSet.
                items:
                  description: |-
                    InputProviderReference defines a reference to an input provider resource
                    in the same namespace as the ResourceSet.
                  properties:
                    apiVersion:
                      description: |-
                        APIVersion of the input provider resource.
                        When not set, the APIVersion of the ResourceSet is used.
                      enum:
                      - fluxcd.controlplane.io/v1
                      type: string
                    kind:
                      description: Kind of the input provider resource.
                      enum:
                      - ResourceSetInputProvider
                      type: string
                    name:
                      description: |-
                        Name of the input provider resource. Cannot be set
                        when the Selector field is set.
                      type: string
                    selector:
                      description: |-
                        Selector is a label selector to filter the input provider resources
                        as an alternative to the Name field.
                      properties:
                        matchExpressions:
                          description: matchExpressions is a list of label selector
                            requirements. The requirements are ANDed.
                          items:
                            description: |-
                              A label selector requirement is a selector that contains values, a key, and an operator that
                              relates the key and values.
                            properties:
                              key:
                                description: key is the label key that the selector
                                  applies to.
                                type: string
                              operator:
                                description: |-
                                  operator represents a key's relationship to a set of values.
                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                type: string
                              values:
                                description: |-
                                  values is an array of string values. If the operator is In or NotIn,
                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                  the values array must be empty. This array is replaced during a strategic
                                  merge patch.
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                            required:
                            - key
                            - operator
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        matchLabels:
                          additionalProperties:
                            type: string
                          description: |-
                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                          type: object
                      type: object
                      x-kubernetes-map-type: atomic
                  type: object
                  x-kubernetes-validations:
                  - message: at least one of name or selector must be set for input
                      provider references
                    rule: has(self.name) || has(self.selector)
                  - message: cannot set both name and selector for input provider
                      references
                    rule: '!has(self.name) || !has(self.selector)'
                type: array
              resources:
                description: Resources contains the list of Kubernetes resources to
                  reconcile.
                items:
                  x-kubernetes-preserve-unknown-fields: true
                type: array
              resourcesTemplate:
                description: |-
                  ResourcesTemplate is a Go template that generates the list of
                  Kubernetes resources to reconcile. The template is rendered
                  as multi-document YAML, the resources should be separated by '---'.
                  When both Resources and ResourcesTemplate are set, the resulting
                  objects are merged and deduplicated, with the ones from Resources taking precedence.
                type: string
              serviceAccountName:
                description: |-
                  The name of the Kubernetes service account to impersonate
                  when reconciling the generated resources.
                type: string
              wait:
                description: |-
                  Wait instructs the controller to check the health
                  of all the reconciled resources.
                type: boolean
            type: object
          status:
            description: ResourceSetStatus defines the observed state of ResourceSet.
            properties:
              conditions:
                description: Conditions contains the readiness conditions of the object.
                items:
                  description: Condition contains details for one aspect of the current
                    state of this API Resource.
                  properties:
                    lastTransitionTime:
                      description: |-
                        lastTransitionTime is the last time the condition transitioned from one status to another.
                        This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        message is a human readable message indicating details about the transition.
                        This may be an empty string.
                      maxLength: 32768
                      type: string
                    observedGeneration:
                      description: |-
                        observedGeneration represents the .metadata.generation that the condition was set based upon.
                        For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                        with respect to the current state of the instance.
                      format: int64
                      minimum: 0
                      type: integer
                    reason:
                      description: |-
                        reason contains a programmatic identifier indicating the reason for the condition's last transition.
                        Producers of specific condition types may define expected values and meanings for this field,
                        and whether the values are considered a guaranteed API.
                        The value should be a CamelCase string.
                        This field may not be empty.
                      maxLength: 1024
                      minLength: 1
                      pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                      type: string
                    status:
                      description: status of the condition, one of True, False, Unknown.
                      enum:
                      - "True"
                      - "False"
                      - Unknown
                      type: string
                    type:
                      description: type of condition in CamelCase or in foo.example.com/CamelCase.
                      maxLength: 316
                      pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                      type: string
                  required:
                  - lastTransitionTime
                  - message
                  - reason
                  - status
                  - type
                  type: object
                type: array
              externalChecksumRefs:
                description: |-
                  ExternalChecksumRefs lists the ConfigMap and Secret references
                  discovered in checksumFrom annotations on the last reconciliation
                  that point to objects not rendered by this ResourceSet. Each entry
                  has the form "Kind/namespace/name". It is used to trigger a
                  reconciliation when one of the referenced objects changes.
                items:
                  type: string
                type: array
              history:
                description: |-
                  History contains the reconciliation history of the ResourceSet
                  as a list of snapshots ordered by the last reconciled time.
                items:
                  description: |-
                    Snapshot represents a point-in-time record of a group of resources reconciliation,
                    including timing information, status, and a unique digest identifier.
                  properties:
                    digest:
                      description: Digest is the checksum in the format `<algo>:<hex>`
                        of the resources in this snapshot.
                      type: string
                    firstReconciled:
                      description: FirstReconciled is the time when this revision
                        was first reconciled to the cluster.
                      format: date-time
                      type: string
                    lastReconciled:
                      description: LastReconciled is the time when this revision was
                        last reconciled to the cluster.
                      format: date-time
                      type: string
                    lastReconciledDuration:
                      description: LastReconciledDuration is time it took to reconcile
                        the resources in this revision.
                      type: string
                    lastReconciledStatus:
                      description: LastReconciledStatus is the status of the last
                        reconciliation.
                      type: string
                    metadata:
                      additionalProperties:
                        type: string
                      description: Metadata contains additional information about
                        the snapshot.
                      type: object
                    totalReconciliations:
                      description: TotalReconciliations is the total number of reconciliations
                        that have occurred for this snapshot.
                      format: int64
                      type: integer
                  required:
                  - digest
                  - firstReconciled
                  - lastReconciled
                  - lastReconciledDuration
                  - lastReconciledStatus
                  - totalReconciliations
                  type: object
                type: array
              inventory:
                description: |-
                  Inventory contains a list of Kubernetes resource object references
                  last applied on the cluster.
                properties:
                  entries:
                    description: Entries of Kubernetes resource object references.
                    items:
                      description: ResourceRef contains the information necessary
                        to locate a resource within a cluster.
                      properties:
                        id:
                          description: |-
                            ID is the string representation of the Kubernetes resource object's metadata,
                            in the format '<namespace>_<name>_<group>_<kind>'.
                          type: string
                        v:
                          description: Version is the API version of the Kubernetes
                            resource object's kind.
                          type: string
                      required:
                      - id
                      - v
                      type: object
                    type: array
                required:
                - entries
                type: object
              lastAppliedRevision:
                description: |-
                  LastAppliedRevision is the digest of the
                  generated resources that were last reconcile.
                type: string
              lastHandledReconcileAt:
                description: |-
                  LastHandledReconcileAt holds the value of the most recent
                  reconcile request value, so a change of the annotation value
                  can be detected.
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
