apiVersion: operators.coreos.com/v1alpha1
kind: ClusterServiceVersion
metadata:
  name: local-storage-operator.v4.8.0
  namespace: placeholder
  annotations:
    alm-examples: |-
      [
        {
          "apiVersion": "local.storage.openshift.io/v1",
          "kind": "LocalVolume",
          "metadata": {
            "name": "example"
          },
          "spec": {
            "storageClassDevices": [
              {
                "devicePaths": [
                  "/dev/disk/by-id/ata-crucial"
                ],
                "fsType": "ext4",
                "storageClassName": "foobar",
                "volumeMode": "Filesystem"
              }
            ]
          }
        },
        {
          "apiVersion": "local.storage.openshift.io/v1alpha1",
          "kind": "LocalVolumeSet",
          "metadata": {
            "name": "example-localvolumeset"
          },
          "spec": {
            "deviceInclusionSpec": {
              "deviceMechanicalProperties": [
                "Rotational",
                "NonRotational"
              ],
              "deviceTypes": [
                "RawDisk"
              ],
              "maxSize": "100G",
              "minSize": "10G"
            },
            "maxDeviceCount": 10,
            "nodeSelector": {
              "nodeSelectorTerms": [
                {
                  "matchExpressions": [
                    {
                      "key": "kubernetes.io/hostname",
                      "operator": "In",
                      "values": [
                        "worker-0",
                        "worker-1"
                      ]
                    }
                  ]
                }
              ]
            },
            "storageClassName": "example-storageclass",
            "volumeMode": "Block"
          }
        },
        {
          "apiVersion": "local.storage.openshift.io/v1alpha1",
          "kind": "LocalVolumeDiscovery",
          "metadata": {
            "name": "auto-discover-devices"
          },
          "spec": {
            "nodeSelector": {
              "nodeSelectorTerms": [
                {
                  "matchExpressions": [
                    {
                      "key": "kubernetes.io/hostname",
                      "operator": "In",
                      "values": [
                        "worker-0",
                        "worker-1"
                      ]
                    }
                  ]
                }
              ]
            }
          }
        }
      ]
    categories: Storage
    "operatorframework.io/suggested-namespace": openshift-local-storage
    capabilities: Full Lifecycle
    containerImage: quay.io/openshift/origin-local-storage-operator:latest
    support: Red Hat
    repository: https://github.com/openshift/local-storage-operator
    createdAt: "2019-08-14T00:00:00Z"
    description: >
      Configure and use local storage volumes in kubernetes and OpenShift.
      OpenShift 4.2 and above is only supported OpenShift versions.
    olm.skipRange: ">=4.3.0 <4.8.0"
    operators.operatorframework.io/internal-objects: '["localvolumediscoveryresults.local.storage.openshift.io"]'
    # This annotation injection is a workaround for BZ-1950047, since the associated
    # annotation in spec.install.spec.deployments.template.metadata is presently ignored.
    # TODO: remove the next line after BZ-1950047 is resolved.
    target.workload.openshift.io/management: '{"effect": "PreferredDuringScheduling"}'
  labels:
    operator-metering: "true"
    "operatorframework.io/arch.amd64": supported
    "operatorframework.io/arch.ppc64le": supported
    "operatorframework.io/arch.s390x": supported
