---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.16.1
    operatorframework.io/installed-alongside-c6ae7e8e8ec34ce6: openshift-storage/ocs-operator.v4.19.6-rhodf
  creationTimestamp: "2025-10-27T12:43:45Z"
  generation: 1
  labels:
    olm.managed: "true"
    operators.coreos.com/ocs-operator.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-c6ae7e8e8ec34ce6: {}
        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:45Z"
  - 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:45Z"
  - apiVersion: apiextensions.k8s.io/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:labels:
          f:operators.coreos.com/ocs-operator.openshift-storage: {}
    manager: olm
    operation: Update
    time: "2025-10-27T12:46:39Z"
  name: storageconsumers.ocs.openshift.io
  resourceVersion: "62048"
  uid: 69fff1d7-841d-4992-b7b4-4f4eeb17c731
spec:
  conversion:
    strategy: None
  group: ocs.openshift.io
  names:
    kind: StorageConsumer
    listKind: StorageConsumerList
    plural: storageconsumers
    singular: storageconsumer
  scope: Namespaced
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: StorageConsumer is the Schema for the storageconsumers 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: StorageConsumerSpec defines the desired state of StorageConsumer
            properties:
              enable:
                description: Enable flag ignores a reconcile if set to false
                type: boolean
              resourceNameMappingConfigMap:
                description: |-
                  LocalObjectReference contains enough information to let you locate the
                  referenced object inside the same namespace.
                properties:
                  name:
                    default: ""
                    description: |-
                      Name of the referent.
                      This field is effectively required, but due to backwards compatibility is
                      allowed to be empty. Instances of this type with an empty value here are
                      almost certainly wrong.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              storageClasses:
                items:
                  properties:
                    aliases:
                      items:
                        type: string
                      type: array
                    name:
                      type: string
                    rename:
                      type: string
                  required:
                  - name
                  type: object
                type: array
              storageQuotaInGiB:
                description: StorageQuotaInGiB describes quota for the consumer
                type: integer
              volumeGroupSnapshotClasses:
                items:
                  properties:
                    aliases:
                      items:
                        type: string
                      type: array
                    name:
                      type: string
                    rename:
                      type: string
                  required:
                  - name
                  type: object
                type: array
              volumeReplicationClasses:
                items:
                  properties:
                    aliases:
                      items:
                        type: string
                      type: array
                    name:
                      type: string
                    rename:
                      type: string
                  required:
                  - name
                  type: object
                type: array
              volumeSnapshotClasses:
                items:
                  properties:
                    aliases:
                      items:
                        type: string
                      type: array
                    name:
                      type: string
                    rename:
                      type: string
                  required:
                  - name
                  type: object
                type: array
            type: object
            x-kubernetes-validations:
            - message: storageQuotaInGiB cannot be decreased unless setting to 0
              rule: '!(has(self.storageQuotaInGiB) && has(oldSelf.storageQuotaInGiB)
                && self.storageQuotaInGiB < oldSelf.storageQuotaInGiB && self.storageQuotaInGiB
                != 0)'
          status:
            description: StorageConsumerStatus defines the observed state of StorageConsumer
            properties:
              cephResources:
                description: CephResources provide details of created ceph resources
                  required for external storage
                items:
                  description: CephResourcesSpec hold details of created ceph resources
                    required for external storage
                  properties:
                    cephClients:
                      additionalProperties:
                        type: string
                      description: CephClients holds the name of CephClients mapped
                        to the created ceph resource
                      type: object
                    kind:
                      description: Kind describes the kind of created ceph resource
                      type: string
                    name:
                      description: Name describes the name of created ceph resource
                      type: string
                    status:
                      description: Phase describes the phase of created ceph resource
                      type: string
                  type: object
                type: array
              client:
                description: Information of storage client received from consumer
                nullable: true
                properties:
                  clientId:
                    description: ID is the k8s UID of connected storageclient
                    type: string
                  clusterId:
                    description: ClusterID is the id of the openshift cluster
                    type: string
                  clusterName:
                    description: ClusterName is the name of the openshift cluster
                    type: string
                  name:
                    description: Name is the name of connected storageclient
                    type: string
                  operatorNamespace:
                    description: Client Operator Namespace
                    type: string
                  operatorVersion:
                    description: StorageClient Operator Version
                    type: string
                  platformVersion:
                    description: StorageClient Platform Version
                    type: string
                  storageQuotaUtilizationRatio:
                    description: StorageQuotaUtilizationRatio is the ratio of utilized
                      quota of connected client
                    type: number
                type: object
              lastHeartbeat:
                description: Timestamp of last heartbeat received from consumer
                format: date-time
                type: string
              onboardingTicketSecret:
                description: |-
                  LocalObjectReference contains enough information to let you locate the
                  referenced object inside the same namespace.
                properties:
                  name:
                    default: ""
                    description: |-
                      Name of the referent.
                      This field is effectively required, but due to backwards compatibility is
                      allowed to be empty. Instances of this type with an empty value here are
                      almost certainly wrong.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              resourceNameMappingConfigMap:
                description: |-
                  LocalObjectReference contains enough information to let you locate the
                  referenced object inside the same namespace.
                properties:
                  name:
                    default: ""
                    description: |-
                      Name of the referent.
                      This field is effectively required, but due to backwards compatibility is
                      allowed to be empty. Instances of this type with an empty value here are
                      almost certainly wrong.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              state:
                description: State describes the state of StorageConsumer
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: StorageConsumer
    listKind: StorageConsumerList
    plural: storageconsumers
    singular: storageconsumer
  conditions:
  - lastTransitionTime: "2025-10-27T12:43:45Z"
    message: no conflicts found
    reason: NoConflicts
    status: "True"
    type: NamesAccepted
  - lastTransitionTime: "2025-10-27T12:43:45Z"
    message: the initial names have been accepted
    reason: InitialNamesAccepted
    status: "True"
    type: Established
  storedVersions:
  - v1alpha1
