---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.14.0
    operatorframework.io/installed-alongside-1ceecf995e8146e2: openshift-storage/recipe.v4.19.6-rhodf
  creationTimestamp: "2025-10-27T12:43:37Z"
  generation: 1
  labels:
    olm.managed: "true"
    operators.coreos.com/recipe.openshift-storage: ""
  managedFields:
  - apiVersion: apiextensions.k8s.io/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .: {}
          f:controller-gen.kubebuilder.io/version: {}
          f:operatorframework.io/installed-alongside-1ceecf995e8146e2: {}
        f:labels:
          .: {}
          f:olm.managed: {}
      f:spec:
        f:conversion:
          .: {}
          f:strategy: {}
        f:group: {}
        f:names:
          f:kind: {}
          f:listKind: {}
          f:plural: {}
          f:singular: {}
        f:scope: {}
        f:versions: {}
    manager: catalog
    operation: Update
    time: "2025-10-27T12:43:37Z"
  - apiVersion: apiextensions.k8s.io/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:status:
        f:acceptedNames:
          f:kind: {}
          f:listKind: {}
          f:plural: {}
          f:singular: {}
        f:conditions:
          k:{"type":"Established"}:
            .: {}
            f:lastTransitionTime: {}
            f:message: {}
            f:reason: {}
            f:status: {}
            f:type: {}
          k:{"type":"NamesAccepted"}:
            .: {}
            f:lastTransitionTime: {}
            f:message: {}
            f:reason: {}
            f:status: {}
            f:type: {}
    manager: kube-apiserver
    operation: Update
    subresource: status
    time: "2025-10-27T12:43:38Z"
  - apiVersion: apiextensions.k8s.io/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:labels:
          f:operators.coreos.com/recipe.openshift-storage: {}
    manager: olm
    operation: Update
    time: "2025-10-27T12:46:15Z"
  name: recipes.ramendr.openshift.io
  resourceVersion: "61555"
  uid: 8064d1b2-bc9b-4752-a719-d549ffb23965