spec:
  displayName: Local Storage
  description: Local Storage Operator
  keywords:
    - storage
    - local storage
  links:
    - name: Documentation
      url: https://github.com/openshift/local-storage-operator/tree/master/docs
    - name: Source Repository
      url: https://github.com/openshift/local-storage-operator
  version: 4.8.0
  maturity: stable
  maintainers:
    - email: aos-storage-staff@redhat.com
      name: Red Hat
  minKubeVersion: 1.14.0
  provider:
    name: Red Hat
  labels:
    alm-owner-metering: local-storage-operator
    alm-status-descriptors: local-storage-operator.v4.8.0
  selector:
    matchLabels:
      alm-owner-metering: local-storage-operator
  installModes:
  - type: OwnNamespace
    supported: true
  - type: SingleNamespace
    supported: true
  - type: MultiNamespace
    supported: false
  - type: AllNamespaces
    supported: false
  install:
    strategy: deployment
    spec:
      permissions:
        - rules:
          - apiGroups:
            - local.storage.openshift.io
            resources:
            - "*"
            verbs:
            - "*"
          - apiGroups:
            - ""
            resources:
            - pods
            - services
            - services/finalizers
            - endpoints
            - persistentvolumeclaims
            - events
            - configmaps
            - secrets
            verbs:
            - "*"
          - apiGroups:
            - apps
            resources:
            - deployments
            - daemonsets
            - replicasets
            - statefulsets
            verbs:
            - "*"
          - apiGroups:
            - events.k8s.io
            resources:
            - events
            verbs:
            - "*"
          - apiGroups:
            - monitoring.coreos.com
            resources:
            - servicemonitors
            verbs:
            - get
            - list
            - watch
            - create
          - apiGroups:
            - apps
            resourceNames:
            - local-storage-operator
            resources:
            - deployments/finalizers
            verbs:
            - update
          serviceAccountName: local-storage-operator
        - rules:
          - apiGroups:
            - local.storage.openshift.io
            resources:
            - "*"
            verbs:
            - get
            - list
            - watch
            - create
            - update
          serviceAccountName: local-storage-admin
      clusterPermissions:
        - rules:
          - apiGroups:
            - storage.k8s.io
            resources:
            - storageclasses
            verbs:
            - "*"
          - apiGroups:
            - ""
            resources:
            - persistentvolumeclaims
            - events
            verbs:
              - "*"
          - apiGroups:
            - events.k8s.io
            resources:
            - events
            verbs:
            - "*"
          - apiGroups:
            - ""
            resources:
            - nodes
            verbs:
            - get
            - list
            - watch
          - apiGroups:
            - ""
            resources:
            - persistentvolumes
            verbs:
            - get
            - list
            - watch
            - create
            - delete
          serviceAccountName: local-storage-operator
        - rules:
          - apiGroups:
            - security.openshift.io
            resources:
            - securitycontextconstraints
            verbs:
            - use
            resourceNames:
            - privileged
          - apiGroups:
            - ""
            resources:
            - nodes
            verbs:
            - list
            - get
            - watch
          - apiGroups:
            - ""
            - storage.k8s.io
            resources:
            - configmaps
            - storageclasses
            - persistentvolumeclaims
            - persistentvolumes
            verbs:
            - "*"
          - apiGroups:
            - ""
            - events.k8s.io
            resources:
            - events
            verbs:
            - get
            - list
            - watch
            - create
            - patch
            - update
          serviceAccountName: local-storage-admin
      deployments:
        - name: local-storage-operator
          spec:
            replicas: 1
            selector:
              matchLabels:
                name: local-storage-operator
            template:
              metadata:
                annotations:
                  target.workload.openshift.io/management: '{"effect": "PreferredDuringScheduling"}'
                labels:
                  name: local-storage-operator
              spec:
                serviceAccountName: local-storage-operator
                containers:
                  - name: local-storage-operator
                    image: quay.io/openshift/origin-local-storage-operator:latest
                    imagePullPolicy: IfNotPresent
                    ports:
                    - containerPort: 60000
                      name: metrics
                    command:
                    - local-storage-operator
                    env:
                      - name: WATCH_NAMESPACE
                        valueFrom:
                          fieldRef:
                            fieldPath: metadata.namespace
                      - name: POD_NAME
                        valueFrom:
                          fieldRef:
                            fieldPath: metadata.name
                      - name: OPERATOR_NAME
                        value: "local-storage-operator"
                      - name: PROVISIONER_IMAGE
                        value: quay.io/openshift/origin-local-storage-static-provisioner:latest
                      - name: DISKMAKER_IMAGE
                        value: quay.io/openshift/origin-local-storage-diskmaker:latest
  customresourcedefinitions:
    owned:
      - displayName: Local Volume
        group: local.storage.openshift.io
        kind: LocalVolume
        name: localvolumes.local.storage.openshift.io
        description: Manage local storage volumes for OpenShift
        version: v1
        specDescriptors:
          - description: User requested management state of this object
            displayName: Requested management state
            path: managementState
          - description: Log level of local volume diskmaker and provisioner for this object
            displayName: LogLevel
            path: logLevel
          - description: Selected nodes for local storage
            displayName: NodeSelector
            path: nodeSelector
            x-descriptors:
              - 'urn:alm:descriptor:com.tectonic.ui:selector'
          - description: StorageClass devices configured by this object
            displayName: StorageClassDevices
            path: storageClassDevices
        statusDescriptors:
          - description: Last generation of this object
            displayName: ObservedGeneration
            path: observedGeneration
          - description: Current management state of this object
            displayName: Operator management state
            path: managementState
          - description: Last known condition of this object
            displayName: Conditions
            path: conditions
            x-descriptors:
              - 'urn:alm:descriptor:io.kubernetes.conditions'
      - displayName: Local Volume Set
        group: local.storage.openshift.io
        kind: LocalVolumeSet
        name: localvolumesets.local.storage.openshift.io
        description: A Local Volume set allows you to filter a set of storage volumes, group them and create a dedicated storage class to consume storage from the set of volumes.
        version: v1alpha1
        specDescriptors:
          - description: Selected nodes for local storage
            displayName: NodeSelector
            path: nodeSelector
            x-descriptors:
              - 'urn:alm:descriptor:com.tectonic.ui:selector'
          - description: StorageClassName to use for set of matched devices
            displayName: StorageClassName
            path: storageClassName
          - description: VolumeMode determines whether the PV created is Block or Filesystem. By default it will be block
            displayName:  VolumeMode
            path: volumeMode
          - description: FSType type to create when volumeMode is Filesystem
            displayName: FSType
            path: fsType
          - description: List of tolerations to pass to the discovery daemons
            displayName: Tolerations
            path: tolerations
            x-descriptors:
              - urn:alm:descriptor:io.kubernetes:Tolerations
          - description: Filters for including a device in the device discovery
            displayName: deviceInclusionSpec
            path: deviceInclusionSpec
        statusDescriptors:
          - description: Last generation of this object
            displayName: ObservedGeneration
            path: observedGeneration
          - description: Total devices over which the PVs has been provisioned
            displayName: TotalProvisionedDeviceCount
            path: totalProvisionedDeviceCount
          - description: Last known condition of this object
            displayName: Conditions
            path: conditions
            x-descriptors:
              - 'urn:alm:descriptor:io.kubernetes.conditions'
      - displayName: Local Volume Discovery
        group: local.storage.openshift.io
        kind: LocalVolumeDiscovery
        name: localvolumediscoveries.local.storage.openshift.io
        description: Discover list of potentially usable disks on the chosen set of nodes
        version: v1alpha1
        specDescriptors:
          - description: Selected nodes for discovery
            displayName: NodeSelector
            path: nodeSelector
            x-descriptors:
              - 'urn:alm:descriptor:com.tectonic.ui:selector'
          - description: List of tolerations to pass to the discovery daemons
            displayName: Tolerations
            path: tolerations
            x-descriptors:
              - urn:alm:descriptor:io.kubernetes:Tolerations
        statusDescriptors:
          - description: Current phase of the discovery
            displayName: Phase
            path: phase
          - description: Last generation of this object
            displayName: ObservedGeneration
            path: observedGeneration
          - description: Last known condition of this object
            displayName: Conditions
            path: conditions
            x-descriptors:
              - 'urn:alm:descriptor:io.kubernetes.conditions'
      - displayName: Local Volume Discovery Result
        group: local.storage.openshift.io
        kind: LocalVolumeDiscoveryResult
        name: localvolumediscoveryresults.local.storage.openshift.io
        description: Disc inventory of available disks from selected nodes
        version: v1alpha1
        specDescriptors:
          - description: Node on which the devices are discovered
            displayName: NodeName
            path: nodeName
        statusDescriptors:
          - description: DiscoveredTimeStamp is the last timestamp when the list of discovered devices was updated
            displayName: DiscoveredTimeStamp
            path: discoveredTimeStamp
          - description: DiscoveredDevices contains the list of devices discovered on the node
            displayName: DiscoveredDevices
            path: discoveredDevices
