

##############################################
###########                       ############
###########   ZFSVolume CRD       ############
###########                       ############
##############################################

# ZFSVolume CRD is autogenerated via `make manifests` command.
# Do the modification in the code and run the `make manifests` command
# to generate the CRD definition

---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.2.8
  creationTimestamp: null
  name: zfsvolumes.zfs.openebs.io
spec:
  additionalPrinterColumns:
  - JSONPath: .spec.poolName
    description: ZFS Pool where the volume is created
    name: ZPool
    type: string
  - JSONPath: .spec.ownerNodeID
    description: Node where the volume is created
    name: Node
    type: string
  - JSONPath: .spec.capacity
    description: Size of the volume
    name: Size
    type: string
  - JSONPath: .spec.volblocksize
    description: volblocksize of volume
    name: volblocksize
    type: string
  - JSONPath: .spec.recordsize
    description: recordsize of created zfs dataset
    name: recordsize
    type: string
  - JSONPath: .spec.fsType
    description: filesystem created on the volume
    name: Filesystem
    type: string
  - JSONPath: .status.creationTime
    description: Timestamp when the volume has been created.
    name: CreationTime
    type: date
  - JSONPath: .metadata.creationTimestamp
    name: Age
    type: date
  group: zfs.openebs.io
  names:
    kind: ZFSVolume
    listKind: ZFSVolumeList
    plural: zfsvolumes
    shortNames:
    - zfsvol
    - zv
    singular: zfsvolume
  preserveUnknownFields: false
  scope: Namespaced
  subresources: {}
  validation:
    openAPIV3Schema:
      description: ZFSVolume represents a ZFS based volume
      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/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/api-conventions.md#types-kinds'
          type: string
        metadata:
          type: object
        spec:
          description: VolumeInfo defines ZFS volume parameters for all modes in which
            ZFS volumes can be created like - ZFS volume with filesystem, ZFS Volume
            exposed as zfs or ZFS volume exposed as raw block device. Some of the
            parameters can be only set during creation time (as specified in the details
            of the parameter), and a few are editable. In case of Cloned volumes,
            the parameters are assigned the same values as the source volume.
          properties:
            capacity:
              description: Capacity of the volume
              minLength: 1
              type: string
            compression:
              description: 'Compression specifies the block-level compression algorithm
                to be applied to the ZFS Volume. The value "on" indicates ZFS to use
                the default compression algorithm. The default compression algorithm
                used by ZFS will be either lzjb or, if the lz4_compress feature is
                enabled, lz4. Compression property can be edited after the volume
                has been created. The change will only be applied to the newly-written
                data. For instance, if the Volume was created with "off" and the next
                day the compression was modified to "on", the data written prior to
                setting "on" will not be compressed. Default Value: off.'
              pattern: ^(on|off|lzjb|gzip|gzip-[1-9]|zle|lz4)$
              type: string
            dedup:
              description: 'Deduplication is the process for removing redundant data
                at the block level, reducing the total amount of data stored. If a
                file system has the dedup property enabled, duplicate data blocks
                are removed synchronously. The result is that only unique data is
                stored and common components are shared among files. Deduplication
                can consume significant processing power (CPU) and memory as well
                as generate additional disk IO. Before creating a pool with deduplication
                enabled, ensure that you have planned your hardware requirements appropriately
                and implemented appropriate recovery practices, such as regular backups.
                As an alternative to deduplication consider using compression=lz4,
                as a less resource-intensive alternative. should be enabled on the
                zvol. Dedup property can be edited after the volume has been created.
                Default Value: off.'
              enum:
              - "on"
              - "off"
              type: string
            encryption:
              description: 'Enabling the encryption feature allows for the creation
                of encrypted filesystems and volumes. ZFS will encrypt file and zvol
                data, file attributes, ACLs, permission bits, directory listings,
                FUID mappings, and userused / groupused data. ZFS will not encrypt
                metadata related to the pool structure, including dataset and snapshot
                names, dataset hierarchy, properties, file size, file holes, and deduplication
                tables (though the deduplicated data itself is encrypted). Default
                Value: off.'
              pattern: ^(on|off|aes-128-[c,g]cm|aes-192-[c,g]cm|aes-256-[c,g]cm)$
              type: string
            fsType:
              description: 'FsType specifies filesystem type for the zfs volume/dataset.
                If FsType is provided as "zfs", then the driver will create a ZFS
                dataset, formatting is not required as underlying filesystem is ZFS
                anyway. If FsType is ext2, ext3, ext4 or xfs, then the driver will
                create a ZVOL and format the volume accordingly. FsType can not be
                modified once volume has been provisioned. Default Value: ext4.'
              type: string
            keyformat:
              description: KeyFormat specifies format of the encryption key The supported
                KeyFormats are passphrase, raw, hex.
              enum:
              - passphrase
              - raw
              - hex
              type: string
            keylocation:
              description: KeyLocation is the location of key for the encryption
              type: string
            ownerNodeID:
              description: OwnerNodeID is the Node ID where the ZPOOL is running which
                is where the volume has been provisioned. OwnerNodeID can not be edited
                after the volume has been provisioned.
              minLength: 1
              type: string
            poolName:
              description: poolName specifies the name of the pool where the volume
                has been created. PoolName can not be edited after the volume has
                been provisioned.
              minLength: 1
              type: string
            recordsize:
              description: 'Specifies a suggested block size for files in the file
                system. The size specified must be a power of two greater than or
                equal to 512 and less than or equal to 128 Kbytes. RecordSize property
                can be edited after the volume has been created. Changing the file
                system''s recordsize affects only files created afterward; existing
                files are unaffected. Default Value: 128k.'
              minLength: 1
              type: string
            snapname:
              description: SnapName specifies the name of the snapshot where the volume
                has been cloned from. Snapname can not be edited after the volume
                has been provisioned.
              type: string
            thinProvision:
              description: 'ThinProvision describes whether space reservation for
                the source volume is required or not. The value "yes" indicates that
                volume should be thin provisioned and "no" means thick provisioning
                of the volume. If thinProvision is set to "yes" then volume can be
                provisioned even if the ZPOOL does not have the enough capacity. If
                thinProvision is set to "no" then volume can be provisioned only if
                the ZPOOL has enough capacity and capacity required by volume can
                be reserved. ThinProvision can not be modified once volume has been
                provisioned. Default Value: no.'
              enum:
              - "yes"
              - "no"
              type: string
            volblocksize:
              description: 'VolBlockSize specifies the block size for the zvol. The
                volsize can only be set to a multiple of volblocksize, and cannot
                be zero. VolBlockSize can not be edited after the volume has been
                provisioned. Default Value: 8k.'
              minLength: 1
              type: string
            volumeType:
              description: volumeType determines whether the volume is of type "DATASET"
                or "ZVOL". If fstype provided in the storageclass is "zfs", a volume
                of type dataset will be created. If "ext4", "ext3", "ext2" or "xfs"
                is mentioned as fstype in the storageclass, then a volume of type
                zvol will be created, which will be further formatted as the fstype
                provided in the storageclass. VolumeType can not be modified once
                volume has been provisioned.
              enum:
              - ZVOL
              - DATASET
              type: string
          required:
          - capacity
          - ownerNodeID
          - poolName
          - volumeType
          type: object
      required:
      - spec
      type: object
  version: v1alpha1
  versions:
  - name: v1alpha1
    served: true
    storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []


##############################################
###########                       ############
###########   ZFSSnapshot CRD     ############
###########                       ############
##############################################

# ZFSSnapshot CRD is autogenerated via `make manifests` command.
# Do the modification in the code and run the `make manifests` command
# to generate the CRD definition

---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.2.8
  creationTimestamp: null
  name: zfssnapshots.zfs.openebs.io
spec:
  group: zfs.openebs.io
  names:
    kind: ZFSSnapshot
    listKind: ZFSSnapshotList
    plural: zfssnapshots
    shortNames:
    - zfssnap
    singular: zfssnapshot
  preserveUnknownFields: false
  scope: Namespaced
  validation:
    openAPIV3Schema:
      description: ZFSSnapshot represents a ZFS Snapshot of the zfsvolume
      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/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/api-conventions.md#types-kinds'
          type: string
        metadata:
          type: object
        spec:
          description: VolumeInfo defines ZFS volume parameters for all modes in which
            ZFS volumes can be created like - ZFS volume with filesystem, ZFS Volume
            exposed as zfs or ZFS volume exposed as raw block device. Some of the
            parameters can be only set during creation time (as specified in the details
            of the parameter), and a few are editable. In case of Cloned volumes,
            the parameters are assigned the same values as the source volume.
          properties:
            capacity:
              description: Capacity of the volume
              minLength: 1
              type: string
            compression:
              description: 'Compression specifies the block-level compression algorithm
                to be applied to the ZFS Volume. The value "on" indicates ZFS to use
                the default compression algorithm. The default compression algorithm
                used by ZFS will be either lzjb or, if the lz4_compress feature is
                enabled, lz4. Compression property can be edited after the volume
                has been created. The change will only be applied to the newly-written
                data. For instance, if the Volume was created with "off" and the next
                day the compression was modified to "on", the data written prior to
                setting "on" will not be compressed. Default Value: off.'
              pattern: ^(on|off|lzjb|gzip|gzip-[1-9]|zle|lz4)$
              type: string
            dedup:
              description: 'Deduplication is the process for removing redundant data
                at the block level, reducing the total amount of data stored. If a
                file system has the dedup property enabled, duplicate data blocks
                are removed synchronously. The result is that only unique data is
                stored and common components are shared among files. Deduplication
                can consume significant processing power (CPU) and memory as well
                as generate additional disk IO. Before creating a pool with deduplication
                enabled, ensure that you have planned your hardware requirements appropriately
                and implemented appropriate recovery practices, such as regular backups.
                As an alternative to deduplication consider using compression=lz4,
                as a less resource-intensive alternative. should be enabled on the
                zvol. Dedup property can be edited after the volume has been created.
                Default Value: off.'
              enum:
              - "on"
              - "off"
              type: string
            encryption:
              description: 'Enabling the encryption feature allows for the creation
                of encrypted filesystems and volumes. ZFS will encrypt file and zvol
                data, file attributes, ACLs, permission bits, directory listings,
                FUID mappings, and userused / groupused data. ZFS will not encrypt
                metadata related to the pool structure, including dataset and snapshot
                names, dataset hierarchy, properties, file size, file holes, and deduplication
                tables (though the deduplicated data itself is encrypted). Default
                Value: off.'
              pattern: ^(on|off|aes-128-[c,g]cm|aes-192-[c,g]cm|aes-256-[c,g]cm)$
              type: string
            fsType:
              description: 'FsType specifies filesystem type for the zfs volume/dataset.
                If FsType is provided as "zfs", then the driver will create a ZFS
                dataset, formatting is not required as underlying filesystem is ZFS
                anyway. If FsType is ext2, ext3, ext4 or xfs, then the driver will
                create a ZVOL and format the volume accordingly. FsType can not be
                modified once volume has been provisioned. Default Value: ext4.'
              type: string
            keyformat:
              description: KeyFormat specifies format of the encryption key The supported
                KeyFormats are passphrase, raw, hex.
              enum:
              - passphrase
              - raw
              - hex
              type: string
            keylocation:
              description: KeyLocation is the location of key for the encryption
              type: string
            ownerNodeID:
              description: OwnerNodeID is the Node ID where the ZPOOL is running which
                is where the volume has been provisioned. OwnerNodeID can not be edited
                after the volume has been provisioned.
              minLength: 1
              type: string
            poolName:
              description: poolName specifies the name of the pool where the volume
                has been created. PoolName can not be edited after the volume has
                been provisioned.
              minLength: 1
              type: string
            recordsize:
              description: 'Specifies a suggested block size for files in the file
                system. The size specified must be a power of two greater than or
                equal to 512 and less than or equal to 128 Kbytes. RecordSize property
                can be edited after the volume has been created. Changing the file
                system''s recordsize affects only files created afterward; existing
                files are unaffected. Default Value: 128k.'
              minLength: 1
              type: string
            snapname:
              description: SnapName specifies the name of the snapshot where the volume
                has been cloned from. Snapname can not be edited after the volume
                has been provisioned.
              type: string
            thinProvision:
              description: 'ThinProvision describes whether space reservation for
                the source volume is required or not. The value "yes" indicates that
                volume should be thin provisioned and "no" means thick provisioning
                of the volume. If thinProvision is set to "yes" then volume can be
                provisioned even if the ZPOOL does not have the enough capacity. If
                thinProvision is set to "no" then volume can be provisioned only if
                the ZPOOL has enough capacity and capacity required by volume can
                be reserved. ThinProvision can not be modified once volume has been
                provisioned. Default Value: no.'
              enum:
              - "yes"
              - "no"
              type: string
            volblocksize:
              description: 'VolBlockSize specifies the block size for the zvol. The
                volsize can only be set to a multiple of volblocksize, and cannot
                be zero. VolBlockSize can not be edited after the volume has been
                provisioned. Default Value: 8k.'
              minLength: 1
              type: string
            volumeType:
              description: volumeType determines whether the volume is of type "DATASET"
                or "ZVOL". If fstype provided in the storageclass is "zfs", a volume
                of type dataset will be created. If "ext4", "ext3", "ext2" or "xfs"
                is mentioned as fstype in the storageclass, then a volume of type
                zvol will be created, which will be further formatted as the fstype
                provided in the storageclass. VolumeType can not be modified once
                volume has been provisioned.
              enum:
              - ZVOL
              - DATASET
              type: string
          required:
          - capacity
          - ownerNodeID
          - poolName
          - volumeType
          type: object
        status:
          properties:
            state:
              type: string
          type: object
      required:
      - spec
      - status
      type: object
  version: v1alpha1
  versions:
  - name: v1alpha1
    served: true
    storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