spec:
  conversion:
    strategy: None
  group: ramendr.openshift.io
  names:
    kind: Recipe
    listKind: RecipeList
    plural: recipes
    singular: recipe
  scope: Namespaced
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: Recipe is the Schema for the recipes 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: RecipeSpec defines the desired state of Recipe
            properties:
              appType:
                description: |-
                  Type of application the recipe is designed for. (AppType is not used yet. For now, we will
                  match the name of the app CR)
                type: string
              groups:
                description: List of one or multiple groups
                items:
                  description: |-
                    Groups defined in the recipe refine / narrow-down the scope of its parent groups defined in the
                    Application CR. Recipe groups are always be associated to a parent group in Application CR -
                    explicitly or implicitly. Recipe groups can be used in the context of backup and/or restore workflows
                  properties:
                    backupRef:
                      description: |-
                        Used for groups solely used in restore workflows to refer to another group that is used in
                        backup workflows.
                      type: string
                    essential:
                      description: Defaults to true, if set to false, a failure is
                        not necessarily handled as fatal
                      type: boolean
                    excludedNamespaces:
                      description: List of namespace to exclude
                      items:
                        type: string
                      type: array
                    excludedResourceTypes:
                      description: List of resource types to exclude
                      items:
                        type: string
                      type: array
                    includeClusterResources:
                      description: |-
                        Whether to include any cluster-scoped resources. If nil or true, cluster-scoped resources are
                        included if they are associated with the included namespace-scoped resources
                      type: boolean
                    includedNamespaces:
                      description: List of namespaces to include.
                      items:
                        type: string
                      type: array
                    includedNamespacesByLabel:
                      description: Selects namespaces by label
                      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
                    includedResourceTypes:
                      description: List of resource types to include. If unspecified,
                        all resource types are included.
                      items:
                        type: string
                      type: array
                    labelSelector:
                      description: Select items based on label
                      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
                    name:
                      description: Name of the group
                      type: string
                    nameSelector:
                      description: If specified, resource's object name needs to match
                        this expression. Valid for volume groups only.
                      type: string
                    parent:
                      description: |-
                        Name of the parent group defined in the associated Application CR. Optional - If unspecified,
                        parent group is represented by the implicit default group of Application CR (implies the
                        Application CR does not specify groups explicitly).
                      type: string
                    restoreOverwriteResources:
                      description: Whether to overwrite resources during restore.
                        Default to false.
                      type: boolean
                    restoreStatus:
                      description: RestoreStatus restores status if set to all the
                        includedResources specified. Specify '*' to restore all statuses
                        for all the CRs
                      properties:
                        excludedResources:
                          description: List of resource types to exclude.
                          items:
                            type: string
                          type: array
                        includedResources:
                          description: List of resource types to include. If unspecified,
                            all resource types are included.
                          items:
                            type: string
                          type: array
                      type: object
                    selectResource:
                      description: Determines the resource type which the fields labelSelector
                        and nameSelector apply to for selecting PVCs. Default selection
                        is pvc. Valid for volume groups only.
                      enum:
                      - pvc
                      - pod
                      - deployment
                      - statefulset
                      type: string
                    type:
                      description: Determines the type of group - volume data only,
                        resources only
                      enum:
                      - volume
                      - resource
                      type: string
                  required:
                  - name
                  - type
                  type: object
                type: array
                x-kubernetes-list-map-keys:
                - name
                x-kubernetes-list-type: map
              hooks:
                description: List of one or multiple hooks
                items:
                  description: Hooks are actions to take during recipe processing
                  properties:
                    chks:
                      description: Set of checks that the hook can apply
                      items:
                        description: Operation to be invoked by the hook
                        properties:
                          condition:
                            description: The condition to check for
                            type: string
                          name:
                            description: Name of the check. Needs to be unique within
                              the hook
                            type: string
                          onError:
                            description: How to handle when check does not become
                              true. Defaults to Fail.
                            type: string
                          timeout:
                            description: How long to wait for the check to execute,
                              in seconds
                            type: integer
                        required:
                        - name
                        type: object
                      type: array
                      x-kubernetes-list-map-keys:
                      - name
                      x-kubernetes-list-type: map
                    essential:
                      description: Defaults to true, if set to false, a failure is
                        not necessarily handled as fatal
                      type: boolean
                    labelSelector:
                      description: If specified, resource object needs to match this
                        label selector
                      properties:
                        matchExpressions:
                          description: matchExpressions is a list of label selector
                            requirements. The requirements are ANDed.
                          items:
                            description: |-
                              A label selector requirement is a selector that contains values, a key, and an operator that
                              relates the key and values.
                            properties:
                              key:
                                description: key is the label key that the selector
                                  applies to.
                                type: string
                              operator:
                                description: |-
                                  operator represents a key's relationship to a set of values.
                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                type: string
                              values:
                                description: |-
                                  values is an array of string values. If the operator is In or NotIn,
                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                  the values array must be empty. This array is replaced during a strategic
                                  merge patch.
                                items:
                                  type: string
                                type: array
                                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
                    name:
                      description: Hook name, unique within the Recipe CR
                      type: string
                    nameSelector:
                      description: If specified, resource's object name needs to match
                        this expression
                      type: string
                    namespace:
                      description: Namespace
                      type: string
                    onError:
                      default: fail
                      description: Default behavior in case of failing operations
                        (custom or built-in ops). Defaults to Fail.
                      enum:
                      - fail
                      - continue
                      type: string
                    ops:
                      description: Set of operations that the hook can be invoked
                        for
                      items:
                        description: Operation to be invoked by the hook
                        properties:
                          command:
                            description: The command to execute
                            minLength: 1
                            type: string
                          container:
                            description: The container where the command should be
                              executed
                            type: string
                          inverseOp:
                            description: Name of another operation that reverts the
                              effect of this operation (e.g. quiesce vs. unquiesce)
                            type: string
                          name:
                            description: Name of the operation. Needs to be unique
                              within the hook
                            type: string
                          onError:
                            description: How to handle command returning with non-zero
                              exit code. Defaults to Fail.
                            type: string
                          timeout:
                            description: How long to wait for the command to execute,
                              in seconds
                            type: integer
                        required:
                        - command
                        - name
                        type: object
                      type: array
                      x-kubernetes-list-map-keys:
                      - name
                      x-kubernetes-list-type: map
                    selectResource:
                      description: Resource type to that a hook applies to
                      type: string
                    singlePodOnly:
                      description: |-
                        Boolean flag that indicates whether to execute command on a single pod or on all pods that
                        match the selector
                      type: boolean
                    timeout:
                      description: Default timeout in seconds applied to custom and
                        built-in operations. If not specified, equals to 30s.
                      type: integer
                    type:
                      description: Hook type
                      enum:
                      - exec
                      - scale
                      - check
                      type: string
                  required:
                  - name
                  - namespace
                  - type
                  type: object
                type: array
                x-kubernetes-list-map-keys:
                - name
                x-kubernetes-list-type: map
              volumes:
                description: Volumes to protect from disaster
                properties:
                  backupRef:
                    description: |-
                      Used for groups solely used in restore workflows to refer to another group that is used in
                      backup workflows.
                    type: string
                  essential:
                    description: Defaults to true, if set to false, a failure is not
                      necessarily handled as fatal
                    type: boolean
                  excludedNamespaces:
                    description: List of namespace to exclude
                    items:
                      type: string
                    type: array
                  excludedResourceTypes:
                    description: List of resource types to exclude
                    items:
                      type: string
                    type: array
                  includeClusterResources:
                    description: |-
                      Whether to include any cluster-scoped resources. If nil or true, cluster-scoped resources are
                      included if they are associated with the included namespace-scoped resources
                    type: boolean
                  includedNamespaces:
                    description: List of namespaces to include.
                    items:
                      type: string
                    type: array
                  includedNamespacesByLabel:
                    description: Selects namespaces by label
                    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
                  includedResourceTypes:
                    description: List of resource types to include. If unspecified,
                      all resource types are included.
                    items:
                      type: string
                    type: array
                  labelSelector:
                    description: Select items based on label
                    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
                  name:
                    description: Name of the group
                    type: string
                  nameSelector:
                    description: If specified, resource's object name needs to match
                      this expression. Valid for volume groups only.
                    type: string
                  parent:
                    description: |-
                      Name of the parent group defined in the associated Application CR. Optional - If unspecified,
                      parent group is represented by the implicit default group of Application CR (implies the
                      Application CR does not specify groups explicitly).
                    type: string
                  restoreOverwriteResources:
                    description: Whether to overwrite resources during restore. Default
                      to false.
                    type: boolean
                  restoreStatus:
                    description: RestoreStatus restores status if set to all the includedResources
                      specified. Specify '*' to restore all statuses for all the CRs
                    properties:
                      excludedResources:
                        description: List of resource types to exclude.
                        items:
                          type: string
                        type: array
                      includedResources:
                        description: List of resource types to include. If unspecified,
                          all resource types are included.
                        items:
                          type: string
                        type: array
                    type: object
                  selectResource:
                    description: Determines the resource type which the fields labelSelector
                      and nameSelector apply to for selecting PVCs. Default selection
                      is pvc. Valid for volume groups only.
                    enum:
                    - pvc
                    - pod
                    - deployment
                    - statefulset
                    type: string
                  type:
                    description: Determines the type of group - volume data only,
                      resources only
                    enum:
                    - volume
                    - resource
                    type: string
                required:
                - name
                - type
                type: object
              workflows:
                description: Workflow is the sequence of actions to take
                items:
                  description: Workflow is the sequence of actions to take
                  properties:
                    failOn:
                      default: any-error
                      description: 'Implies behaviour in case of failure: any-error
                        (default), essential-error, full-error'
                      enum:
                      - any-error
                      - essential-error
                      - full-error
                      type: string
                    name:
                      description: |-
                        Name of recipe. Names "backup" and "restore" are reserved and implicitly used by default for
                        backup or restore respectively
                      type: string
                    sequence:
                      description: |-
                        List of the names of groups or hooks, in the order in which they should be executed
                        Format: <group|hook>: <group or hook name>[/<hook op>]
                      items:
                        additionalProperties:
                          type: string
                        type: object
                      type: array
                  required:
                  - name
                  - sequence
                  type: object
                type: array
                x-kubernetes-list-map-keys:
                - name
                x-kubernetes-list-type: map
            required:
            - appType
            type: object
          status:
            description: RecipeStatus defines the observed state of Recipe
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: Recipe
    listKind: RecipeList
    plural: recipes
    singular: recipe
  conditions:
  - lastTransitionTime: "2025-10-27T12:43:37Z"
    message: no conflicts found
    reason: NoConflicts
    status: "True"
    type: NamesAccepted
  - lastTransitionTime: "2025-10-27T12:43:38Z"
    message: the initial names have been accepted
    reason: InitialNamesAccepted
    status: "True"
    type: Established
  storedVersions:
  - v1alpha1
