---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.12.1
    operatorframework.io/installed-alongside-d8b38aeca10346cc: openshift-local-storage/local-storage-operator.v4.19.0-202510142112
  creationTimestamp: "2025-10-27T12:41:06Z"
  generation: 1
  labels:
    olm.managed: "true"
    operators.coreos.com/local-storage-operator.openshift-local-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-d8b38aeca10346cc: {}
        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:41:06Z"
  - 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:41:06Z"
  - apiVersion: apiextensions.k8s.io/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:labels:
          f:operators.coreos.com/local-storage-operator.openshift-local-storage: {}
    manager: olm
    operation: Update
    time: "2025-10-27T12:41:18Z"
  name: localvolumes.local.storage.openshift.io
  resourceVersion: "52325"
  uid: be9fa9c1-4e88-4aef-9160-7eb9273da62a
spec:
  conversion:
    strategy: None
  group: local.storage.openshift.io
  names:
    kind: LocalVolume
    listKind: LocalVolumeList
    plural: localvolumes
    singular: localvolume
  scope: Namespaced
  versions:
  - name: v1
    schema:
      openAPIV3Schema:
        description: LocalVolume is the Schema for the localvolumes 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: LocalVolumeSpec defines the desired state of LocalVolume
            properties:
              logLevel:
                description: logLevel is an intent based logging for an overall component.  It
                  does not give fine grained control, but it is a simple way to manage
                  coarse grained logging choices that operators have to interpret
                  for their operands.
                enum:
                - ""
                - Normal
                - Debug
                - Trace
                - TraceAll
                type: string
              managementState:
                description: managementState indicates whether and how the operator
                  should manage the component
                pattern: ^(Managed|Unmanaged|Force|Removed)$
                type: string
              nodeSelector:
                description: Nodes on which the provisoner must run
                properties:
                  nodeSelectorTerms:
                    description: Required. A list of node selector terms. The terms
                      are ORed.
                    items:
                      description: A null or empty node selector term matches no objects.
                        The requirements of them are ANDed. The TopologySelectorTerm
                        type implements a subset of the NodeSelectorTerm.
                      properties:
                        matchExpressions:
                          description: A list of node selector requirements by node's
                            labels.
                          items:
                            description: A node selector requirement is a selector
                              that contains values, a key, and an operator that relates
                              the key and values.
                            properties:
                              key:
                                description: The label key that the selector applies
                                  to.
                                type: string
                              operator:
                                description: Represents a key's relationship to a
                                  set of values. Valid operators are In, NotIn, Exists,
                                  DoesNotExist. Gt, and Lt.
                                type: string
                              values:
                                description: 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. If the operator is Gt or Lt,
                                  the values array must have a single element, which
                                  will be interpreted as an integer. This array is
                                  replaced during a strategic merge patch.
                                items:
                                  type: string
                                type: array
                            required:
                            - key
                            - operator
                            type: object
                          type: array
                        matchFields:
                          description: A list of node selector requirements by node's
                            fields.
                          items:
                            description: A node selector requirement is a selector
                              that contains values, a key, and an operator that relates
                              the key and values.
                            properties:
                              key:
                                description: The label key that the selector applies
                                  to.
                                type: string
                              operator:
                                description: Represents a key's relationship to a
                                  set of values. Valid operators are In, NotIn, Exists,
                                  DoesNotExist. Gt, and Lt.
                                type: string
                              values:
                                description: 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. If the operator is Gt or Lt,
                                  the values array must have a single element, which
                                  will be interpreted as an integer. This array is
                                  replaced during a strategic merge patch.
                                items:
                                  type: string
                                type: array
                            required:
                            - key
                            - operator
                            type: object
                          type: array
                      type: object
                      x-kubernetes-map-type: atomic
                    type: array
                required:
                - nodeSelectorTerms
                type: object
                x-kubernetes-map-type: atomic
              storageClassDevices:
                description: List of storage class and devices they can match
                items:
                  description: StorageClassDevice returns device configuration
                  properties:
                    devicePaths:
                      description: A list of device paths which would be chosen for
                        local storage. For example - ["/dev/sda", "/dev/sdb", "/dev/disk/by-id/ata-crucial"]
                      items:
                        type: string
                      type: array
                    forceWipeDevicesAndDestroyAllData:
                      description: This option will destroy all leftover data on the
                        devices before they're used as PersistentVolumes. Use with
                        care.
                      type: boolean
                    fsType:
                      description: File system type
                      type: string
                    storageClassName:
                      description: StorageClass name to use for set of matched devices
                      type: string
                    volumeMode:
                      description: Volume mode. Raw or with file system
                      type: string
                  required:
                  - storageClassName
                  type: object
                type: array
              tolerations:
                description: If specified, a list of tolerations to pass to the diskmaker
                  and provisioner DaemonSets.
                items:
                  description: The pod this Toleration is attached to tolerates any
                    taint that matches the triple <key,value,effect> using the matching
                    operator <operator>.
                  properties:
                    effect:
                      description: Effect indicates the taint effect to match. Empty
                        means match all taint effects. When specified, allowed values
                        are NoSchedule, PreferNoSchedule and NoExecute.
                      type: string
                    key:
                      description: Key is the taint key that the toleration applies
                        to. Empty means match all taint keys. If the key is empty,
                        operator must be Exists; this combination means to match all
                        values and all keys.
                      type: string
                    operator:
                      description: Operator represents a key's relationship to the
                        value. Valid operators are Exists and Equal. Defaults to Equal.
                        Exists is equivalent to wildcard for value, so that a pod
                        can tolerate all taints of a particular category.
                      type: string
                    tolerationSeconds:
                      description: TolerationSeconds represents the period of time
                        the toleration (which must be of effect NoExecute, otherwise
                        this field is ignored) tolerates the taint. By default, it
                        is not set, which means tolerate the taint forever (do not
                        evict). Zero and negative values will be treated as 0 (evict
                        immediately) by the system.
                      format: int64
                      type: integer
                    value:
                      description: Value is the taint value the toleration matches
                        to. If the operator is Exists, the value should be empty,
                        otherwise just a regular string.
                      type: string
                  type: object
                type: array
            type: object
          status:
            description: LocalVolumeStatus defines the observed state of LocalVolume
            properties:
              conditions:
                description: Conditions is a list of conditions and their status.
                items:
                  description: OperatorCondition is just the standard condition fields.
                  properties:
                    lastTransitionTime:
                      format: date-time
                      type: string
                    message:
                      type: string
                    reason:
                      type: string
                    status:
                      type: string
                    type:
                      type: string
                  required:
                  - type
                  type: object
                type: array
              generations:
                description: generations are used to determine when an item needs
                  to be reconciled or has changed in a way that needs a reaction.
                items:
                  description: GenerationStatus keeps track of the generation for
                    a given resource so that decisions about forced updates can be
                    made.
                  properties:
                    group:
                      description: group is the group of the thing you're tracking
                      type: string
                    hash:
                      description: hash is an optional field set for resources without
                        generation that are content sensitive like secrets and configmaps
                      type: string
                    lastGeneration:
                      description: lastGeneration is the last generation of the workload
                        controller involved
                      format: int64
                      type: integer
                    name:
                      description: name is the name of the thing you're tracking
                      type: string
                    namespace:
                      description: namespace is where the thing you're tracking is
                      type: string
                    resource:
                      description: resource is the resource type of the thing you're
                        tracking
                      type: string
                  type: object
                type: array
              managementState:
                description: state indicates what the operator has observed to be
                  its current operational status.
                pattern: ^(Managed|Unmanaged|Force|Removed)$
                type: string
              observedGeneration:
                description: ObservedGeneration is the last generation of this object
                  that the operator has acted on.
                format: int64
                type: integer
              readyReplicas:
                description: readyReplicas indicates how many replicas are ready and
                  at the desired state
                format: int32
                type: integer
            required:
            - readyReplicas
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: LocalVolume
    listKind: LocalVolumeList
    plural: localvolumes
    singular: localvolume
  conditions:
  - lastTransitionTime: "2025-10-27T12:41:06Z"
    message: no conflicts found
    reason: NoConflicts
    status: "True"
    type: NamesAccepted
  - lastTransitionTime: "2025-10-27T12:41:06Z"
    message: the initial names have been accepted
    reason: InitialNamesAccepted
    status: "True"
    type: Established
  storedVersions:
  - v1
