
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.5.0
  creationTimestamp: null
  name: blockdevices.openebs.io
spec:
  group: openebs.io
  names:
    kind: BlockDevice
    listKind: BlockDeviceList
    plural: blockdevices
    shortNames:
    - bd
    singular: blockdevice
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.nodeAttributes.nodeName
      name: NodeName
      type: string
    - jsonPath: .spec.path
      name: Path
      priority: 1
      type: string
    - jsonPath: .spec.filesystem.fsType
      name: FSType
      priority: 1
      type: string
    - jsonPath: .spec.capacity.storage
      name: Size
      type: string
    - jsonPath: .status.claimState
      name: ClaimState
      type: string
    - jsonPath: .status.state
      name: Status
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: BlockDevice is the Schema for the blockdevices 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: DeviceSpec defines the properties and runtime status of a BlockDevice
            properties:
              aggregateDevice:
                description: AggregateDevice was intended to store the hierarchical information in cases of LVM. However this is currently not implemented and may need to be re-looked into for better design. To be deprecated
                type: string
              capacity:
                description: Capacity
                properties:
                  logicalSectorSize:
                    description: LogicalSectorSize is blockdevice logical-sector size in bytes
                    format: int32
                    type: integer
                  physicalSectorSize:
                    description: PhysicalSectorSize is blockdevice physical-Sector size in bytes
                    format: int32
                    type: integer
                  storage:
                    description: Storage is the blockdevice capacity in bytes
                    format: int64
                    type: integer
                required:
                - storage
                type: object
              claimRef:
                description: ClaimRef is the reference to the BDC which has claimed this BD
                properties:
                  apiVersion:
                    description: API version of the referent.
                    type: string
                  fieldPath:
                    description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.'
                    type: string
                  kind:
                    description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                    type: string
                  name:
                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                  namespace:
                    description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                    type: string
                  resourceVersion:
                    description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                    type: string
                  uid:
                    description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                    type: string
                type: object
              details:
                description: Details contain static attributes of BD like model,serial, and so forth
                properties:
                  compliance:
                    description: Compliance is standards/specifications version implemented by device firmware  such as SPC-1, SPC-2, etc
                    type: string
                  deviceType:
                    description: DeviceType represents the type of device like sparse, disk, partition, lvm, crypt
                    enum:
                    - disk
                    - partition
                    - sparse
                    - loop
                    - lvm
                    - crypt
                    - dm
                    - mpath
                    type: string
                  driveType:
                    description: DriveType is the type of backing drive, HDD/SSD
                    enum:
                    - HDD
                    - SSD
                    - Unknown
                    - ""
                    type: string
                  firmwareRevision:
                    description: FirmwareRevision is the disk firmware revision
                    type: string
                  hardwareSectorSize:
                    description: HardwareSectorSize is the hardware sector size in bytes
                    format: int32
                    type: integer
                  logicalBlockSize:
                    description: LogicalBlockSize is the logical block size in bytes reported by /sys/class/block/sda/queue/logical_block_size
                    format: int32
                    type: integer
                  model:
                    description: Model is model of disk
                    type: string
                  physicalBlockSize:
                    description: PhysicalBlockSize is the physical block size in bytes reported by /sys/class/block/sda/queue/physical_block_size
                    format: int32
                    type: integer
                  serial:
                    description: Serial is serial number of disk
                    type: string
                  vendor:
                    description: Vendor is vendor of disk
                    type: string
                type: object
              devlinks:
                description: DevLinks contains soft links of a block device like /dev/by-id/... /dev/by-uuid/...
                items:
                  description: DeviceDevLink holds the mapping between type and links like by-id type or by-path type link
                  properties:
                    kind:
                      description: Kind is the type of link like by-id or by-path.
                      enum:
                      - by-id
                      - by-path
                      type: string
                    links:
                      description: Links are the soft links
                      items:
                        type: string
                      type: array
                  type: object
                type: array
              filesystem:
                description: FileSystem contains mountpoint and filesystem type
                properties:
                  fsType:
                    description: Type represents the FileSystem type of the block device
                    type: string
                  mountPoint:
                    description: MountPoint represents the mountpoint of the block device.
                    type: string
                type: object
              nodeAttributes:
                description: NodeAttributes has the details of the node on which BD is attached
                properties:
                  nodeName:
                    description: NodeName is the name of the Kubernetes node resource on which the device is attached
                    type: string
                type: object
              parentDevice:
                description: "ParentDevice was intended to store the UUID of the parent Block Device as is the case for partitioned block devices. \n For example: /dev/sda is the parent for /dev/sda1 To be deprecated"
                type: string
              partitioned:
                description: Partitioned represents if BlockDevice has partitions or not (Yes/No) Currently always default to No. To be deprecated
                enum:
                - "Yes"
                - "No"
                type: string
              path:
                description: Path contain devpath (e.g. /dev/sdb)
                type: string
            required:
            - capacity
            - devlinks
            - nodeAttributes
            - path
            type: object
          status:
            description: DeviceStatus defines the observed state of BlockDevice
            properties:
              claimState:
                description: ClaimState represents the claim state of the block device
                enum:
                - Claimed
                - Unclaimed
                - Released
                type: string
              state:
                description: State is the current state of the blockdevice (Active/Inactive/Unknown)
                enum:
                - Active
                - Inactive
                - Unknown
                type: string
            required:
            - claimState
            - state
            type: object
        type: object
    served: true
    storage: true
    subresources: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
