github.com/alibaba/sealer@v0.8.6-0.20220430115802-37a2bdaa8173/applications/openebs/cstor/cstor-operator.yaml (about)

     1  # Create the OpenEBS namespace
     2  apiVersion: v1
     3  kind: Namespace
     4  metadata:
     5    name: openebs
     6  ---
     7  # Create Maya Service Account
     8  apiVersion: v1
     9  kind: ServiceAccount
    10  metadata:
    11    name: openebs-cstor-operator
    12    namespace: openebs
    13  ---
    14  # Define Role that allows operations on K8s pods/deployments
    15  kind: ClusterRole
    16  apiVersion: rbac.authorization.k8s.io/v1
    17  metadata:
    18    name: openebs-cstor-operator
    19  rules:
    20  - apiGroups: ["*"]
    21    resources: ["nodes", "nodes/proxy"]
    22    verbs: ["*"]
    23  - apiGroups: ["*"]
    24    resources: ["namespaces", "services", "pods", "deployments", "deployments/finalizers", "replicationcontrollers", "replicasets", "events", "endpoints", "configmaps", "secrets", "jobs", "cronjobs"]
    25    verbs: ["*"]
    26  - apiGroups: ["*"]
    27    resources: ["statefulsets", "daemonsets"]
    28    verbs: ["*"]
    29  - apiGroups: ["*"]
    30    resources: ["resourcequotas", "limitranges"]
    31    verbs: ["list", "watch"]
    32  - apiGroups: ["*"]
    33    resources: ["certificatesigningrequests"]
    34    verbs: ["list", "watch"]
    35  - apiGroups: ["*"]
    36    resources: ["storageclasses", "persistentvolumeclaims", "persistentvolumes"]
    37    verbs: ["*"]
    38  - apiGroups: ["apiextensions.k8s.io"]
    39    resources: ["customresourcedefinitions"]
    40    verbs: [ "get", "list", "create", "update", "delete", "patch"]
    41  - apiGroups: ["openebs.io"]
    42    resources: ["*"]
    43    verbs: ["*" ]
    44  - apiGroups: ["cstor.openebs.io"]
    45    resources: ["*"]
    46    verbs: ["*" ]
    47  - apiGroups: ["coordination.k8s.io"]
    48    resources: ["leases"]
    49    verbs: ["get", "watch", "list", "delete", "update", "create"]
    50  - apiGroups: ["admissionregistration.k8s.io"]
    51    resources: ["validatingwebhookconfigurations", "mutatingwebhookconfigurations"]
    52    verbs: ["get", "create", "list", "delete", "update", "patch"]
    53  - nonResourceURLs: ["/metrics"]
    54    verbs: ["get"]
    55  - apiGroups: ["*"]
    56    resources: ["upgradetasks", "migrationtasks"]
    57    verbs: ["*"]
    58  - apiGroups: ["*"]
    59    resources: ["poddisruptionbudgets"]
    60    verbs: ["get", "list", "create", "delete", "watch"]
    61  ---
    62  # Bind the Service Account with the Role Privileges.
    63  kind: ClusterRoleBinding
    64  apiVersion: rbac.authorization.k8s.io/v1
    65  metadata:
    66    name: openebs-cstor-operator
    67  subjects:
    68  - kind: ServiceAccount
    69    name: openebs-cstor-operator
    70    namespace: openebs
    71  roleRef:
    72    kind: ClusterRole
    73    name: openebs-cstor-operator
    74    apiGroup: rbac.authorization.k8s.io
    75  ---
    76  # Define Role that allows operations required for migration of snapshots
    77  kind: ClusterRole
    78  apiVersion: rbac.authorization.k8s.io/v1
    79  metadata:
    80    name: openebs-cstor-migration
    81  rules:
    82  - apiGroups: ["snapshot.storage.k8s.io"]
    83    resources: ["volumesnapshotclasses"]
    84    verbs: ["get", "list"]
    85  - apiGroups: ["snapshot.storage.k8s.io"]
    86    resources: ["volumesnapshotcontents"]
    87    verbs: ["create", "get", "list"]
    88  - apiGroups: ["snapshot.storage.k8s.io"]
    89    resources: ["volumesnapshots"]
    90    verbs: ["create", "get", "list"]
    91  ---
    92  kind: ClusterRoleBinding
    93  apiVersion: rbac.authorization.k8s.io/v1
    94  metadata:
    95    name: openebs-cstor-migration
    96  subjects:
    97  - kind: ServiceAccount
    98    name: openebs-cstor-operator
    99    namespace: openebs
   100  roleRef:
   101    kind: ClusterRole
   102    name: openebs-cstor-migration
   103    apiGroup: rbac.authorization.k8s.io
   104  ---
   105  # This manifest deploys the OpenEBS CStor and CSI control plane components,
   106  # with associated CRs & RBAC rules. This manifest has been verified
   107  # only with different linux flavours and linux distros
   108  #
   109  # For supporting a differnet OS other than the above,
   110  # 1) Get the list of shared object files required for iscsiadm binary in that OS version.
   111  # 2) Check which files are already present in the cstor-csi-driver container present in csi node pod.
   112  # 3) Mount the required missing files inside the container.
   113  #
   114  ####################################################
   115  ###########                             ############
   116  ###########  CSI Node and Driver CRDs   ############
   117  ###########                             ############
   118  ####################################################
   119  ---
   120  apiVersion: apiextensions.k8s.io/v1
   121  kind: CustomResourceDefinition
   122  metadata:
   123    annotations:
   124      controller-gen.kubebuilder.io/version: v0.4.0
   125    creationTimestamp: null
   126    name: cstorvolumeattachments.cstor.openebs.io
   127  spec:
   128    group: cstor.openebs.io
   129    names:
   130      kind: CStorVolumeAttachment
   131      listKind: CStorVolumeAttachmentList
   132      plural: cstorvolumeattachments
   133      shortNames:
   134      - cva
   135      singular: cstorvolumeattachment
   136    scope: Namespaced
   137    versions:
   138    - name: v1
   139      schema:
   140        openAPIV3Schema:
   141          description: CStorVolumeAttachment represents a CSI based volume
   142          properties:
   143            apiVersion:
   144              description: 'APIVersion defines the versioned schema of this representation
   145                of an object. Servers should convert recognized schemas to the latest
   146                internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
   147              type: string
   148            kind:
   149              description: 'Kind is a string value representing the REST resource this
   150                object represents. Servers may infer this from the endpoint the client
   151                submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
   152              type: string
   153            metadata:
   154              type: object
   155            spec:
   156              description: CStorVolumeAttachmentSpec is the spec for a CStorVolume resource
   157              properties:
   158                iscsi:
   159                  description: ISCSIInfo specific to ISCSI protocol, this is filled
   160                    only if the volume type is iSCSI
   161                  properties:
   162                    iqn:
   163                      description: Iqn of this volume
   164                      type: string
   165                    iscsiInterface:
   166                      description: IscsiInterface of this volume
   167                      type: string
   168                    lun:
   169                      description: 'Lun specify the lun number 0, 1.. on iSCSI Volume.
   170                        (default: 0)'
   171                      type: string
   172                    targetPortal:
   173                      description: TargetPortal holds the target portal of this volume
   174                      type: string
   175                  type: object
   176                volume:
   177                  description: Volume specific info
   178                  properties:
   179                    accessModes:
   180                      description: AccessMode of a volume will hold the access mode
   181                        of the volume
   182                      items:
   183                        type: string
   184                      type: array
   185                    accessType:
   186                      description: AccessType of a volume will indicate if the volume
   187                        will be used as a block device or mounted on a path
   188                      type: string
   189                    capacity:
   190                      description: Capacity of the volume
   191                      type: string
   192                    devicePath:
   193                      description: Device Path specifies the device path which is returned
   194                        when the iSCSI login is successful
   195                      type: string
   196                    fsType:
   197                      description: FSType of a volume will specify the format type -
   198                        ext4(default), xfs of PV
   199                      type: string
   200                    mountOptions:
   201                      description: MountOptions specifies the options with which mount
   202                        needs to be attempted
   203                      items:
   204                        type: string
   205                      type: array
   206                    name:
   207                      description: Name of the CSI volume
   208                      type: string
   209                    ownerNodeID:
   210                      description: OwnerNodeID is the Node ID which is also the owner
   211                        of this Volume
   212                      type: string
   213                    readOnly:
   214                      description: ReadOnly specifies if the volume needs to be mounted
   215                        in ReadOnly mode
   216                      type: boolean
   217                    stagingTargetPath:
   218                      description: StagingPath of the volume will hold the path on which
   219                        the volume is mounted on that node
   220                      type: string
   221                    targetPath:
   222                      description: TargetPath of the volume will hold the path on which
   223                        the volume is bind mounted on that node
   224                      type: string
   225                  required:
   226                  - name
   227                  - ownerNodeID
   228                  type: object
   229              required:
   230              - iscsi
   231              - volume
   232              type: object
   233            status:
   234              description: CStorVolumeAttachmentStatus status represents the current
   235                mount status of the volume
   236              type: string
   237          required:
   238          - spec
   239          type: object
   240      served: true
   241      storage: true
   242  status:
   243    acceptedNames:
   244      kind: ""
   245      plural: ""
   246    conditions: []
   247    storedVersions: []
   248  ---
   249  ##############################################
   250  ###########                       ############
   251  ###########   Snapshot CRDs       ############
   252  ###########                       ############
   253  ##############################################
   254  
   255  ---
   256  apiVersion: apiextensions.k8s.io/v1
   257  kind: CustomResourceDefinition
   258  metadata:
   259    annotations:
   260      controller-gen.kubebuilder.io/version: v0.4.0
   261      api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/419"
   262    creationTimestamp: null
   263    name: volumesnapshotclasses.snapshot.storage.k8s.io
   264  spec:
   265    group: snapshot.storage.k8s.io
   266    names:
   267      kind: VolumeSnapshotClass
   268      listKind: VolumeSnapshotClassList
   269      plural: volumesnapshotclasses
   270      singular: volumesnapshotclass
   271    scope: Cluster
   272    versions:
   273    - additionalPrinterColumns:
   274      - jsonPath: .driver
   275        name: Driver
   276        type: string
   277      - description: Determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted.
   278        jsonPath: .deletionPolicy
   279        name: DeletionPolicy
   280        type: string
   281      - jsonPath: .metadata.creationTimestamp
   282        name: Age
   283        type: date
   284      name: v1
   285      schema:
   286        openAPIV3Schema:
   287          description: VolumeSnapshotClass specifies parameters that a underlying storage system uses when creating a volume snapshot. A specific VolumeSnapshotClass is used by specifying its name in a VolumeSnapshot object. VolumeSnapshotClasses are non-namespaced
   288          properties:
   289            apiVersion:
   290              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'
   291              type: string
   292            deletionPolicy:
   293              description: deletionPolicy determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. Required.
   294              enum:
   295              - Delete
   296              - Retain
   297              type: string
   298            driver:
   299              description: driver is the name of the storage driver that handles this VolumeSnapshotClass. Required.
   300              type: string
   301            kind:
   302              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'
   303              type: string
   304            parameters:
   305              additionalProperties:
   306                type: string
   307              description: parameters is a key-value map with storage driver specific parameters for creating snapshots. These values are opaque to Kubernetes.
   308              type: object
   309          required:
   310          - deletionPolicy
   311          - driver
   312          type: object
   313      served: true
   314      storage: false
   315      subresources: {}
   316    - additionalPrinterColumns:
   317      - jsonPath: .driver
   318        name: Driver
   319        type: string
   320      - description: Determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted.
   321        jsonPath: .deletionPolicy
   322        name: DeletionPolicy
   323        type: string
   324      - jsonPath: .metadata.creationTimestamp
   325        name: Age
   326        type: date
   327      name: v1beta1
   328      schema:
   329        openAPIV3Schema:
   330          description: VolumeSnapshotClass specifies parameters that a underlying storage system uses when creating a volume snapshot. A specific VolumeSnapshotClass is used by specifying its name in a VolumeSnapshot object. VolumeSnapshotClasses are non-namespaced
   331          properties:
   332            apiVersion:
   333              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'
   334              type: string
   335            deletionPolicy:
   336              description: deletionPolicy determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. Required.
   337              enum:
   338              - Delete
   339              - Retain
   340              type: string
   341            driver:
   342              description: driver is the name of the storage driver that handles this VolumeSnapshotClass. Required.
   343              type: string
   344            kind:
   345              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'
   346              type: string
   347            parameters:
   348              additionalProperties:
   349                type: string
   350              description: parameters is a key-value map with storage driver specific parameters for creating snapshots. These values are opaque to Kubernetes.
   351              type: object
   352          required:
   353          - deletionPolicy
   354          - driver
   355          type: object
   356      served: true
   357      storage: true
   358      subresources: {}
   359  status:
   360    acceptedNames:
   361      kind: ""
   362      plural: ""
   363    conditions: []
   364    storedVersions: []
   365  ---
   366  
   367  apiVersion: apiextensions.k8s.io/v1
   368  kind: CustomResourceDefinition
   369  metadata:
   370    annotations:
   371      controller-gen.kubebuilder.io/version: v0.4.0
   372      api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/419"
   373    creationTimestamp: null
   374    name: volumesnapshotcontents.snapshot.storage.k8s.io
   375  spec:
   376    group: snapshot.storage.k8s.io
   377    names:
   378      kind: VolumeSnapshotContent
   379      listKind: VolumeSnapshotContentList
   380      plural: volumesnapshotcontents
   381      singular: volumesnapshotcontent
   382    scope: Cluster
   383    versions:
   384    - additionalPrinterColumns:
   385      - description: Indicates if the snapshot is ready to be used to restore a volume.
   386        jsonPath: .status.readyToUse
   387        name: ReadyToUse
   388        type: boolean
   389      - description: Represents the complete size of the snapshot in bytes
   390        jsonPath: .status.restoreSize
   391        name: RestoreSize
   392        type: integer
   393      - description: Determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted.
   394        jsonPath: .spec.deletionPolicy
   395        name: DeletionPolicy
   396        type: string
   397      - description: Name of the CSI driver used to create the physical snapshot on the underlying storage system.
   398        jsonPath: .spec.driver
   399        name: Driver
   400        type: string
   401      - description: Name of the VolumeSnapshotClass to which this snapshot belongs.
   402        jsonPath: .spec.volumeSnapshotClassName
   403        name: VolumeSnapshotClass
   404        type: string
   405      - description: Name of the VolumeSnapshot object to which this VolumeSnapshotContent object is bound.
   406        jsonPath: .spec.volumeSnapshotRef.name
   407        name: VolumeSnapshot
   408        type: string
   409      - jsonPath: .metadata.creationTimestamp
   410        name: Age
   411        type: date
   412      name: v1
   413      schema:
   414        openAPIV3Schema:
   415          description: VolumeSnapshotContent represents the actual "on-disk" snapshot object in the underlying storage system
   416          properties:
   417            apiVersion:
   418              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'
   419              type: string
   420            kind:
   421              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'
   422              type: string
   423            spec:
   424              description: spec defines properties of a VolumeSnapshotContent created by the underlying storage system. Required.
   425              properties:
   426                deletionPolicy:
   427                  description: deletionPolicy determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. For dynamically provisioned snapshots, this field will automatically be filled in by the CSI snapshotter sidecar with the "DeletionPolicy" field defined in the corresponding VolumeSnapshotClass. For pre-existing snapshots, users MUST specify this field when creating the  VolumeSnapshotContent object. Required.
   428                  enum:
   429                  - Delete
   430                  - Retain
   431                  type: string
   432                driver:
   433                  description: driver is the name of the CSI driver used to create the physical snapshot on the underlying storage system. This MUST be the same as the name returned by the CSI GetPluginName() call for that driver. Required.
   434                  type: string
   435                source:
   436                  description: source specifies whether the snapshot is (or should be) dynamically provisioned or already exists, and just requires a Kubernetes object representation. This field is immutable after creation. Required.
   437                  properties:
   438                    snapshotHandle:
   439                      description: snapshotHandle specifies the CSI "snapshot_id" of a pre-existing snapshot on the underlying storage system for which a Kubernetes object representation was (or should be) created. This field is immutable.
   440                      type: string
   441                    volumeHandle:
   442                      description: volumeHandle specifies the CSI "volume_id" of the volume from which a snapshot should be dynamically taken from. This field is immutable.
   443                      type: string
   444                  type: object
   445                  oneOf:
   446                  - required: ["snapshotHandle"]
   447                  - required: ["volumeHandle"]
   448                volumeSnapshotClassName:
   449                  description: name of the VolumeSnapshotClass from which this snapshot was (or will be) created. Note that after provisioning, the VolumeSnapshotClass may be deleted or recreated with different set of values, and as such, should not be referenced post-snapshot creation.
   450                  type: string
   451                volumeSnapshotRef:
   452                  description: volumeSnapshotRef specifies the VolumeSnapshot object to which this VolumeSnapshotContent object is bound. VolumeSnapshot.Spec.VolumeSnapshotContentName field must reference to this VolumeSnapshotContent's name for the bidirectional binding to be valid. For a pre-existing VolumeSnapshotContent object, name and namespace of the VolumeSnapshot object MUST be provided for binding to happen. This field is immutable after creation. Required.
   453                  properties:
   454                    apiVersion:
   455                      description: API version of the referent.
   456                      type: string
   457                    fieldPath:
   458                      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.'
   459                      type: string
   460                    kind:
   461                      description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
   462                      type: string
   463                    name:
   464                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
   465                      type: string
   466                    namespace:
   467                      description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
   468                      type: string
   469                    resourceVersion:
   470                      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'
   471                      type: string
   472                    uid:
   473                      description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
   474                      type: string
   475                  type: object
   476              required:
   477              - deletionPolicy
   478              - driver
   479              - source
   480              - volumeSnapshotRef
   481              type: object
   482            status:
   483              description: status represents the current information of a snapshot.
   484              properties:
   485                creationTime:
   486                  description: creationTime is the timestamp when the point-in-time snapshot is taken by the underlying storage system. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "creation_time" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "creation_time" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. If not specified, it indicates the creation time is unknown. The format of this field is a Unix nanoseconds time encoded as an int64. On Unix, the command `date +%s%N` returns the current time in nanoseconds since 1970-01-01 00:00:00 UTC.
   487                  format: int64
   488                  type: integer
   489                error:
   490                  description: error is the last observed error during snapshot creation, if any. Upon success after retry, this error field will be cleared.
   491                  properties:
   492                    message:
   493                      description: 'message is a string detailing the encountered error during snapshot creation if specified. NOTE: message may be logged, and it should not contain sensitive information.'
   494                      type: string
   495                    time:
   496                      description: time is the timestamp when the error was encountered.
   497                      format: date-time
   498                      type: string
   499                  type: object
   500                readyToUse:
   501                  description: readyToUse indicates if a snapshot is ready to be used to restore a volume. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "ready_to_use" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "ready_to_use" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, otherwise, this field will be set to "True". If not specified, it means the readiness of a snapshot is unknown.
   502                  type: boolean
   503                restoreSize:
   504                  description: restoreSize represents the complete size of the snapshot in bytes. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "size_bytes" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. When restoring a volume from this snapshot, the size of the volume MUST NOT be smaller than the restoreSize if it is specified, otherwise the restoration will fail. If not specified, it indicates that the size is unknown.
   505                  format: int64
   506                  minimum: 0
   507                  type: integer
   508                snapshotHandle:
   509                  description: snapshotHandle is the CSI "snapshot_id" of a snapshot on the underlying storage system. If not specified, it indicates that dynamic snapshot creation has either failed or it is still in progress.
   510                  type: string
   511              type: object
   512          required:
   513          - spec
   514          type: object
   515      served: true
   516      storage: false
   517      subresources:
   518        status: {}
   519    - additionalPrinterColumns:
   520      - description: Indicates if the snapshot is ready to be used to restore a volume.
   521        jsonPath: .status.readyToUse
   522        name: ReadyToUse
   523        type: boolean
   524      - description: Represents the complete size of the snapshot in bytes
   525        jsonPath: .status.restoreSize
   526        name: RestoreSize
   527        type: integer
   528      - description: Determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted.
   529        jsonPath: .spec.deletionPolicy
   530        name: DeletionPolicy
   531        type: string
   532      - description: Name of the CSI driver used to create the physical snapshot on the underlying storage system.
   533        jsonPath: .spec.driver
   534        name: Driver
   535        type: string
   536      - description: Name of the VolumeSnapshotClass to which this snapshot belongs.
   537        jsonPath: .spec.volumeSnapshotClassName
   538        name: VolumeSnapshotClass
   539        type: string
   540      - description: Name of the VolumeSnapshot object to which this VolumeSnapshotContent object is bound.
   541        jsonPath: .spec.volumeSnapshotRef.name
   542        name: VolumeSnapshot
   543        type: string
   544      - jsonPath: .metadata.creationTimestamp
   545        name: Age
   546        type: date
   547      name: v1beta1
   548      schema:
   549        openAPIV3Schema:
   550          description: VolumeSnapshotContent represents the actual "on-disk" snapshot object in the underlying storage system
   551          properties:
   552            apiVersion:
   553              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'
   554              type: string
   555            kind:
   556              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'
   557              type: string
   558            spec:
   559              description: spec defines properties of a VolumeSnapshotContent created by the underlying storage system. Required.
   560              properties:
   561                deletionPolicy:
   562                  description: deletionPolicy determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. For dynamically provisioned snapshots, this field will automatically be filled in by the CSI snapshotter sidecar with the "DeletionPolicy" field defined in the corresponding VolumeSnapshotClass. For pre-existing snapshots, users MUST specify this field when creating the  VolumeSnapshotContent object. Required.
   563                  enum:
   564                  - Delete
   565                  - Retain
   566                  type: string
   567                driver:
   568                  description: driver is the name of the CSI driver used to create the physical snapshot on the underlying storage system. This MUST be the same as the name returned by the CSI GetPluginName() call for that driver. Required.
   569                  type: string
   570                source:
   571                  description: source specifies whether the snapshot is (or should be) dynamically provisioned or already exists, and just requires a Kubernetes object representation. This field is immutable after creation. Required.
   572                  properties:
   573                    snapshotHandle:
   574                      description: snapshotHandle specifies the CSI "snapshot_id" of a pre-existing snapshot on the underlying storage system for which a Kubernetes object representation was (or should be) created. This field is immutable.
   575                      type: string
   576                    volumeHandle:
   577                      description: volumeHandle specifies the CSI "volume_id" of the volume from which a snapshot should be dynamically taken from. This field is immutable.
   578                      type: string
   579                  type: object
   580                volumeSnapshotClassName:
   581                  description: name of the VolumeSnapshotClass from which this snapshot was (or will be) created. Note that after provisioning, the VolumeSnapshotClass may be deleted or recreated with different set of values, and as such, should not be referenced post-snapshot creation.
   582                  type: string
   583                volumeSnapshotRef:
   584                  description: volumeSnapshotRef specifies the VolumeSnapshot object to which this VolumeSnapshotContent object is bound. VolumeSnapshot.Spec.VolumeSnapshotContentName field must reference to this VolumeSnapshotContent's name for the bidirectional binding to be valid. For a pre-existing VolumeSnapshotContent object, name and namespace of the VolumeSnapshot object MUST be provided for binding to happen. This field is immutable after creation. Required.
   585                  properties:
   586                    apiVersion:
   587                      description: API version of the referent.
   588                      type: string
   589                    fieldPath:
   590                      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.'
   591                      type: string
   592                    kind:
   593                      description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
   594                      type: string
   595                    name:
   596                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
   597                      type: string
   598                    namespace:
   599                      description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
   600                      type: string
   601                    resourceVersion:
   602                      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'
   603                      type: string
   604                    uid:
   605                      description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
   606                      type: string
   607                  type: object
   608              required:
   609              - deletionPolicy
   610              - driver
   611              - source
   612              - volumeSnapshotRef
   613              type: object
   614            status:
   615              description: status represents the current information of a snapshot.
   616              properties:
   617                creationTime:
   618                  description: creationTime is the timestamp when the point-in-time snapshot is taken by the underlying storage system. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "creation_time" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "creation_time" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. If not specified, it indicates the creation time is unknown. The format of this field is a Unix nanoseconds time encoded as an int64. On Unix, the command `date +%s%N` returns the current time in nanoseconds since 1970-01-01 00:00:00 UTC.
   619                  format: int64
   620                  type: integer
   621                error:
   622                  description: error is the last observed error during snapshot creation, if any. Upon success after retry, this error field will be cleared.
   623                  properties:
   624                    message:
   625                      description: 'message is a string detailing the encountered error during snapshot creation if specified. NOTE: message may be logged, and it should not contain sensitive information.'
   626                      type: string
   627                    time:
   628                      description: time is the timestamp when the error was encountered.
   629                      format: date-time
   630                      type: string
   631                  type: object
   632                readyToUse:
   633                  description: readyToUse indicates if a snapshot is ready to be used to restore a volume. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "ready_to_use" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "ready_to_use" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, otherwise, this field will be set to "True". If not specified, it means the readiness of a snapshot is unknown.
   634                  type: boolean
   635                restoreSize:
   636                  description: restoreSize represents the complete size of the snapshot in bytes. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "size_bytes" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. When restoring a volume from this snapshot, the size of the volume MUST NOT be smaller than the restoreSize if it is specified, otherwise the restoration will fail. If not specified, it indicates that the size is unknown.
   637                  format: int64
   638                  minimum: 0
   639                  type: integer
   640                snapshotHandle:
   641                  description: snapshotHandle is the CSI "snapshot_id" of a snapshot on the underlying storage system. If not specified, it indicates that dynamic snapshot creation has either failed or it is still in progress.
   642                  type: string
   643              type: object
   644          required:
   645          - spec
   646          type: object
   647      served: true
   648      storage: true
   649      subresources:
   650        status: {}
   651  status:
   652    acceptedNames:
   653      kind: ""
   654      plural: ""
   655    conditions: []
   656    storedVersions: []
   657  ---
   658  
   659  apiVersion: apiextensions.k8s.io/v1
   660  kind: CustomResourceDefinition
   661  metadata:
   662    annotations:
   663      controller-gen.kubebuilder.io/version: v0.4.0
   664      api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/419"
   665    creationTimestamp: null
   666    name: volumesnapshots.snapshot.storage.k8s.io
   667  spec:
   668    group: snapshot.storage.k8s.io
   669    names:
   670      kind: VolumeSnapshot
   671      listKind: VolumeSnapshotList
   672      plural: volumesnapshots
   673      singular: volumesnapshot
   674    scope: Namespaced
   675    versions:
   676    - additionalPrinterColumns:
   677      - description: Indicates if the snapshot is ready to be used to restore a volume.
   678        jsonPath: .status.readyToUse
   679        name: ReadyToUse
   680        type: boolean
   681      - description: If a new snapshot needs to be created, this contains the name of the source PVC from which this snapshot was (or will be) created.
   682        jsonPath: .spec.source.persistentVolumeClaimName
   683        name: SourcePVC
   684        type: string
   685      - description: If a snapshot already exists, this contains the name of the existing VolumeSnapshotContent object representing the existing snapshot.
   686        jsonPath: .spec.source.volumeSnapshotContentName
   687        name: SourceSnapshotContent
   688        type: string
   689      - description: Represents the minimum size of volume required to rehydrate from this snapshot.
   690        jsonPath: .status.restoreSize
   691        name: RestoreSize
   692        type: string
   693      - description: The name of the VolumeSnapshotClass requested by the VolumeSnapshot.
   694        jsonPath: .spec.volumeSnapshotClassName
   695        name: SnapshotClass
   696        type: string
   697      - description: Name of the VolumeSnapshotContent object to which the VolumeSnapshot object intends to bind to. Please note that verification of binding actually requires checking both VolumeSnapshot and VolumeSnapshotContent to ensure both are pointing at each other. Binding MUST be verified prior to usage of this object.
   698        jsonPath: .status.boundVolumeSnapshotContentName
   699        name: SnapshotContent
   700        type: string
   701      - description: Timestamp when the point-in-time snapshot was taken by the underlying storage system.
   702        jsonPath: .status.creationTime
   703        name: CreationTime
   704        type: date
   705      - jsonPath: .metadata.creationTimestamp
   706        name: Age
   707        type: date
   708      name: v1
   709      schema:
   710        openAPIV3Schema:
   711          description: VolumeSnapshot is a user's request for either creating a point-in-time snapshot of a persistent volume, or binding to a pre-existing snapshot.
   712          properties:
   713            apiVersion:
   714              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'
   715              type: string
   716            kind:
   717              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'
   718              type: string
   719            spec:
   720              description: 'spec defines the desired characteristics of a snapshot requested by a user. More info: https://kubernetes.io/docs/concepts/storage/volume-snapshots#volumesnapshots Required.'
   721              properties:
   722                source:
   723                  description: source specifies where a snapshot will be created from. This field is immutable after creation. Required.
   724                  properties:
   725                    persistentVolumeClaimName:
   726                      description: persistentVolumeClaimName specifies the name of the PersistentVolumeClaim object representing the volume from which a snapshot should be created. This PVC is assumed to be in the same namespace as the VolumeSnapshot object. This field should be set if the snapshot does not exists, and needs to be created. This field is immutable.
   727                      type: string
   728                    volumeSnapshotContentName:
   729                      description: volumeSnapshotContentName specifies the name of a pre-existing VolumeSnapshotContent object representing an existing volume snapshot. This field should be set if the snapshot already exists and only needs a representation in Kubernetes. This field is immutable.
   730                      type: string
   731                  type: object
   732                  oneOf:
   733                  - required: ["persistentVolumeClaimName"]
   734                  - required: ["volumeSnapshotContentName"]
   735                volumeSnapshotClassName:
   736                  description: 'VolumeSnapshotClassName is the name of the VolumeSnapshotClass requested by the VolumeSnapshot. VolumeSnapshotClassName may be left nil to indicate that the default SnapshotClass should be used. A given cluster may have multiple default Volume SnapshotClasses: one default per CSI Driver. If a VolumeSnapshot does not specify a SnapshotClass, VolumeSnapshotSource will be checked to figure out what the associated CSI Driver is, and the default VolumeSnapshotClass associated with that CSI Driver will be used. If more than one VolumeSnapshotClass exist for a given CSI Driver and more than one have been marked as default, CreateSnapshot will fail and generate an event. Empty string is not allowed for this field.'
   737                  type: string
   738              required:
   739              - source
   740              type: object
   741            status:
   742              description: status represents the current information of a snapshot. Consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent point at each other) before using this object.
   743              properties:
   744                boundVolumeSnapshotContentName:
   745                  description: 'boundVolumeSnapshotContentName is the name of the VolumeSnapshotContent object to which this VolumeSnapshot object intends to bind to. If not specified, it indicates that the VolumeSnapshot object has not been successfully bound to a VolumeSnapshotContent object yet. NOTE: To avoid possible security issues, consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent point at each other) before using this object.'
   746                  type: string
   747                creationTime:
   748                  description: creationTime is the timestamp when the point-in-time snapshot is taken by the underlying storage system. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "creation_time" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "creation_time" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. If not specified, it may indicate that the creation time of the snapshot is unknown.
   749                  format: date-time
   750                  type: string
   751                error:
   752                  description: error is the last observed error during snapshot creation, if any. This field could be helpful to upper level controllers(i.e., application controller) to decide whether they should continue on waiting for the snapshot to be created based on the type of error reported. The snapshot controller will keep retrying when an error occurrs during the snapshot creation. Upon success, this error field will be cleared.
   753                  properties:
   754                    message:
   755                      description: 'message is a string detailing the encountered error during snapshot creation if specified. NOTE: message may be logged, and it should not contain sensitive information.'
   756                      type: string
   757                    time:
   758                      description: time is the timestamp when the error was encountered.
   759                      format: date-time
   760                      type: string
   761                  type: object
   762                readyToUse:
   763                  description: readyToUse indicates if the snapshot is ready to be used to restore a volume. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "ready_to_use" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "ready_to_use" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, otherwise, this field will be set to "True". If not specified, it means the readiness of a snapshot is unknown.
   764                  type: boolean
   765                restoreSize:
   766                  type: string
   767                  description: restoreSize represents the minimum size of volume required to create a volume from this snapshot. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "size_bytes" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. When restoring a volume from this snapshot, the size of the volume MUST NOT be smaller than the restoreSize if it is specified, otherwise the restoration will fail. If not specified, it indicates that the size is unknown.
   768                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
   769                  x-kubernetes-int-or-string: true
   770              type: object
   771          required:
   772          - spec
   773          type: object
   774      served: true
   775      storage: false
   776      subresources:
   777        status: {}
   778    - additionalPrinterColumns:
   779      - description: Indicates if the snapshot is ready to be used to restore a volume.
   780        jsonPath: .status.readyToUse
   781        name: ReadyToUse
   782        type: boolean
   783      - description: If a new snapshot needs to be created, this contains the name of the source PVC from which this snapshot was (or will be) created.
   784        jsonPath: .spec.source.persistentVolumeClaimName
   785        name: SourcePVC
   786        type: string
   787      - description: If a snapshot already exists, this contains the name of the existing VolumeSnapshotContent object representing the existing snapshot.
   788        jsonPath: .spec.source.volumeSnapshotContentName
   789        name: SourceSnapshotContent
   790        type: string
   791      - description: Represents the minimum size of volume required to rehydrate from this snapshot.
   792        jsonPath: .status.restoreSize
   793        name: RestoreSize
   794        type: string
   795      - description: The name of the VolumeSnapshotClass requested by the VolumeSnapshot.
   796        jsonPath: .spec.volumeSnapshotClassName
   797        name: SnapshotClass
   798        type: string
   799      - description: Name of the VolumeSnapshotContent object to which the VolumeSnapshot object intends to bind to. Please note that verification of binding actually requires checking both VolumeSnapshot and VolumeSnapshotContent to ensure both are pointing at each other. Binding MUST be verified prior to usage of this object.
   800        jsonPath: .status.boundVolumeSnapshotContentName
   801        name: SnapshotContent
   802        type: string
   803      - description: Timestamp when the point-in-time snapshot was taken by the underlying storage system.
   804        jsonPath: .status.creationTime
   805        name: CreationTime
   806        type: date
   807      - jsonPath: .metadata.creationTimestamp
   808        name: Age
   809        type: date
   810      name: v1beta1
   811      schema:
   812        openAPIV3Schema:
   813          description: VolumeSnapshot is a user's request for either creating a point-in-time snapshot of a persistent volume, or binding to a pre-existing snapshot.
   814          properties:
   815            apiVersion:
   816              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'
   817              type: string
   818            kind:
   819              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'
   820              type: string
   821            spec:
   822              description: 'spec defines the desired characteristics of a snapshot requested by a user. More info: https://kubernetes.io/docs/concepts/storage/volume-snapshots#volumesnapshots Required.'
   823              properties:
   824                source:
   825                  description: source specifies where a snapshot will be created from. This field is immutable after creation. Required.
   826                  properties:
   827                    persistentVolumeClaimName:
   828                      description: persistentVolumeClaimName specifies the name of the PersistentVolumeClaim object representing the volume from which a snapshot should be created. This PVC is assumed to be in the same namespace as the VolumeSnapshot object. This field should be set if the snapshot does not exists, and needs to be created. This field is immutable.
   829                      type: string
   830                    volumeSnapshotContentName:
   831                      description: volumeSnapshotContentName specifies the name of a pre-existing VolumeSnapshotContent object representing an existing volume snapshot. This field should be set if the snapshot already exists and only needs a representation in Kubernetes. This field is immutable.
   832                      type: string
   833                  type: object
   834                volumeSnapshotClassName:
   835                  description: 'VolumeSnapshotClassName is the name of the VolumeSnapshotClass requested by the VolumeSnapshot. VolumeSnapshotClassName may be left nil to indicate that the default SnapshotClass should be used. A given cluster may have multiple default Volume SnapshotClasses: one default per CSI Driver. If a VolumeSnapshot does not specify a SnapshotClass, VolumeSnapshotSource will be checked to figure out what the associated CSI Driver is, and the default VolumeSnapshotClass associated with that CSI Driver will be used. If more than one VolumeSnapshotClass exist for a given CSI Driver and more than one have been marked as default, CreateSnapshot will fail and generate an event. Empty string is not allowed for this field.'
   836                  type: string
   837              required:
   838              - source
   839              type: object
   840            status:
   841              description: status represents the current information of a snapshot. Consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent point at each other) before using this object.
   842              properties:
   843                boundVolumeSnapshotContentName:
   844                  description: 'boundVolumeSnapshotContentName is the name of the VolumeSnapshotContent object to which this VolumeSnapshot object intends to bind to. If not specified, it indicates that the VolumeSnapshot object has not been successfully bound to a VolumeSnapshotContent object yet. NOTE: To avoid possible security issues, consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent point at each other) before using this object.'
   845                  type: string
   846                creationTime:
   847                  description: creationTime is the timestamp when the point-in-time snapshot is taken by the underlying storage system. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "creation_time" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "creation_time" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. If not specified, it may indicate that the creation time of the snapshot is unknown.
   848                  format: date-time
   849                  type: string
   850                error:
   851                  description: error is the last observed error during snapshot creation, if any. This field could be helpful to upper level controllers(i.e., application controller) to decide whether they should continue on waiting for the snapshot to be created based on the type of error reported. The snapshot controller will keep retrying when an error occurrs during the snapshot creation. Upon success, this error field will be cleared.
   852                  properties:
   853                    message:
   854                      description: 'message is a string detailing the encountered error during snapshot creation if specified. NOTE: message may be logged, and it should not contain sensitive information.'
   855                      type: string
   856                    time:
   857                      description: time is the timestamp when the error was encountered.
   858                      format: date-time
   859                      type: string
   860                  type: object
   861                readyToUse:
   862                  description: readyToUse indicates if the snapshot is ready to be used to restore a volume. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "ready_to_use" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "ready_to_use" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, otherwise, this field will be set to "True". If not specified, it means the readiness of a snapshot is unknown.
   863                  type: boolean
   864                restoreSize:
   865                  type: string
   866                  description: restoreSize represents the minimum size of volume required to create a volume from this snapshot. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "size_bytes" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. When restoring a volume from this snapshot, the size of the volume MUST NOT be smaller than the restoreSize if it is specified, otherwise the restoration will fail. If not specified, it indicates that the size is unknown.
   867                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
   868                  x-kubernetes-int-or-string: true
   869              type: object
   870          required:
   871          - spec
   872          type: object
   873      served: true
   874      storage: true
   875      subresources:
   876        status: {}
   877  status:
   878    acceptedNames:
   879      kind: ""
   880      plural: ""
   881    conditions: []
   882    storedVersions: []
   883  ---
   884  
   885  apiVersion: storage.k8s.io/v1
   886  kind: CSIDriver
   887  metadata:
   888    name: cstor.csi.openebs.io
   889  spec:
   890    # Supports persistent inline volumes.
   891    volumeLifecycleModes:
   892    - Persistent
   893    # Not yet supported but added just to support upgrade control plane seamlessly
   894    - Ephemeral
   895    # To determine at runtime which mode a volume uses, pod info and its
   896    # "csi.storage.k8s.io/ephemeral" entry are needed.
   897    podInfoOnMount: true
   898    attachRequired: false
   899  ---
   900  apiVersion: scheduling.k8s.io/v1
   901  kind: PriorityClass
   902  metadata:
   903    name: openebs-csi-controller-critical
   904  value: 900000000
   905  globalDefault: false
   906  description: "This priority class should be used for the CStor CSI driver controller deployment only."
   907  ---
   908  apiVersion: scheduling.k8s.io/v1
   909  kind: PriorityClass
   910  metadata:
   911    name: openebs-csi-node-critical
   912  value: 900001000
   913  globalDefault: false
   914  description: "This priority class should be used for the CStor CSI driver node deployment only."
   915  ---
   916  
   917  kind: ClusterRoleBinding
   918  apiVersion: rbac.authorization.k8s.io/v1
   919  metadata:
   920    name: openebs-cstor-csi-snapshotter-binding
   921  subjects:
   922    - kind: ServiceAccount
   923      name: openebs-cstor-csi-controller-sa
   924      namespace: openebs
   925  roleRef:
   926    kind: ClusterRole
   927    name: openebs-cstor-csi-snapshotter-role
   928    apiGroup: rbac.authorization.k8s.io
   929  
   930  ---
   931  
   932  kind: ClusterRole
   933  apiVersion: rbac.authorization.k8s.io/v1
   934  metadata:
   935    name: openebs-cstor-csi-snapshotter-role
   936  rules:
   937    - apiGroups: [""]
   938      resources: ["persistentvolumes"]
   939      verbs: ["get", "list", "watch"]
   940    - apiGroups: [""]
   941      resources: ["persistentvolumeclaims"]
   942      verbs: ["get", "list", "watch"]
   943    - apiGroups: ["storage.k8s.io"]
   944      resources: ["storageclasses"]
   945      verbs: ["get", "list", "watch"]
   946    - apiGroups: [""]
   947      resources: ["events"]
   948      verbs: ["list", "watch", "create", "update", "patch"]
   949    - apiGroups: [""]
   950      resources: ["secrets"]
   951      verbs: ["get", "list"]
   952    - apiGroups: ["snapshot.storage.k8s.io"]
   953      resources: ["volumesnapshotclasses"]
   954      verbs: ["get", "list", "watch"]
   955    - apiGroups: ["snapshot.storage.k8s.io"]
   956      resources: ["volumesnapshotcontents"]
   957      verbs: ["create", "get", "list", "watch", "update", "delete"]
   958    - apiGroups: ["snapshot.storage.k8s.io"]
   959      resources: ["volumesnapshotcontents/status"]
   960      verbs: ["update"]
   961    - apiGroups: ["snapshot.storage.k8s.io"]
   962      resources: ["volumesnapshots"]
   963      verbs: ["get", "list", "watch", "update"]
   964    - apiGroups: ["snapshot.storage.k8s.io"]
   965      resources: ["volumesnapshots/status"]
   966      verbs: ["update"]
   967    - apiGroups: ["coordination.k8s.io"]
   968      resources: ["leases"]
   969      verbs: ["get", "watch", "list", "delete", "update", "create"]
   970    - apiGroups: ["apiextensions.k8s.io"]
   971      resources: ["customresourcedefinitions"]
   972      verbs: ["create", "list", "watch", "delete", "get", "update"]
   973  
   974  ---
   975  ##############################################
   976  ###########                       ############
   977  ###########   Controller plugin   ############
   978  ###########                       ############
   979  ##############################################
   980  
   981  kind: ServiceAccount
   982  apiVersion: v1
   983  metadata:
   984    name: openebs-cstor-csi-controller-sa
   985    namespace: openebs
   986  
   987  ---
   988  kind: ClusterRole
   989  apiVersion: rbac.authorization.k8s.io/v1
   990  metadata:
   991    name: openebs-cstor-csi-provisioner-role
   992  rules:
   993    - apiGroups: [""]
   994      resources: ["secrets","namespaces"]
   995      verbs: ["get", "list"]
   996    - apiGroups: [""]
   997      resources: ["pods"]
   998      verbs: ["get", "list", "watch"]
   999    - apiGroups: [""]
  1000      resources: ["persistentvolumes", "services"]
  1001      verbs: ["get", "list", "watch", "create", "delete", "update", "patch"]
  1002    - apiGroups: [""]
  1003      resources: ["persistentvolumeclaims"]
  1004      verbs: ["get", "list", "watch", "update"]
  1005    - apiGroups: [""]
  1006      resources: ["persistentvolumeclaims/status"]
  1007      verbs: ["update", "patch"]
  1008    - apiGroups: ["storage.k8s.io"]
  1009      resources: ["storageclasses", "csinodes"]
  1010      verbs: ["get", "list", "watch"]
  1011    - apiGroups: [""]
  1012      resources: ["events"]
  1013      verbs: ["list", "watch", "create", "update", "patch"]
  1014    - apiGroups: ["snapshot.storage.k8s.io"]
  1015      resources: ["volumesnapshots"]
  1016      verbs: ["get", "list"]
  1017    - apiGroups: ["storage.k8s.io"]
  1018      resources: ["volumeattachments"]
  1019      verbs: ["get", "list", "watch", "create", "delete", "update", "patch"]
  1020    - apiGroups: ["snapshot.storage.k8s.io"]
  1021      resources: ["volumesnapshotcontents"]
  1022      verbs: ["get", "list"]
  1023    - apiGroups: ["coordination.k8s.io"]
  1024      resources: ["leases"]
  1025      verbs: ["*"]
  1026    - apiGroups: ["*"]
  1027      resources: ["cstorvolumeattachments", "cstorvolumes","cstorvolumeconfigs"]
  1028      verbs: ["*"]
  1029  
  1030  ---
  1031  
  1032  kind: ClusterRoleBinding
  1033  apiVersion: rbac.authorization.k8s.io/v1
  1034  metadata:
  1035    name: openebs-cstor-csi-provisioner-binding
  1036  subjects:
  1037    - kind: ServiceAccount
  1038      name: openebs-cstor-csi-controller-sa
  1039      namespace: openebs
  1040  roleRef:
  1041    kind: ClusterRole
  1042    name: openebs-cstor-csi-provisioner-role
  1043    apiGroup: rbac.authorization.k8s.io
  1044  
  1045  ---
  1046  kind: StatefulSet
  1047  apiVersion: apps/v1
  1048  metadata:
  1049    name: openebs-cstor-csi-controller
  1050    namespace: openebs
  1051    labels:
  1052      name: openebs-cstor-csi-controller
  1053      openebs.io/component-name: openebs-cstor-csi-controller
  1054      openebs.io/version: 2.11.0
  1055  spec:
  1056    selector:
  1057      matchLabels:
  1058        app: openebs-cstor-csi-controller
  1059        role: openebs-cstor-csi
  1060        name: openebs-cstor-csi-controller
  1061        openebs.io/component-name: openebs-cstor-csi-controller
  1062    serviceName: "openebs-csi"
  1063    replicas: 1
  1064    template:
  1065      metadata:
  1066        labels:
  1067          app: openebs-cstor-csi-controller
  1068          role: openebs-cstor-csi
  1069          name: openebs-cstor-csi-controller
  1070          openebs.io/component-name: openebs-cstor-csi-controller
  1071          openebs.io/version: 2.11.0
  1072      spec:
  1073        priorityClassName: openebs-csi-controller-critical
  1074        serviceAccount: openebs-cstor-csi-controller-sa
  1075        containers:
  1076          - name: csi-resizer
  1077            image: k8s.gcr.io/sig-storage/csi-resizer:v1.1.0
  1078            args:
  1079              - "--v=5"
  1080              - "--csi-address=$(ADDRESS)"
  1081              - "--leader-election"
  1082            env:
  1083              - name: ADDRESS
  1084                value: /var/lib/csi/sockets/pluginproxy/csi.sock
  1085            imagePullPolicy: IfNotPresent
  1086            volumeMounts:
  1087              - name: socket-dir
  1088                mountPath: /var/lib/csi/sockets/pluginproxy/
  1089          - name: csi-snapshotter
  1090            image: k8s.gcr.io/sig-storage/csi-snapshotter:v3.0.3
  1091            args:
  1092              - "--csi-address=$(ADDRESS)"
  1093            env:
  1094              - name: ADDRESS
  1095                value: /var/lib/csi/sockets/pluginproxy/csi.sock
  1096            imagePullPolicy: IfNotPresent
  1097            volumeMounts:
  1098              - name: socket-dir
  1099                mountPath: /var/lib/csi/sockets/pluginproxy/
  1100          - name: snapshot-controller
  1101            image: k8s.gcr.io/sig-storage/snapshot-controller:v3.0.3
  1102            args:
  1103              - "--v=5"
  1104              - "--leader-election=false"
  1105            imagePullPolicy: IfNotPresent
  1106          - name: csi-provisioner
  1107            image: k8s.gcr.io/sig-storage/csi-provisioner:v2.1.0
  1108            imagePullPolicy: IfNotPresent
  1109            args:
  1110              - "--csi-address=$(ADDRESS)"
  1111              - "--v=5"
  1112              - "--feature-gates=Topology=true"
  1113              - "--extra-create-metadata=true"
  1114              - "--metrics-address=:22011"
  1115              - "--timeout=250s"
  1116              - "--default-fstype=ext4"
  1117            env:
  1118              - name: MY_NAME
  1119                valueFrom:
  1120                  fieldRef:
  1121                    fieldPath: metadata.name
  1122              - name: ADDRESS
  1123                value: /var/lib/csi/sockets/pluginproxy/csi.sock
  1124            volumeMounts:
  1125              - name: socket-dir
  1126                mountPath: /var/lib/csi/sockets/pluginproxy/
  1127          - name: csi-attacher
  1128            image: k8s.gcr.io/sig-storage/csi-attacher:v3.1.0
  1129            imagePullPolicy: IfNotPresent
  1130            args:
  1131              - "--v=5"
  1132              - "--csi-address=$(ADDRESS)"
  1133            env:
  1134              - name: ADDRESS
  1135                value: /var/lib/csi/sockets/pluginproxy/csi.sock
  1136            volumeMounts:
  1137              - name: socket-dir
  1138                mountPath: /var/lib/csi/sockets/pluginproxy/
  1139          - name: cstor-csi-plugin
  1140            image: openebs/cstor-csi-driver:2.11.0
  1141            imagePullPolicy: IfNotPresent
  1142            env:
  1143              - name: OPENEBS_CONTROLLER_DRIVER
  1144                value: controller
  1145              - name: OPENEBS_CSI_ENDPOINT
  1146                value: unix:///var/lib/csi/sockets/pluginproxy/csi.sock
  1147              - name: OPENEBS_CSI_API_URL
  1148                value: https://openebs.io
  1149                # OpenEBS namespace where the openebs cstor operator components
  1150                # has been installed
  1151              - name: OPENEBS_NAMESPACE
  1152                valueFrom:
  1153                  fieldRef:
  1154                    fieldPath: metadata.namespace
  1155              - name: OPENEBS_IO_INSTALLER_TYPE
  1156                value: "cstor-operator"
  1157              - name: OPENEBS_IO_ENABLE_ANALYTICS
  1158                value: "true"
  1159            args :
  1160              - "--endpoint=$(OPENEBS_CSI_ENDPOINT)"
  1161              - "--url=$(OPENEBS_CSI_API_URL)"
  1162              - "--plugin=$(OPENEBS_CONTROLLER_DRIVER)"
  1163            volumeMounts:
  1164              - name: socket-dir
  1165                mountPath: /var/lib/csi/sockets/pluginproxy/
  1166        volumes:
  1167          - name: socket-dir
  1168            emptyDir: {}
  1169  ---
  1170  
  1171  ############################## CSI- Attacher #######################
  1172  # Attacher must be able to work with PVs, nodes and VolumeAttachments
  1173  
  1174  kind: ClusterRole
  1175  apiVersion: rbac.authorization.k8s.io/v1
  1176  metadata:
  1177    name: openebs-cstor-csi-attacher-role
  1178  rules:
  1179    - apiGroups: [""]
  1180      resources: ["persistentvolumes"]
  1181      verbs: ["get", "list", "watch", "update"]
  1182    - apiGroups: [""]
  1183      resources: ["nodes"]
  1184      verbs: ["get", "list", "watch"]
  1185    - apiGroups: ["csi.storage.k8s.io"]
  1186      resources: ["csinodeinfos"]
  1187      verbs: ["get", "list", "watch"]
  1188    - apiGroups: ["storage.k8s.io"]
  1189      resources: ["volumeattachments", "csinodes"]
  1190      verbs: ["get", "list", "watch", "update"]
  1191    - apiGroups: ["storage.k8s.io"]
  1192      resources: ["volumeattachments/status"]
  1193      verbs: ["patch"]
  1194  
  1195  ---
  1196  kind: ClusterRoleBinding
  1197  apiVersion: rbac.authorization.k8s.io/v1
  1198  metadata:
  1199    name: openebs-cstor-csi-attacher-binding
  1200  subjects:
  1201    - kind: ServiceAccount
  1202      name: openebs-cstor-csi-controller-sa
  1203      namespace: openebs
  1204  roleRef:
  1205    kind: ClusterRole
  1206    name: openebs-cstor-csi-attacher-role
  1207    apiGroup: rbac.authorization.k8s.io
  1208  
  1209  ---
  1210  
  1211  kind: ClusterRole
  1212  apiVersion: rbac.authorization.k8s.io/v1
  1213  metadata:
  1214    name: openebs-cstor-csi-cluster-registrar-role
  1215  rules:
  1216    - apiGroups: ["csi.storage.k8s.io"]
  1217      resources: ["csidrivers"]
  1218      verbs: ["create", "delete"]
  1219  
  1220  ---
  1221  
  1222  kind: ClusterRoleBinding
  1223  apiVersion: rbac.authorization.k8s.io/v1
  1224  metadata:
  1225    name: openebs-cstor-csi-cluster-registrar-binding
  1226  subjects:
  1227    - kind: ServiceAccount
  1228      name: openebs-cstor-csi-controller-sa
  1229      namespace: openebs
  1230  roleRef:
  1231    kind: ClusterRole
  1232    name: openebs-cstor-csi-cluster-registrar-role
  1233    apiGroup: rbac.authorization.k8s.io
  1234  
  1235  ---
  1236  
  1237  ########################################
  1238  ###########                 ############
  1239  ###########   Node plugin   ############
  1240  ###########                 ############
  1241  ########################################
  1242  
  1243  apiVersion: v1
  1244  kind: ServiceAccount
  1245  metadata:
  1246    name: openebs-cstor-csi-node-sa
  1247    namespace: openebs
  1248  
  1249  ---
  1250  
  1251  kind: ClusterRole
  1252  apiVersion: rbac.authorization.k8s.io/v1
  1253  metadata:
  1254    name: openebs-cstor-csi-registrar-role
  1255  rules:
  1256    - apiGroups: [""]
  1257      resources: ["events"]
  1258      verbs: ["get", "list", "watch", "create", "update", "patch"]
  1259    - apiGroups: [""]
  1260      resources: ["persistentvolumes", "nodes", "services"]
  1261      verbs: ["get", "list", "patch"]
  1262    - apiGroups: ["*"]
  1263      resources: ["cstorvolumeattachments", "cstorvolumes","cstorvolumeconfigs"]
  1264      verbs: ["get", "list", "watch", "create", "update", "delete", "patch"]
  1265  
  1266  ---
  1267  
  1268  kind: ClusterRoleBinding
  1269  apiVersion: rbac.authorization.k8s.io/v1
  1270  metadata:
  1271    name: openebs-cstor-csi-registrar-binding
  1272  subjects:
  1273    - kind: ServiceAccount
  1274      name: openebs-cstor-csi-node-sa
  1275      namespace: openebs
  1276  roleRef:
  1277    kind: ClusterRole
  1278    name: openebs-cstor-csi-registrar-role
  1279    apiGroup: rbac.authorization.k8s.io
  1280  
  1281  ---
  1282  kind: ConfigMap
  1283  apiVersion: v1
  1284  metadata:
  1285    name: openebs-cstor-csi-iscsiadm
  1286    namespace: openebs
  1287  data:
  1288    iscsiadm: |
  1289      #!/bin/sh
  1290      if [ -x /host/sbin/iscsiadm ]; then
  1291        chroot /host /sbin/iscsiadm "$@"
  1292      elif [ -x /host/usr/local/sbin/iscsiadm ]; then
  1293        chroot /host /usr/local/sbin/iscsiadm "$@"
  1294      elif [ -x /host/bin/iscsiadm ]; then
  1295        chroot /host /bin/iscsiadm "$@"
  1296      elif [ -x /host/usr/local/bin/iscsiadm ]; then
  1297        chroot /host /usr/local/bin/iscsiadm "$@"
  1298      else
  1299        chroot /host iscsiadm "$@"
  1300      fi
  1301  
  1302  ---
  1303  
  1304  kind: DaemonSet
  1305  apiVersion: apps/v1
  1306  metadata:
  1307    name: openebs-cstor-csi-node
  1308    namespace: openebs
  1309    labels:
  1310      app: openebs-cstor-csi-node
  1311      name: openebs-cstor-csi-node
  1312      openebs.io/component-name: openebs-cstor-csi-node
  1313      openebs.io/version: 2.11.0
  1314  spec:
  1315    selector:
  1316      matchLabels:
  1317        app: openebs-cstor-csi-node
  1318        role: openebs-cstor-csi
  1319        name: openebs-cstor-csi-node
  1320        openebs.io/component-name: openebs-cstor-csi-node
  1321    template:
  1322      metadata:
  1323        labels:
  1324          app: openebs-cstor-csi-node
  1325          role: openebs-cstor-csi
  1326          name: openebs-cstor-csi-node
  1327          openebs.io/component-name: openebs-cstor-csi-node
  1328          openebs.io/version: 2.11.0
  1329      spec:
  1330        priorityClassName: openebs-csi-node-critical
  1331        serviceAccount: openebs-cstor-csi-node-sa
  1332        hostNetwork: true
  1333        containers:
  1334          - name: csi-node-driver-registrar
  1335            image: k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.1.0
  1336            imagePullPolicy: IfNotPresent
  1337            args:
  1338              - "--v=5"
  1339              - "--csi-address=$(ADDRESS)"
  1340              - "--kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)"
  1341            lifecycle:
  1342              preStop:
  1343                exec:
  1344                  command: ["/bin/sh", "-c", "rm -rf /registration/cstor.csi.openebs.io /registration/cstor.csi.openebs.io-reg.sock"]
  1345            env:
  1346              - name: ADDRESS
  1347                value: /plugin/csi.sock
  1348              - name: DRIVER_REG_SOCK_PATH
  1349                value: /var/lib/kubelet/plugins/cstor.csi.openebs.io/csi.sock
  1350              - name: KUBE_NODE_NAME
  1351                valueFrom:
  1352                  fieldRef:
  1353                    fieldPath: spec.nodeName
  1354              - name: NODE_DRIVER
  1355                value: openebs-cstor-csi
  1356            volumeMounts:
  1357              - name: plugin-dir
  1358                mountPath: /plugin
  1359              - name: registration-dir
  1360                mountPath: /registration
  1361          - name: cstor-csi-plugin
  1362            securityContext:
  1363              privileged: true
  1364              capabilities:
  1365                add: ["CAP_MKNOD", "CAP_SYS_ADMIN", "SYS_ADMIN"]
  1366              allowPrivilegeEscalation: true
  1367            image: openebs/cstor-csi-driver:2.11.0
  1368            imagePullPolicy: IfNotPresent
  1369            args:
  1370              - "--nodeid=$(OPENEBS_NODE_ID)"
  1371              - "--endpoint=$(OPENEBS_CSI_ENDPOINT)"
  1372              - "--url=$(OPENEBS_CSI_API_URL)"
  1373              - "--plugin=$(OPENEBS_NODE_DRIVER)"
  1374            env:
  1375              - name: OPENEBS_NODE_ID
  1376                valueFrom:
  1377                  fieldRef:
  1378                    fieldPath: spec.nodeName
  1379              - name: OPENEBS_CSI_ENDPOINT
  1380                value: unix:///plugin/csi.sock
  1381              - name: OPENEBS_NODE_DRIVER
  1382                value: node
  1383              - name: OPENEBS_CSI_API_URL
  1384                value: https://openebs.io
  1385                # OpenEBS namespace where the openebs cstor operator components
  1386                # has been installed
  1387              - name: OPENEBS_NAMESPACE
  1388                valueFrom:
  1389                  fieldRef:
  1390                    fieldPath: metadata.namespace
  1391                # Enable/Disable auto-remount feature, when volumes
  1392                # recovers form the read-only state
  1393              - name: REMOUNT
  1394                value: "true"
  1395            volumeMounts:
  1396              - name: plugin-dir
  1397                mountPath: /plugin
  1398              - name: device-dir
  1399                mountPath: /dev
  1400              - name: pods-mount-dir
  1401                mountPath: /var/lib/kubelet/
  1402                # needed so that any mounts setup inside this container are
  1403                # propagated back to the host machine.
  1404                mountPropagation: "Bidirectional"
  1405              - name: host-root
  1406                mountPath: /host
  1407                mountPropagation: "HostToContainer"
  1408              - name: chroot-iscsiadm
  1409                mountPath: /sbin/iscsiadm
  1410                subPath: iscsiadm
  1411        volumes:
  1412          - name: device-dir
  1413            hostPath:
  1414              path: /dev
  1415              type: Directory
  1416          - name: registration-dir
  1417            hostPath:
  1418              path: /var/lib/kubelet/plugins_registry/
  1419              type: DirectoryOrCreate
  1420          - name: plugin-dir
  1421            hostPath:
  1422              path: /var/lib/kubelet/plugins/cstor.csi.openebs.io/
  1423              type: DirectoryOrCreate
  1424          - name: pods-mount-dir
  1425            hostPath:
  1426              path: /var/lib/kubelet/
  1427              type: Directory
  1428          - name: chroot-iscsiadm
  1429            configMap:
  1430              defaultMode: 0555
  1431              name: openebs-cstor-csi-iscsiadm
  1432          - name: host-root
  1433            hostPath:
  1434              path: /
  1435              type: Directory
  1436  ---
  1437  ###########################################################################
  1438  ####                                                                   ####
  1439  ####                     CStor-Operator yaml                           ####
  1440  ####                                                                   ####
  1441  ###########################################################################
  1442  #
  1443  #
  1444  ###########################################################################
  1445  #                                                                       ###
  1446  #                        CStorPoolCluster CRD                           ###
  1447  #                                                                       ###
  1448  ###########################################################################
  1449  apiVersion: apiextensions.k8s.io/v1
  1450  kind: CustomResourceDefinition
  1451  metadata:
  1452    annotations:
  1453      controller-gen.kubebuilder.io/version: v0.4.0
  1454    creationTimestamp: null
  1455    name: cstorpoolclusters.cstor.openebs.io
  1456  spec:
  1457    group: cstor.openebs.io
  1458    names:
  1459      kind: CStorPoolCluster
  1460      listKind: CStorPoolClusterList
  1461      plural: cstorpoolclusters
  1462      shortNames:
  1463        - cspc
  1464      singular: cstorpoolcluster
  1465    scope: Namespaced
  1466    versions:
  1467      - additionalPrinterColumns:
  1468          - description: The number of healthy cStorPoolInstances
  1469            jsonPath: .status.healthyInstances
  1470            name: HealthyInstances
  1471            type: integer
  1472          - description: The number of provisioned cStorPoolInstances
  1473            jsonPath: .status.provisionedInstances
  1474            name: ProvisionedInstances
  1475            type: integer
  1476          - description: The number of desired cStorPoolInstances
  1477            jsonPath: .status.desiredInstances
  1478            name: DesiredInstances
  1479            type: integer
  1480          - description: Age of CStorPoolCluster
  1481            jsonPath: .metadata.creationTimestamp
  1482            name: Age
  1483            type: date
  1484        name: v1
  1485        schema:
  1486          openAPIV3Schema:
  1487            description: CStorPoolCluster describes a CStorPoolCluster custom resource.
  1488            properties:
  1489              apiVersion:
  1490                description: 'APIVersion defines the versioned schema of this representation
  1491                of an object. Servers should convert recognized schemas to the latest
  1492                internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  1493                type: string
  1494              kind:
  1495                description: 'Kind is a string value representing the REST resource this
  1496                object represents. Servers may infer this from the endpoint the client
  1497                submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  1498                type: string
  1499              metadata:
  1500                type: object
  1501              spec:
  1502                description: CStorPoolClusterSpec is the spec for a CStorPoolClusterSpec
  1503                  resource
  1504                properties:
  1505                  auxResources:
  1506                    description: AuxResources are the compute resources required by the
  1507                      cstor-pool pod side car containers.
  1508                    nullable: true
  1509                    properties:
  1510                      limits:
  1511                        additionalProperties:
  1512                          anyOf:
  1513                            - type: integer
  1514                            - type: string
  1515                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  1516                          x-kubernetes-int-or-string: true
  1517                        description: 'Limits describes the maximum amount of compute resources
  1518                        allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
  1519                        type: object
  1520                      requests:
  1521                        additionalProperties:
  1522                          anyOf:
  1523                            - type: integer
  1524                            - type: string
  1525                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  1526                          x-kubernetes-int-or-string: true
  1527                        description: 'Requests describes the minimum amount of compute
  1528                        resources required. If Requests is omitted for a container,
  1529                        it defaults to Limits if that is explicitly specified, otherwise
  1530                        to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
  1531                        type: object
  1532                    type: object
  1533                  pools:
  1534                    description: Pools is the spec for pools for various nodes where it
  1535                      should be created.
  1536                    items:
  1537                      description: PoolSpec is the spec for pool on node where it should
  1538                        be created.
  1539                      properties:
  1540                        dataRaidGroups:
  1541                          description: DataRaidGroups is the raid group configuration
  1542                            for the given pool.
  1543                          items:
  1544                            description: RaidGroup contains the details of a raid group
  1545                              for the pool
  1546                            properties:
  1547                              blockDevices:
  1548                                items:
  1549                                  description: CStorPoolInstanceBlockDevice contains the
  1550                                    details of block devices that constitutes a raid group.
  1551                                  properties:
  1552                                    blockDeviceName:
  1553                                      description: BlockDeviceName is the name of the
  1554                                        block device.
  1555                                      type: string
  1556                                    capacity:
  1557                                      description: Capacity is the capacity of the block
  1558                                        device. It is system generated
  1559                                      format: int64
  1560                                      type: integer
  1561                                    devLink:
  1562                                      description: DevLink is the dev link for block devices
  1563                                      type: string
  1564                                  required:
  1565                                    - blockDeviceName
  1566                                  type: object
  1567                                type: array
  1568                            required:
  1569                              - blockDevices
  1570                            type: object
  1571                          type: array
  1572                        nodeSelector:
  1573                          additionalProperties:
  1574                            type: string
  1575                          description: NodeSelector is the labels that will be used to
  1576                            select a node for pool provisioning. Required field
  1577                          type: object
  1578                        poolConfig:
  1579                          description: PoolConfig is the default pool config that applies
  1580                            to the pool on node.
  1581                          properties:
  1582                            auxResources:
  1583                              description: AuxResources are the compute resources required
  1584                                by the cstor-pool pod side car containers.
  1585                              nullable: true
  1586                              properties:
  1587                                limits:
  1588                                  additionalProperties:
  1589                                    anyOf:
  1590                                      - type: integer
  1591                                      - type: string
  1592                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  1593                                    x-kubernetes-int-or-string: true
  1594                                  description: 'Limits describes the maximum amount of
  1595                                  compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
  1596                                  type: object
  1597                                requests:
  1598                                  additionalProperties:
  1599                                    anyOf:
  1600                                      - type: integer
  1601                                      - type: string
  1602                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  1603                                    x-kubernetes-int-or-string: true
  1604                                  description: 'Requests describes the minimum amount
  1605                                  of compute resources required. If Requests is omitted
  1606                                  for a container, it defaults to Limits if that is
  1607                                  explicitly specified, otherwise to an implementation-defined
  1608                                  value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
  1609                                  type: object
  1610                              type: object
  1611                            compression:
  1612                              description: 'Compression to enable compression Optional
  1613                              -- defaults to off Possible values : lz, off'
  1614                              type: string
  1615                            dataRaidGroupType:
  1616                              description: DataRaidGroupType is the  raid type.
  1617                              type: string
  1618                            priorityClassName:
  1619                              description: PriorityClassName if specified applies to this
  1620                                pool pod If left empty, DefaultPriorityClassName is applied.
  1621                                (See CStorPoolClusterSpec.DefaultPriorityClassName) If
  1622                                both are empty, not priority class is applied.
  1623                              nullable: true
  1624                              type: string
  1625                            resources:
  1626                              description: Resources are the compute resources required
  1627                                by the cstor-pool container.
  1628                              nullable: true
  1629                              properties:
  1630                                limits:
  1631                                  additionalProperties:
  1632                                    anyOf:
  1633                                      - type: integer
  1634                                      - type: string
  1635                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  1636                                    x-kubernetes-int-or-string: true
  1637                                  description: 'Limits describes the maximum amount of
  1638                                  compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
  1639                                  type: object
  1640                                requests:
  1641                                  additionalProperties:
  1642                                    anyOf:
  1643                                      - type: integer
  1644                                      - type: string
  1645                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  1646                                    x-kubernetes-int-or-string: true
  1647                                  description: 'Requests describes the minimum amount
  1648                                  of compute resources required. If Requests is omitted
  1649                                  for a container, it defaults to Limits if that is
  1650                                  explicitly specified, otherwise to an implementation-defined
  1651                                  value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
  1652                                  type: object
  1653                              type: object
  1654                            roThresholdLimit:
  1655                              description: 'ROThresholdLimit is threshold(percentage base)
  1656                              limit for pool read only mode. If ROThresholdLimit(%)
  1657                              amount of pool storage is reached then pool will set to
  1658                              readonly. NOTE: 1. If ROThresholdLimit is set to 100 then
  1659                              entire    pool storage will be used by default it will
  1660                              be set to 85%. 2. ROThresholdLimit value will be 0 <=
  1661                              ROThresholdLimit <= 100.'
  1662                              nullable: true
  1663                              type: integer
  1664                            thickProvision:
  1665                              description: ThickProvision to enable thick provisioning
  1666                                Optional -- defaults to false
  1667                              type: boolean
  1668                            tolerations:
  1669                              description: Tolerations, if specified, the pool pod's tolerations.
  1670                              items:
  1671                                description: The pod this Toleration is attached to tolerates
  1672                                  any taint that matches the triple <key,value,effect>
  1673                                  using the matching operator <operator>.
  1674                                properties:
  1675                                  effect:
  1676                                    description: Effect indicates the taint effect to
  1677                                      match. Empty means match all taint effects. When
  1678                                      specified, allowed values are NoSchedule, PreferNoSchedule
  1679                                      and NoExecute.
  1680                                    type: string
  1681                                  key:
  1682                                    description: Key is the taint key that the toleration
  1683                                      applies to. Empty means match all taint keys. If
  1684                                      the key is empty, operator must be Exists; this
  1685                                      combination means to match all values and all keys.
  1686                                    type: string
  1687                                  operator:
  1688                                    description: Operator represents a key's relationship
  1689                                      to the value. Valid operators are Exists and Equal.
  1690                                      Defaults to Equal. Exists is equivalent to wildcard
  1691                                      for value, so that a pod can tolerate all taints
  1692                                      of a particular category.
  1693                                    type: string
  1694                                  tolerationSeconds:
  1695                                    description: TolerationSeconds represents the period
  1696                                      of time the toleration (which must be of effect
  1697                                      NoExecute, otherwise this field is ignored) tolerates
  1698                                      the taint. By default, it is not set, which means
  1699                                      tolerate the taint forever (do not evict). Zero
  1700                                      and negative values will be treated as 0 (evict
  1701                                      immediately) by the system.
  1702                                    format: int64
  1703                                    type: integer
  1704                                  value:
  1705                                    description: Value is the taint value the toleration
  1706                                      matches to. If the operator is Exists, the value
  1707                                      should be empty, otherwise just a regular string.
  1708                                    type: string
  1709                                type: object
  1710                              nullable: true
  1711                              type: array
  1712                            writeCacheGroupType:
  1713                              description: WriteCacheGroupType is the write cache raid
  1714                                type.
  1715                              type: string
  1716                          required:
  1717                            - dataRaidGroupType
  1718                          type: object
  1719                        writeCacheRaidGroups:
  1720                          description: WriteCacheRaidGroups is the write cache raid group.
  1721                          items:
  1722                            description: RaidGroup contains the details of a raid group
  1723                              for the pool
  1724                            properties:
  1725                              blockDevices:
  1726                                items:
  1727                                  description: CStorPoolInstanceBlockDevice contains the
  1728                                    details of block devices that constitutes a raid group.
  1729                                  properties:
  1730                                    blockDeviceName:
  1731                                      description: BlockDeviceName is the name of the
  1732                                        block device.
  1733                                      type: string
  1734                                    capacity:
  1735                                      description: Capacity is the capacity of the block
  1736                                        device. It is system generated
  1737                                      format: int64
  1738                                      type: integer
  1739                                    devLink:
  1740                                      description: DevLink is the dev link for block devices
  1741                                      type: string
  1742                                  required:
  1743                                    - blockDeviceName
  1744                                  type: object
  1745                                type: array
  1746                            required:
  1747                              - blockDevices
  1748                            type: object
  1749                          nullable: true
  1750                          type: array
  1751                      required:
  1752                        - dataRaidGroups
  1753                        - nodeSelector
  1754                      type: object
  1755                    type: array
  1756                  priorityClassName:
  1757                    description: DefaultPriorityClassName if specified applies to all
  1758                      the pool pods in the pool spec if the priorityClass at the pool
  1759                      level is not specified.
  1760                    type: string
  1761                  resources:
  1762                    description: DefaultResources are the compute resources required by
  1763                      the cstor-pool container. If the resources at PoolConfig is not
  1764                      specified, this is written to CSPI PoolConfig.
  1765                    nullable: true
  1766                    properties:
  1767                      limits:
  1768                        additionalProperties:
  1769                          anyOf:
  1770                            - type: integer
  1771                            - type: string
  1772                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  1773                          x-kubernetes-int-or-string: true
  1774                        description: 'Limits describes the maximum amount of compute resources
  1775                        allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
  1776                        type: object
  1777                      requests:
  1778                        additionalProperties:
  1779                          anyOf:
  1780                            - type: integer
  1781                            - type: string
  1782                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  1783                          x-kubernetes-int-or-string: true
  1784                        description: 'Requests describes the minimum amount of compute
  1785                        resources required. If Requests is omitted for a container,
  1786                        it defaults to Limits if that is explicitly specified, otherwise
  1787                        to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
  1788                        type: object
  1789                    type: object
  1790                  tolerations:
  1791                    description: Tolerations, if specified, are the pool pod's tolerations
  1792                      If tolerations at PoolConfig is empty, this is written to CSPI PoolConfig.
  1793                    items:
  1794                      description: The pod this Toleration is attached to tolerates any
  1795                        taint that matches the triple <key,value,effect> using the matching
  1796                        operator <operator>.
  1797                      properties:
  1798                        effect:
  1799                          description: Effect indicates the taint effect to match. Empty
  1800                            means match all taint effects. When specified, allowed values
  1801                            are NoSchedule, PreferNoSchedule and NoExecute.
  1802                          type: string
  1803                        key:
  1804                          description: Key is the taint key that the toleration applies
  1805                            to. Empty means match all taint keys. If the key is empty,
  1806                            operator must be Exists; this combination means to match all
  1807                            values and all keys.
  1808                          type: string
  1809                        operator:
  1810                          description: Operator represents a key's relationship to the
  1811                            value. Valid operators are Exists and Equal. Defaults to Equal.
  1812                            Exists is equivalent to wildcard for value, so that a pod
  1813                            can tolerate all taints of a particular category.
  1814                          type: string
  1815                        tolerationSeconds:
  1816                          description: TolerationSeconds represents the period of time
  1817                            the toleration (which must be of effect NoExecute, otherwise
  1818                            this field is ignored) tolerates the taint. By default, it
  1819                            is not set, which means tolerate the taint forever (do not
  1820                            evict). Zero and negative values will be treated as 0 (evict
  1821                            immediately) by the system.
  1822                          format: int64
  1823                          type: integer
  1824                        value:
  1825                          description: Value is the taint value the toleration matches
  1826                            to. If the operator is Exists, the value should be empty,
  1827                            otherwise just a regular string.
  1828                          type: string
  1829                      type: object
  1830                    nullable: true
  1831                    type: array
  1832                type: object
  1833              status:
  1834                description: CStorPoolClusterStatus represents the latest available observations
  1835                  of a CSPC's current state.
  1836                properties:
  1837                  conditions:
  1838                    description: Current state of CSPC.
  1839                    items:
  1840                      description: CStorPoolClusterCondition describes the state of a
  1841                        CSPC at a certain point.
  1842                      properties:
  1843                        lastTransitionTime:
  1844                          description: Last time the condition transitioned from one status
  1845                            to another.
  1846                          format: date-time
  1847                          type: string
  1848                        lastUpdateTime:
  1849                          description: The last time this condition was updated.
  1850                          format: date-time
  1851                          type: string
  1852                        message:
  1853                          description: A human readable message indicating details about
  1854                            the transition.
  1855                          type: string
  1856                        reason:
  1857                          description: The reason for the condition's last transition.
  1858                          type: string
  1859                        status:
  1860                          description: Status of the condition, one of True, False, Unknown.
  1861                          type: string
  1862                        type:
  1863                          description: Type of CSPC condition.
  1864                          type: string
  1865                      required:
  1866                        - status
  1867                        - type
  1868                      type: object
  1869                    nullable: true
  1870                    type: array
  1871                  desiredInstances:
  1872                    description: DesiredInstances is the number of CSPI(s) that should
  1873                      be provisioned.
  1874                    format: int32
  1875                    nullable: true
  1876                    type: integer
  1877                  healthyInstances:
  1878                    description: HealthyInstances is the number of CSPI(s) that are healthy.
  1879                    format: int32
  1880                    nullable: true
  1881                    type: integer
  1882                  provisionedInstances:
  1883                    description: ProvisionedInstances is the the number of CSPI present
  1884                      at the current state.
  1885                    format: int32
  1886                    nullable: true
  1887                    type: integer
  1888                type: object
  1889              versionDetails:
  1890                description: VersionDetails provides the details for upgrade
  1891                properties:
  1892                  autoUpgrade:
  1893                    description: If AutoUpgrade is set to true then the resource is upgraded
  1894                      automatically without any manual steps
  1895                    type: boolean
  1896                  desired:
  1897                    description: Desired is the version that we want to upgrade or the
  1898                      control plane version
  1899                    type: string
  1900                  status:
  1901                    description: Status gives the status of reconciliation triggered when
  1902                      the desired and current version are not same
  1903                    properties:
  1904                      current:
  1905                        description: Current is the version of resource
  1906                        type: string
  1907                      dependentsUpgraded:
  1908                        description: DependentsUpgraded gives the details whether all
  1909                          children of a resource are upgraded to desired version or not
  1910                        type: boolean
  1911                      lastUpdateTime:
  1912                        description: LastUpdateTime is the time the status was last  updated
  1913                        format: date-time
  1914                        nullable: true
  1915                        type: string
  1916                      message:
  1917                        description: Message is a human readable message if some error
  1918                          occurs
  1919                        type: string
  1920                      reason:
  1921                        description: Reason is the actual reason for the error state
  1922                        type: string
  1923                      state:
  1924                        description: State is the state of reconciliation
  1925                        type: string
  1926                    type: object
  1927                type: object
  1928            required:
  1929              - spec
  1930            type: object
  1931        served: true
  1932        storage: true
  1933        subresources: {}
  1934  status:
  1935    acceptedNames:
  1936      kind: ""
  1937      plural: ""
  1938    conditions: []
  1939    storedVersions: []
  1940  ---
  1941  ################################################################################
  1942  ###                                                                         ####
  1943  ###                       CStorPoolInstance CRD                             ####
  1944  ###                                                                         ####
  1945  ################################################################################
  1946  apiVersion: apiextensions.k8s.io/v1
  1947  kind: CustomResourceDefinition
  1948  metadata:
  1949    annotations:
  1950      controller-gen.kubebuilder.io/version: v0.4.0
  1951    creationTimestamp: null
  1952    name: cstorpoolinstances.cstor.openebs.io
  1953  spec:
  1954    group: cstor.openebs.io
  1955    names:
  1956      kind: CStorPoolInstance
  1957      listKind: CStorPoolInstanceList
  1958      plural: cstorpoolinstances
  1959      shortNames:
  1960        - cspi
  1961      singular: cstorpoolinstance
  1962    scope: Namespaced
  1963    versions:
  1964      - additionalPrinterColumns:
  1965          - description: Host name where cstorpool instances scheduled
  1966            jsonPath: .spec.hostName
  1967            name: HostName
  1968            type: string
  1969          - description: The amount of storage space within the pool that has been physically
  1970              allocated
  1971            jsonPath: .status.capacity.used
  1972            name: Allocated
  1973            priority: 1
  1974            type: string
  1975          - description: The amount of usable free space available in the pool
  1976            jsonPath: .status.capacity.free
  1977            name: Free
  1978            type: string
  1979          - description: Total amount of usable space in pool
  1980            jsonPath: .status.capacity.total
  1981            name: Capacity
  1982            type: string
  1983          - description: Identifies the pool read only mode
  1984            jsonPath: .status.readOnly
  1985            name: ReadOnly
  1986            type: boolean
  1987          - description: Represents no.of replicas present in the pool
  1988            jsonPath: .status.provisionedReplicas
  1989            name: ProvisionedReplicas
  1990            type: integer
  1991          - description: Represents no.of healthy replicas present in the pool
  1992            jsonPath: .status.healthyReplicas
  1993            name: HealthyReplicas
  1994            type: integer
  1995          - description: Represents the type of the storage pool
  1996            jsonPath: .spec.poolConfig.dataRaidGroupType
  1997            name: Type
  1998            priority: 1
  1999            type: string
  2000          - description: Identifies the current health of the pool
  2001            jsonPath: .status.phase
  2002            name: Status
  2003            type: string
  2004          - description: Age of CStorPoolInstance
  2005            jsonPath: .metadata.creationTimestamp
  2006            name: Age
  2007            type: date
  2008        name: v1
  2009        schema:
  2010          openAPIV3Schema:
  2011            description: CStorPoolInstance describes a cstor pool instance resource.
  2012            properties:
  2013              apiVersion:
  2014                description: 'APIVersion defines the versioned schema of this representation
  2015                of an object. Servers should convert recognized schemas to the latest
  2016                internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  2017                type: string
  2018              kind:
  2019                description: 'Kind is a string value representing the REST resource this
  2020                object represents. Servers may infer this from the endpoint the client
  2021                submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  2022                type: string
  2023              metadata:
  2024                type: object
  2025              spec:
  2026                description: Spec is the specification of the cstorpoolinstance resource.
  2027                properties:
  2028                  dataRaidGroups:
  2029                    description: DataRaidGroups is the raid group configuration for the
  2030                      given pool.
  2031                    items:
  2032                      description: RaidGroup contains the details of a raid group for
  2033                        the pool
  2034                      properties:
  2035                        blockDevices:
  2036                          items:
  2037                            description: CStorPoolInstanceBlockDevice contains the details
  2038                              of block devices that constitutes a raid group.
  2039                            properties:
  2040                              blockDeviceName:
  2041                                description: BlockDeviceName is the name of the block
  2042                                  device.
  2043                                type: string
  2044                              capacity:
  2045                                description: Capacity is the capacity of the block device.
  2046                                  It is system generated
  2047                                format: int64
  2048                                type: integer
  2049                              devLink:
  2050                                description: DevLink is the dev link for block devices
  2051                                type: string
  2052                            required:
  2053                              - blockDeviceName
  2054                            type: object
  2055                          type: array
  2056                      required:
  2057                        - blockDevices
  2058                      type: object
  2059                    type: array
  2060                  hostName:
  2061                    description: HostName is the name of kubernetes node where the pool
  2062                      should be created.
  2063                    type: string
  2064                  nodeSelector:
  2065                    additionalProperties:
  2066                      type: string
  2067                    description: NodeSelector is the labels that will be used to select
  2068                      a node for pool provisioning. Required field
  2069                    type: object
  2070                  poolConfig:
  2071                    description: PoolConfig is the default pool config that applies to
  2072                      the pool on node.
  2073                    properties:
  2074                      auxResources:
  2075                        description: AuxResources are the compute resources required by
  2076                          the cstor-pool pod side car containers.
  2077                        nullable: true
  2078                        properties:
  2079                          limits:
  2080                            additionalProperties:
  2081                              anyOf:
  2082                                - type: integer
  2083                                - type: string
  2084                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  2085                              x-kubernetes-int-or-string: true
  2086                            description: 'Limits describes the maximum amount of compute
  2087                            resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
  2088                            type: object
  2089                          requests:
  2090                            additionalProperties:
  2091                              anyOf:
  2092                                - type: integer
  2093                                - type: string
  2094                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  2095                              x-kubernetes-int-or-string: true
  2096                            description: 'Requests describes the minimum amount of compute
  2097                            resources required. If Requests is omitted for a container,
  2098                            it defaults to Limits if that is explicitly specified, otherwise
  2099                            to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
  2100                            type: object
  2101                        type: object
  2102                      compression:
  2103                        description: 'Compression to enable compression Optional -- defaults
  2104                        to off Possible values : lz, off'
  2105                        type: string
  2106                      dataRaidGroupType:
  2107                        description: DataRaidGroupType is the  raid type.
  2108                        type: string
  2109                      priorityClassName:
  2110                        description: PriorityClassName if specified applies to this pool
  2111                          pod If left empty, DefaultPriorityClassName is applied. (See
  2112                          CStorPoolClusterSpec.DefaultPriorityClassName) If both are empty,
  2113                          not priority class is applied.
  2114                        nullable: true
  2115                        type: string
  2116                      resources:
  2117                        description: Resources are the compute resources required by the
  2118                          cstor-pool container.
  2119                        nullable: true
  2120                        properties:
  2121                          limits:
  2122                            additionalProperties:
  2123                              anyOf:
  2124                                - type: integer
  2125                                - type: string
  2126                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  2127                              x-kubernetes-int-or-string: true
  2128                            description: 'Limits describes the maximum amount of compute
  2129                            resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
  2130                            type: object
  2131                          requests:
  2132                            additionalProperties:
  2133                              anyOf:
  2134                                - type: integer
  2135                                - type: string
  2136                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  2137                              x-kubernetes-int-or-string: true
  2138                            description: 'Requests describes the minimum amount of compute
  2139                            resources required. If Requests is omitted for a container,
  2140                            it defaults to Limits if that is explicitly specified, otherwise
  2141                            to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
  2142                            type: object
  2143                        type: object
  2144                      roThresholdLimit:
  2145                        description: 'ROThresholdLimit is threshold(percentage base) limit
  2146                        for pool read only mode. If ROThresholdLimit(%) amount of pool
  2147                        storage is reached then pool will set to readonly. NOTE: 1.
  2148                        If ROThresholdLimit is set to 100 then entire    pool storage
  2149                        will be used by default it will be set to 85%. 2. ROThresholdLimit
  2150                        value will be 0 <= ROThresholdLimit <= 100.'
  2151                        nullable: true
  2152                        type: integer
  2153                      thickProvision:
  2154                        description: ThickProvision to enable thick provisioning Optional
  2155                          -- defaults to false
  2156                        type: boolean
  2157                      tolerations:
  2158                        description: Tolerations, if specified, the pool pod's tolerations.
  2159                        items:
  2160                          description: The pod this Toleration is attached to tolerates
  2161                            any taint that matches the triple <key,value,effect> using
  2162                            the matching operator <operator>.
  2163                          properties:
  2164                            effect:
  2165                              description: Effect indicates the taint effect to match.
  2166                                Empty means match all taint effects. When specified, allowed
  2167                                values are NoSchedule, PreferNoSchedule and NoExecute.
  2168                              type: string
  2169                            key:
  2170                              description: Key is the taint key that the toleration applies
  2171                                to. Empty means match all taint keys. If the key is empty,
  2172                                operator must be Exists; this combination means to match
  2173                                all values and all keys.
  2174                              type: string
  2175                            operator:
  2176                              description: Operator represents a key's relationship to
  2177                                the value. Valid operators are Exists and Equal. Defaults
  2178                                to Equal. Exists is equivalent to wildcard for value,
  2179                                so that a pod can tolerate all taints of a particular
  2180                                category.
  2181                              type: string
  2182                            tolerationSeconds:
  2183                              description: TolerationSeconds represents the period of
  2184                                time the toleration (which must be of effect NoExecute,
  2185                                otherwise this field is ignored) tolerates the taint.
  2186                                By default, it is not set, which means tolerate the taint
  2187                                forever (do not evict). Zero and negative values will
  2188                                be treated as 0 (evict immediately) by the system.
  2189                              format: int64
  2190                              type: integer
  2191                            value:
  2192                              description: Value is the taint value the toleration matches
  2193                                to. If the operator is Exists, the value should be empty,
  2194                                otherwise just a regular string.
  2195                              type: string
  2196                          type: object
  2197                        nullable: true
  2198                        type: array
  2199                      writeCacheGroupType:
  2200                        description: WriteCacheGroupType is the write cache raid type.
  2201                        type: string
  2202                    required:
  2203                      - dataRaidGroupType
  2204                    type: object
  2205                  writeCacheRaidGroups:
  2206                    description: WriteCacheRaidGroups is the write cache raid group.
  2207                    items:
  2208                      description: RaidGroup contains the details of a raid group for
  2209                        the pool
  2210                      properties:
  2211                        blockDevices:
  2212                          items:
  2213                            description: CStorPoolInstanceBlockDevice contains the details
  2214                              of block devices that constitutes a raid group.
  2215                            properties:
  2216                              blockDeviceName:
  2217                                description: BlockDeviceName is the name of the block
  2218                                  device.
  2219                                type: string
  2220                              capacity:
  2221                                description: Capacity is the capacity of the block device.
  2222                                  It is system generated
  2223                                format: int64
  2224                                type: integer
  2225                              devLink:
  2226                                description: DevLink is the dev link for block devices
  2227                                type: string
  2228                            required:
  2229                              - blockDeviceName
  2230                            type: object
  2231                          type: array
  2232                      required:
  2233                        - blockDevices
  2234                      type: object
  2235                    nullable: true
  2236                    type: array
  2237                required:
  2238                  - dataRaidGroups
  2239                  - nodeSelector
  2240                type: object
  2241              status:
  2242                description: Status is the possible statuses of the cstorpoolinstance
  2243                  resource.
  2244                properties:
  2245                  capacity:
  2246                    description: Capacity describes the capacity details of a cstor pool
  2247                    properties:
  2248                      free:
  2249                        anyOf:
  2250                          - type: integer
  2251                          - type: string
  2252                        description: Amount of usable space in the pool after excluding
  2253                          metadata and raid parity
  2254                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  2255                        x-kubernetes-int-or-string: true
  2256                      total:
  2257                        anyOf:
  2258                          - type: integer
  2259                          - type: string
  2260                        description: Sum of usable capacity in all the data raidgroups
  2261                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  2262                        x-kubernetes-int-or-string: true
  2263                      used:
  2264                        anyOf:
  2265                          - type: integer
  2266                          - type: string
  2267                        description: Amount of physical data (and its metadata) written
  2268                          to pool after applying compression, etc..,
  2269                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  2270                        x-kubernetes-int-or-string: true
  2271                      zfs:
  2272                        description: ZFSCapacityAttributes contains advanced information
  2273                          about pool capacity details
  2274                        properties:
  2275                          logicalUsed:
  2276                            anyOf:
  2277                              - type: integer
  2278                              - type: string
  2279                            description: LogicalUsed is the amount of space that is "logically"
  2280                              consumed by this pool and all its descendents. The logical
  2281                              space ignores the effect of the compression and copies properties,
  2282                              giving a quantity closer to the amount of data that applications
  2283                              see. However, it does include space consumed by metadata.
  2284                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  2285                            x-kubernetes-int-or-string: true
  2286                        required:
  2287                          - logicalUsed
  2288                        type: object
  2289                    required:
  2290                      - free
  2291                      - total
  2292                      - used
  2293                      - zfs
  2294                    type: object
  2295                  conditions:
  2296                    description: Current state of CSPI with details.
  2297                    items:
  2298                      description: CSPIConditionType describes the state of a CSPI at
  2299                        a certain point.
  2300                      properties:
  2301                        lastTransitionTime:
  2302                          description: Last time the condition transitioned from one status
  2303                            to another.
  2304                          format: date-time
  2305                          type: string
  2306                        lastUpdateTime:
  2307                          description: The last time this condition was updated.
  2308                          format: date-time
  2309                          type: string
  2310                        message:
  2311                          description: A human readable message indicating details about
  2312                            the transition.
  2313                          type: string
  2314                        reason:
  2315                          description: The reason for the condition's last transition.
  2316                          type: string
  2317                        status:
  2318                          description: Status of the condition, one of True, False, Unknown.
  2319                          type: string
  2320                        type:
  2321                          description: Type of CSPC condition.
  2322                          type: string
  2323                      required:
  2324                        - status
  2325                        - type
  2326                      type: object
  2327                    type: array
  2328                  healthyReplicas:
  2329                    description: HealthyReplicas describes the total count of healthy
  2330                      Volume Replicas in the cstor pool
  2331                    format: int32
  2332                    type: integer
  2333                  phase:
  2334                    description: ' The phase of a CStorPool is a simple, high-level summary
  2335                    of the pool state on the  node.'
  2336                    type: string
  2337                  provisionedReplicas:
  2338                    description: ProvisionedReplicas describes the total count of Volume
  2339                      Replicas present in the cstor pool
  2340                    format: int32
  2341                    type: integer
  2342                  readOnly:
  2343                    description: ReadOnly if pool is readOnly or not
  2344                    type: boolean
  2345                required:
  2346                  - healthyReplicas
  2347                  - provisionedReplicas
  2348                  - readOnly
  2349                type: object
  2350              versionDetails:
  2351                description: VersionDetails is the openebs version.
  2352                properties:
  2353                  autoUpgrade:
  2354                    description: If AutoUpgrade is set to true then the resource is upgraded
  2355                      automatically without any manual steps
  2356                    type: boolean
  2357                  desired:
  2358                    description: Desired is the version that we want to upgrade or the
  2359                      control plane version
  2360                    type: string
  2361                  status:
  2362                    description: Status gives the status of reconciliation triggered when
  2363                      the desired and current version are not same
  2364                    properties:
  2365                      current:
  2366                        description: Current is the version of resource
  2367                        type: string
  2368                      dependentsUpgraded:
  2369                        description: DependentsUpgraded gives the details whether all
  2370                          children of a resource are upgraded to desired version or not
  2371                        type: boolean
  2372                      lastUpdateTime:
  2373                        description: LastUpdateTime is the time the status was last  updated
  2374                        format: date-time
  2375                        nullable: true
  2376                        type: string
  2377                      message:
  2378                        description: Message is a human readable message if some error
  2379                          occurs
  2380                        type: string
  2381                      reason:
  2382                        description: Reason is the actual reason for the error state
  2383                        type: string
  2384                      state:
  2385                        description: State is the state of reconciliation
  2386                        type: string
  2387                    type: object
  2388                type: object
  2389            required:
  2390              - spec
  2391            type: object
  2392        served: true
  2393        storage: true
  2394        subresources: {}
  2395  status:
  2396    acceptedNames:
  2397      kind: ""
  2398      plural: ""
  2399    conditions: []
  2400    storedVersions: []
  2401  ---
  2402  #########################################################################
  2403  ####                                                                #####
  2404  ####                         CStorVolumeConfig CRD                  #####
  2405  ####                                                                #####
  2406  #########################################################################
  2407  apiVersion: apiextensions.k8s.io/v1
  2408  kind: CustomResourceDefinition
  2409  metadata:
  2410    annotations:
  2411      controller-gen.kubebuilder.io/version: v0.4.0
  2412    creationTimestamp: null
  2413    name: cstorvolumeconfigs.cstor.openebs.io
  2414  spec:
  2415    group: cstor.openebs.io
  2416    names:
  2417      kind: CStorVolumeConfig
  2418      listKind: CStorVolumeConfigList
  2419      plural: cstorvolumeconfigs
  2420      shortNames:
  2421        - cvc
  2422      singular: cstorvolumeconfig
  2423    scope: Namespaced
  2424    versions:
  2425      - additionalPrinterColumns:
  2426          - description: Identifies the volume capacity
  2427            jsonPath: .status.capacity.storage
  2428            name: Capacity
  2429            type: string
  2430          - description: Identifies the volume provisioning status
  2431            jsonPath: .status.phase
  2432            name: Status
  2433            type: string
  2434          - description: Age of CStorVolumeReplica
  2435            jsonPath: .metadata.creationTimestamp
  2436            name: Age
  2437            type: date
  2438        name: v1
  2439        schema:
  2440          openAPIV3Schema:
  2441            description: CStorVolumeConfig describes a cstor volume config resource created
  2442              as custom resource. CStorVolumeConfig is a request for creating cstor volume
  2443              related resources like deployment, svc etc.
  2444            properties:
  2445              apiVersion:
  2446                description: 'APIVersion defines the versioned schema of this representation
  2447                of an object. Servers should convert recognized schemas to the latest
  2448                internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  2449                type: string
  2450              kind:
  2451                description: 'Kind is a string value representing the REST resource this
  2452                object represents. Servers may infer this from the endpoint the client
  2453                submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  2454                type: string
  2455              metadata:
  2456                type: object
  2457              publish:
  2458                description: Publish contains info related to attachment of a volume to
  2459                  a node. i.e. NodeId etc.
  2460                properties:
  2461                  nodeId:
  2462                    description: NodeID contains publish info related to attachment of
  2463                      a volume to a node.
  2464                    type: string
  2465                type: object
  2466              spec:
  2467                description: Spec defines a specification of a cstor volume config required
  2468                  to provisione cstor volume resources
  2469                properties:
  2470                  capacity:
  2471                    additionalProperties:
  2472                      anyOf:
  2473                        - type: integer
  2474                        - type: string
  2475                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  2476                      x-kubernetes-int-or-string: true
  2477                    description: Capacity represents the actual resources of the underlying
  2478                      cstor volume.
  2479                    type: object
  2480                  cstorVolumeRef:
  2481                    description: CStorVolumeRef has the information about where CstorVolumeClaim
  2482                      is created from.
  2483                    properties:
  2484                      apiVersion:
  2485                        description: API version of the referent.
  2486                        type: string
  2487                      fieldPath:
  2488                        description: 'If referring to a piece of an object instead of
  2489                        an entire object, this string should contain a valid JSON/Go
  2490                        field access statement, such as desiredState.manifest.containers[2].
  2491                        For example, if the object reference is to a container within
  2492                        a pod, this would take on a value like: "spec.containers{name}"
  2493                        (where "name" refers to the name of the container that triggered
  2494                        the event) or if no container name is specified "spec.containers[2]"
  2495                        (container with index 2 in this pod). This syntax is chosen
  2496                        only to have some well-defined way of referencing a part of
  2497                        an object. TODO: this design is not final and this field is
  2498                        subject to change in the future.'
  2499                        type: string
  2500                      kind:
  2501                        description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  2502                        type: string
  2503                      name:
  2504                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
  2505                        type: string
  2506                      namespace:
  2507                        description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
  2508                        type: string
  2509                      resourceVersion:
  2510                        description: 'Specific resourceVersion to which this reference
  2511                        is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
  2512                        type: string
  2513                      uid:
  2514                        description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
  2515                        type: string
  2516                    type: object
  2517                  cstorVolumeSource:
  2518                    description: CStorVolumeSource contains the source volumeName@snapShotname
  2519                      combaination.  This will be filled only if it is a clone creation.
  2520                    type: string
  2521                  policy:
  2522                    description: Policy contains volume specific required policies target
  2523                      and replicas
  2524                    properties:
  2525                      provision:
  2526                        description: replicaAffinity is set to true then volume replica
  2527                          resources need to be distributed across the pool instances
  2528                        properties:
  2529                          blockSize:
  2530                            description: BlockSize is the logical block size in multiple
  2531                              of 512 bytes BlockSize specifies the block size of the volume.
  2532                              The blocksize cannot be changed once the volume has been
  2533                              written, so it should be set at volume creation time. The
  2534                              default blocksize for volumes is 4 Kbytes. Any power of
  2535                              2 from 512 bytes to 128 Kbytes is valid.
  2536                            format: int32
  2537                            type: integer
  2538                          replicaAffinity:
  2539                            description: replicaAffinity is set to true then volume replica
  2540                              resources need to be distributed across the cstor pool instances
  2541                              based on the given topology
  2542                            type: boolean
  2543                        required:
  2544                          - replicaAffinity
  2545                        type: object
  2546                      replica:
  2547                        description: ReplicaSpec represents configuration related to replicas
  2548                          resources
  2549                        properties:
  2550                          compression:
  2551                            description: The zle compression algorithm compresses runs
  2552                              of zeros.
  2553                            type: string
  2554                          zvolWorkers:
  2555                            description: IOWorkers represents number of threads that executes
  2556                              client IOs
  2557                            type: string
  2558                        type: object
  2559                      replicaPoolInfo:
  2560                        description: 'ReplicaPoolInfo holds the pool information of volume
  2561                        replicas. Ex: If volume is provisioned on which CStor pool volume
  2562                        replicas exist'
  2563                        items:
  2564                          description: ReplicaPoolInfo represents the pool information
  2565                            of volume replica
  2566                          properties:
  2567                            poolName:
  2568                              description: PoolName represents the pool name where volume
  2569                                replica exists
  2570                              type: string
  2571                          required:
  2572                            - poolName
  2573                          type: object
  2574                        type: array
  2575                      target:
  2576                        description: TargetSpec represents configuration related to cstor
  2577                          target and its resources
  2578                        properties:
  2579                          affinity:
  2580                            description: PodAffinity if specified, are the target pod's
  2581                              affinities
  2582                            properties:
  2583                              preferredDuringSchedulingIgnoredDuringExecution:
  2584                                description: The scheduler will prefer to schedule pods
  2585                                  to nodes that satisfy the affinity expressions specified
  2586                                  by this field, but it may choose a node that violates
  2587                                  one or more of the expressions. The node that is most
  2588                                  preferred is the one with the greatest sum of weights,
  2589                                  i.e. for each node that meets all of the scheduling
  2590                                  requirements (resource request, requiredDuringScheduling
  2591                                  affinity expressions, etc.), compute a sum by iterating
  2592                                  through the elements of this field and adding "weight"
  2593                                  to the sum if the node has pods which matches the corresponding
  2594                                  podAffinityTerm; the node(s) with the highest sum are
  2595                                  the most preferred.
  2596                                items:
  2597                                  description: The weights of all of the matched WeightedPodAffinityTerm
  2598                                    fields are added per-node to find the most preferred
  2599                                    node(s)
  2600                                  properties:
  2601                                    podAffinityTerm:
  2602                                      description: Required. A pod affinity term, associated
  2603                                        with the corresponding weight.
  2604                                      properties:
  2605                                        labelSelector:
  2606                                          description: A label query over a set of resources,
  2607                                            in this case pods.
  2608                                          properties:
  2609                                            matchExpressions:
  2610                                              description: matchExpressions is a list
  2611                                                of label selector requirements. The requirements
  2612                                                are ANDed.
  2613                                              items:
  2614                                                description: A label selector requirement
  2615                                                  is a selector that contains values,
  2616                                                  a key, and an operator that relates
  2617                                                  the key and values.
  2618                                                properties:
  2619                                                  key:
  2620                                                    description: key is the label key
  2621                                                      that the selector applies to.
  2622                                                    type: string
  2623                                                  operator:
  2624                                                    description: operator represents a
  2625                                                      key's relationship to a set of values.
  2626                                                      Valid operators are In, NotIn, Exists
  2627                                                      and DoesNotExist.
  2628                                                    type: string
  2629                                                  values:
  2630                                                    description: values is an array of
  2631                                                      string values. If the operator is
  2632                                                      In or NotIn, the values array must
  2633                                                      be non-empty. If the operator is
  2634                                                      Exists or DoesNotExist, the values
  2635                                                      array must be empty. This array
  2636                                                      is replaced during a strategic merge
  2637                                                      patch.
  2638                                                    items:
  2639                                                      type: string
  2640                                                    type: array
  2641                                                required:
  2642                                                  - key
  2643                                                  - operator
  2644                                                type: object
  2645                                              type: array
  2646                                            matchLabels:
  2647                                              additionalProperties:
  2648                                                type: string
  2649                                              description: matchLabels is a map of {key,value}
  2650                                                pairs. A single {key,value} in the matchLabels
  2651                                                map is equivalent to an element of matchExpressions,
  2652                                                whose key field is "key", the operator
  2653                                                is "In", and the values array contains
  2654                                                only "value". The requirements are ANDed.
  2655                                              type: object
  2656                                          type: object
  2657                                        namespaces:
  2658                                          description: namespaces specifies which namespaces
  2659                                            the labelSelector applies to (matches against);
  2660                                            null or empty list means "this pod's namespace"
  2661                                          items:
  2662                                            type: string
  2663                                          type: array
  2664                                        topologyKey:
  2665                                          description: This pod should be co-located (affinity)
  2666                                            or not co-located (anti-affinity) with the
  2667                                            pods matching the labelSelector in the specified
  2668                                            namespaces, where co-located is defined as
  2669                                            running on a node whose value of the label
  2670                                            with key topologyKey matches that of any node
  2671                                            on which any of the selected pods is running.
  2672                                            Empty topologyKey is not allowed.
  2673                                          type: string
  2674                                      required:
  2675                                        - topologyKey
  2676                                      type: object
  2677                                    weight:
  2678                                      description: weight associated with matching the
  2679                                        corresponding podAffinityTerm, in the range 1-100.
  2680                                      format: int32
  2681                                      type: integer
  2682                                  required:
  2683                                    - podAffinityTerm
  2684                                    - weight
  2685                                  type: object
  2686                                type: array
  2687                              requiredDuringSchedulingIgnoredDuringExecution:
  2688                                description: If the affinity requirements specified by
  2689                                  this field are not met at scheduling time, the pod will
  2690                                  not be scheduled onto the node. If the affinity requirements
  2691                                  specified by this field cease to be met at some point
  2692                                  during pod execution (e.g. due to a pod label update),
  2693                                  the system may or may not try to eventually evict the
  2694                                  pod from its node. When there are multiple elements,
  2695                                  the lists of nodes corresponding to each podAffinityTerm
  2696                                  are intersected, i.e. all terms must be satisfied.
  2697                                items:
  2698                                  description: Defines a set of pods (namely those matching
  2699                                    the labelSelector relative to the given namespace(s))
  2700                                    that this pod should be co-located (affinity) or not
  2701                                    co-located (anti-affinity) with, where co-located
  2702                                    is defined as running on a node whose value of the
  2703                                    label with key <topologyKey> matches that of any node
  2704                                    on which a pod of the set of pods is running
  2705                                  properties:
  2706                                    labelSelector:
  2707                                      description: A label query over a set of resources,
  2708                                        in this case pods.
  2709                                      properties:
  2710                                        matchExpressions:
  2711                                          description: matchExpressions is a list of label
  2712                                            selector requirements. The requirements are
  2713                                            ANDed.
  2714                                          items:
  2715                                            description: A label selector requirement
  2716                                              is a selector that contains values, a key,
  2717                                              and an operator that relates the key and
  2718                                              values.
  2719                                            properties:
  2720                                              key:
  2721                                                description: key is the label key that
  2722                                                  the selector applies to.
  2723                                                type: string
  2724                                              operator:
  2725                                                description: operator represents a key's
  2726                                                  relationship to a set of values. Valid
  2727                                                  operators are In, NotIn, Exists and
  2728                                                  DoesNotExist.
  2729                                                type: string
  2730                                              values:
  2731                                                description: values is an array of string
  2732                                                  values. If the operator is In or NotIn,
  2733                                                  the values array must be non-empty.
  2734                                                  If the operator is Exists or DoesNotExist,
  2735                                                  the values array must be empty. This
  2736                                                  array is replaced during a strategic
  2737                                                  merge patch.
  2738                                                items:
  2739                                                  type: string
  2740                                                type: array
  2741                                            required:
  2742                                              - key
  2743                                              - operator
  2744                                            type: object
  2745                                          type: array
  2746                                        matchLabels:
  2747                                          additionalProperties:
  2748                                            type: string
  2749                                          description: matchLabels is a map of {key,value}
  2750                                            pairs. A single {key,value} in the matchLabels
  2751                                            map is equivalent to an element of matchExpressions,
  2752                                            whose key field is "key", the operator is
  2753                                            "In", and the values array contains only "value".
  2754                                            The requirements are ANDed.
  2755                                          type: object
  2756                                      type: object
  2757                                    namespaces:
  2758                                      description: namespaces specifies which namespaces
  2759                                        the labelSelector applies to (matches against);
  2760                                        null or empty list means "this pod's namespace"
  2761                                      items:
  2762                                        type: string
  2763                                      type: array
  2764                                    topologyKey:
  2765                                      description: This pod should be co-located (affinity)
  2766                                        or not co-located (anti-affinity) with the pods
  2767                                        matching the labelSelector in the specified namespaces,
  2768                                        where co-located is defined as running on a node
  2769                                        whose value of the label with key topologyKey
  2770                                        matches that of any node on which any of the selected
  2771                                        pods is running. Empty topologyKey is not allowed.
  2772                                      type: string
  2773                                  required:
  2774                                    - topologyKey
  2775                                  type: object
  2776                                type: array
  2777                            type: object
  2778                          auxResources:
  2779                            description: AuxResources are the compute resources required
  2780                              by the cstor-target pod side car containers.
  2781                            properties:
  2782                              limits:
  2783                                additionalProperties:
  2784                                  anyOf:
  2785                                    - type: integer
  2786                                    - type: string
  2787                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  2788                                  x-kubernetes-int-or-string: true
  2789                                description: 'Limits describes the maximum amount of compute
  2790                                resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
  2791                                type: object
  2792                              requests:
  2793                                additionalProperties:
  2794                                  anyOf:
  2795                                    - type: integer
  2796                                    - type: string
  2797                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  2798                                  x-kubernetes-int-or-string: true
  2799                                description: 'Requests describes the minimum amount of
  2800                                compute resources required. If Requests is omitted for
  2801                                a container, it defaults to Limits if that is explicitly
  2802                                specified, otherwise to an implementation-defined value.
  2803                                More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
  2804                                type: object
  2805                            type: object
  2806                          luWorkers:
  2807                            description: IOWorkers sets the number of threads that are
  2808                              working on above queue
  2809                            format: int64
  2810                            type: integer
  2811                          monitor:
  2812                            description: Monitor enables or disables the target exporter
  2813                              sidecar
  2814                            type: boolean
  2815                          nodeSelector:
  2816                            additionalProperties:
  2817                              type: string
  2818                            description: NodeSelector is the labels that will be used
  2819                              to select a node for target pod scheduling Required field
  2820                            type: object
  2821                          priorityClassName:
  2822                            description: PriorityClassName if specified applies to this
  2823                              target pod If left empty, no priority class is applied.
  2824                            type: string
  2825                          queueDepth:
  2826                            description: QueueDepth sets the queue size at iSCSI target
  2827                              which limits the ongoing IO count from client
  2828                            type: string
  2829                          replicationFactor:
  2830                            description: ReplicationFactor represents maximum number of
  2831                              replicas that are allowed to connect to the target
  2832                            format: int64
  2833                            type: integer
  2834                          resources:
  2835                            description: Resources are the compute resources required
  2836                              by the cstor-target container.
  2837                            properties:
  2838                              limits:
  2839                                additionalProperties:
  2840                                  anyOf:
  2841                                    - type: integer
  2842                                    - type: string
  2843                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  2844                                  x-kubernetes-int-or-string: true
  2845                                description: 'Limits describes the maximum amount of compute
  2846                                resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
  2847                                type: object
  2848                              requests:
  2849                                additionalProperties:
  2850                                  anyOf:
  2851                                    - type: integer
  2852                                    - type: string
  2853                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  2854                                  x-kubernetes-int-or-string: true
  2855                                description: 'Requests describes the minimum amount of
  2856                                compute resources required. If Requests is omitted for
  2857                                a container, it defaults to Limits if that is explicitly
  2858                                specified, otherwise to an implementation-defined value.
  2859                                More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
  2860                                type: object
  2861                            type: object
  2862                          tolerations:
  2863                            description: Tolerations, if specified, are the target pod's
  2864                              tolerations
  2865                            items:
  2866                              description: The pod this Toleration is attached to tolerates
  2867                                any taint that matches the triple <key,value,effect> using
  2868                                the matching operator <operator>.
  2869                              properties:
  2870                                effect:
  2871                                  description: Effect indicates the taint effect to match.
  2872                                    Empty means match all taint effects. When specified,
  2873                                    allowed values are NoSchedule, PreferNoSchedule and
  2874                                    NoExecute.
  2875                                  type: string
  2876                                key:
  2877                                  description: Key is the taint key that the toleration
  2878                                    applies to. Empty means match all taint keys. If the
  2879                                    key is empty, operator must be Exists; this combination
  2880                                    means to match all values and all keys.
  2881                                  type: string
  2882                                operator:
  2883                                  description: Operator represents a key's relationship
  2884                                    to the value. Valid operators are Exists and Equal.
  2885                                    Defaults to Equal. Exists is equivalent to wildcard
  2886                                    for value, so that a pod can tolerate all taints of
  2887                                    a particular category.
  2888                                  type: string
  2889                                tolerationSeconds:
  2890                                  description: TolerationSeconds represents the period
  2891                                    of time the toleration (which must be of effect NoExecute,
  2892                                    otherwise this field is ignored) tolerates the taint.
  2893                                    By default, it is not set, which means tolerate the
  2894                                    taint forever (do not evict). Zero and negative values
  2895                                    will be treated as 0 (evict immediately) by the system.
  2896                                  format: int64
  2897                                  type: integer
  2898                                value:
  2899                                  description: Value is the taint value the toleration
  2900                                    matches to. If the operator is Exists, the value should
  2901                                    be empty, otherwise just a regular string.
  2902                                  type: string
  2903                              type: object
  2904                            type: array
  2905                        type: object
  2906                    type: object
  2907                  provision:
  2908                    description: Provision represents the initial volume configuration
  2909                      for the underlying cstor volume based on the persistent volume request
  2910                      by user. Provision properties are immutable
  2911                    properties:
  2912                      capacity:
  2913                        additionalProperties:
  2914                          anyOf:
  2915                            - type: integer
  2916                            - type: string
  2917                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  2918                          x-kubernetes-int-or-string: true
  2919                        description: Capacity represents initial capacity of volume replica
  2920                          required during volume clone operations to maintain some metadata
  2921                          info related to child resources like snapshot, cloned volumes.
  2922                        type: object
  2923                      replicaCount:
  2924                        description: ReplicaCount represents initial cstor volume replica
  2925                          count, its will not be updated later on based on scale up/down
  2926                          operations, only readonly operations and validations.
  2927                        type: integer
  2928                    required:
  2929                      - capacity
  2930                      - replicaCount
  2931                    type: object
  2932                required:
  2933                  - capacity
  2934                  - policy
  2935                  - provision
  2936                type: object
  2937              status:
  2938                description: Status represents the current information/status for the
  2939                  cstor volume config, populated by the controller.
  2940                properties:
  2941                  capacity:
  2942                    additionalProperties:
  2943                      anyOf:
  2944                        - type: integer
  2945                        - type: string
  2946                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  2947                      x-kubernetes-int-or-string: true
  2948                    description: Capacity the actual resources of the underlying volume.
  2949                    type: object
  2950                  condition:
  2951                    items:
  2952                      description: CStorVolumeConfigCondition contains details about state
  2953                        of cstor volume
  2954                      properties:
  2955                        lastProbeTime:
  2956                          description: Last time we probed the condition.
  2957                          format: date-time
  2958                          type: string
  2959                        lastTransitionTime:
  2960                          description: Last time the condition transitioned from one status
  2961                            to another.
  2962                          format: date-time
  2963                          type: string
  2964                        message:
  2965                          description: Human-readable message indicating details about
  2966                            last transition.
  2967                          type: string
  2968                        reason:
  2969                          description: Reason is a brief CamelCase string that describes
  2970                            any failure
  2971                          type: string
  2972                        type:
  2973                          description: Current Condition of cstor volume config. If underlying
  2974                            persistent volume is being resized then the Condition will
  2975                            be set to 'ResizeStarted' etc
  2976                          type: string
  2977                      required:
  2978                        - message
  2979                        - reason
  2980                        - type
  2981                      type: object
  2982                    type: array
  2983                  phase:
  2984                    description: Phase represents the current phase of CStorVolumeConfig.
  2985                    type: string
  2986                  poolInfo:
  2987                    description: PoolInfo represents current pool names where volume replicas
  2988                      exists
  2989                    items:
  2990                      type: string
  2991                    type: array
  2992                type: object
  2993              versionDetails:
  2994                description: VersionDetails provides the details for upgrade
  2995                properties:
  2996                  autoUpgrade:
  2997                    description: If AutoUpgrade is set to true then the resource is upgraded
  2998                      automatically without any manual steps
  2999                    type: boolean
  3000                  desired:
  3001                    description: Desired is the version that we want to upgrade or the
  3002                      control plane version
  3003                    type: string
  3004                  status:
  3005                    description: Status gives the status of reconciliation triggered when
  3006                      the desired and current version are not same
  3007                    properties:
  3008                      current:
  3009                        description: Current is the version of resource
  3010                        type: string
  3011                      dependentsUpgraded:
  3012                        description: DependentsUpgraded gives the details whether all
  3013                          children of a resource are upgraded to desired version or not
  3014                        type: boolean
  3015                      lastUpdateTime:
  3016                        description: LastUpdateTime is the time the status was last  updated
  3017                        format: date-time
  3018                        nullable: true
  3019                        type: string
  3020                      message:
  3021                        description: Message is a human readable message if some error
  3022                          occurs
  3023                        type: string
  3024                      reason:
  3025                        description: Reason is the actual reason for the error state
  3026                        type: string
  3027                      state:
  3028                        description: State is the state of reconciliation
  3029                        type: string
  3030                    type: object
  3031                type: object
  3032            required:
  3033              - spec
  3034              - status
  3035              - versionDetails
  3036            type: object
  3037        served: true
  3038        storage: true
  3039        subresources: {}
  3040  status:
  3041    acceptedNames:
  3042      kind: ""
  3043      plural: ""
  3044    conditions: []
  3045    storedVersions: []
  3046  ---
  3047  ################################################################
  3048  ####                                                       #####
  3049  ####                  CStorVolumePolicies                  #####
  3050  ####                                                       #####
  3051  ################################################################
  3052  apiVersion: apiextensions.k8s.io/v1
  3053  kind: CustomResourceDefinition
  3054  metadata:
  3055    annotations:
  3056      controller-gen.kubebuilder.io/version: v0.4.0
  3057    creationTimestamp: null
  3058    name: cstorvolumepolicies.cstor.openebs.io
  3059  spec:
  3060    group: cstor.openebs.io
  3061    names:
  3062      kind: CStorVolumePolicy
  3063      listKind: CStorVolumePolicyList
  3064      plural: cstorvolumepolicies
  3065      shortNames:
  3066        - cvp
  3067      singular: cstorvolumepolicy
  3068    scope: Namespaced
  3069    versions:
  3070      - name: v1
  3071        schema:
  3072          openAPIV3Schema:
  3073            description: CStorVolumePolicy describes a configuration required for cstor
  3074              volume resources
  3075            properties:
  3076              apiVersion:
  3077                description: 'APIVersion defines the versioned schema of this representation
  3078                of an object. Servers should convert recognized schemas to the latest
  3079                internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  3080                type: string
  3081              kind:
  3082                description: 'Kind is a string value representing the REST resource this
  3083                object represents. Servers may infer this from the endpoint the client
  3084                submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  3085                type: string
  3086              metadata:
  3087                type: object
  3088              spec:
  3089                description: Spec defines a configuration info of a cstor volume required
  3090                  to provisione cstor volume resources
  3091                properties:
  3092                  provision:
  3093                    description: replicaAffinity is set to true then volume replica resources
  3094                      need to be distributed across the pool instances
  3095                    properties:
  3096                      blockSize:
  3097                        description: BlockSize is the logical block size in multiple of
  3098                          512 bytes BlockSize specifies the block size of the volume.
  3099                          The blocksize cannot be changed once the volume has been written,
  3100                          so it should be set at volume creation time. The default blocksize
  3101                          for volumes is 4 Kbytes. Any power of 2 from 512 bytes to 128
  3102                          Kbytes is valid.
  3103                        format: int32
  3104                        type: integer
  3105                      replicaAffinity:
  3106                        description: replicaAffinity is set to true then volume replica
  3107                          resources need to be distributed across the cstor pool instances
  3108                          based on the given topology
  3109                        type: boolean
  3110                    required:
  3111                      - replicaAffinity
  3112                    type: object
  3113                  replica:
  3114                    description: ReplicaSpec represents configuration related to replicas
  3115                      resources
  3116                    properties:
  3117                      compression:
  3118                        description: The zle compression algorithm compresses runs of
  3119                          zeros.
  3120                        type: string
  3121                      zvolWorkers:
  3122                        description: IOWorkers represents number of threads that executes
  3123                          client IOs
  3124                        type: string
  3125                    type: object
  3126                  replicaPoolInfo:
  3127                    description: 'ReplicaPoolInfo holds the pool information of volume
  3128                    replicas. Ex: If volume is provisioned on which CStor pool volume
  3129                    replicas exist'
  3130                    items:
  3131                      description: ReplicaPoolInfo represents the pool information of
  3132                        volume replica
  3133                      properties:
  3134                        poolName:
  3135                          description: PoolName represents the pool name where volume
  3136                            replica exists
  3137                          type: string
  3138                      required:
  3139                        - poolName
  3140                      type: object
  3141                    type: array
  3142                  target:
  3143                    description: TargetSpec represents configuration related to cstor
  3144                      target and its resources
  3145                    properties:
  3146                      affinity:
  3147                        description: PodAffinity if specified, are the target pod's affinities
  3148                        properties:
  3149                          preferredDuringSchedulingIgnoredDuringExecution:
  3150                            description: The scheduler will prefer to schedule pods to
  3151                              nodes that satisfy the affinity expressions specified by
  3152                              this field, but it may choose a node that violates one or
  3153                              more of the expressions. The node that is most preferred
  3154                              is the one with the greatest sum of weights, i.e. for each
  3155                              node that meets all of the scheduling requirements (resource
  3156                              request, requiredDuringScheduling affinity expressions,
  3157                              etc.), compute a sum by iterating through the elements of
  3158                              this field and adding "weight" to the sum if the node has
  3159                              pods which matches the corresponding podAffinityTerm; the
  3160                              node(s) with the highest sum are the most preferred.
  3161                            items:
  3162                              description: The weights of all of the matched WeightedPodAffinityTerm
  3163                                fields are added per-node to find the most preferred node(s)
  3164                              properties:
  3165                                podAffinityTerm:
  3166                                  description: Required. A pod affinity term, associated
  3167                                    with the corresponding weight.
  3168                                  properties:
  3169                                    labelSelector:
  3170                                      description: A label query over a set of resources,
  3171                                        in this case pods.
  3172                                      properties:
  3173                                        matchExpressions:
  3174                                          description: matchExpressions is a list of label
  3175                                            selector requirements. The requirements are
  3176                                            ANDed.
  3177                                          items:
  3178                                            description: A label selector requirement
  3179                                              is a selector that contains values, a key,
  3180                                              and an operator that relates the key and
  3181                                              values.
  3182                                            properties:
  3183                                              key:
  3184                                                description: key is the label key that
  3185                                                  the selector applies to.
  3186                                                type: string
  3187                                              operator:
  3188                                                description: operator represents a key's
  3189                                                  relationship to a set of values. Valid
  3190                                                  operators are In, NotIn, Exists and
  3191                                                  DoesNotExist.
  3192                                                type: string
  3193                                              values:
  3194                                                description: values is an array of string
  3195                                                  values. If the operator is In or NotIn,
  3196                                                  the values array must be non-empty.
  3197                                                  If the operator is Exists or DoesNotExist,
  3198                                                  the values array must be empty. This
  3199                                                  array is replaced during a strategic
  3200                                                  merge patch.
  3201                                                items:
  3202                                                  type: string
  3203                                                type: array
  3204                                            required:
  3205                                              - key
  3206                                              - operator
  3207                                            type: object
  3208                                          type: array
  3209                                        matchLabels:
  3210                                          additionalProperties:
  3211                                            type: string
  3212                                          description: matchLabels is a map of {key,value}
  3213                                            pairs. A single {key,value} in the matchLabels
  3214                                            map is equivalent to an element of matchExpressions,
  3215                                            whose key field is "key", the operator is
  3216                                            "In", and the values array contains only "value".
  3217                                            The requirements are ANDed.
  3218                                          type: object
  3219                                      type: object
  3220                                    namespaces:
  3221                                      description: namespaces specifies which namespaces
  3222                                        the labelSelector applies to (matches against);
  3223                                        null or empty list means "this pod's namespace"
  3224                                      items:
  3225                                        type: string
  3226                                      type: array
  3227                                    topologyKey:
  3228                                      description: This pod should be co-located (affinity)
  3229                                        or not co-located (anti-affinity) with the pods
  3230                                        matching the labelSelector in the specified namespaces,
  3231                                        where co-located is defined as running on a node
  3232                                        whose value of the label with key topologyKey
  3233                                        matches that of any node on which any of the selected
  3234                                        pods is running. Empty topologyKey is not allowed.
  3235                                      type: string
  3236                                  required:
  3237                                    - topologyKey
  3238                                  type: object
  3239                                weight:
  3240                                  description: weight associated with matching the corresponding
  3241                                    podAffinityTerm, in the range 1-100.
  3242                                  format: int32
  3243                                  type: integer
  3244                              required:
  3245                                - podAffinityTerm
  3246                                - weight
  3247                              type: object
  3248                            type: array
  3249                          requiredDuringSchedulingIgnoredDuringExecution:
  3250                            description: If the affinity requirements specified by this
  3251                              field are not met at scheduling time, the pod will not be
  3252                              scheduled onto the node. If the affinity requirements specified
  3253                              by this field cease to be met at some point during pod execution
  3254                              (e.g. due to a pod label update), the system may or may
  3255                              not try to eventually evict the pod from its node. When
  3256                              there are multiple elements, the lists of nodes corresponding
  3257                              to each podAffinityTerm are intersected, i.e. all terms
  3258                              must be satisfied.
  3259                            items:
  3260                              description: Defines a set of pods (namely those matching
  3261                                the labelSelector relative to the given namespace(s))
  3262                                that this pod should be co-located (affinity) or not co-located
  3263                                (anti-affinity) with, where co-located is defined as running
  3264                                on a node whose value of the label with key <topologyKey>
  3265                                matches that of any node on which a pod of the set of
  3266                                pods is running
  3267                              properties:
  3268                                labelSelector:
  3269                                  description: A label query over a set of resources,
  3270                                    in this case pods.
  3271                                  properties:
  3272                                    matchExpressions:
  3273                                      description: matchExpressions is a list of label
  3274                                        selector requirements. The requirements are ANDed.
  3275                                      items:
  3276                                        description: A label selector requirement is a
  3277                                          selector that contains values, a key, and an
  3278                                          operator that relates the key and values.
  3279                                        properties:
  3280                                          key:
  3281                                            description: key is the label key that the
  3282                                              selector applies to.
  3283                                            type: string
  3284                                          operator:
  3285                                            description: operator represents a key's relationship
  3286                                              to a set of values. Valid operators are
  3287                                              In, NotIn, Exists and DoesNotExist.
  3288                                            type: string
  3289                                          values:
  3290                                            description: values is an array of string
  3291                                              values. If the operator is In or NotIn,
  3292                                              the values array must be non-empty. If the
  3293                                              operator is Exists or DoesNotExist, the
  3294                                              values array must be empty. This array is
  3295                                              replaced during a strategic merge patch.
  3296                                            items:
  3297                                              type: string
  3298                                            type: array
  3299                                        required:
  3300                                          - key
  3301                                          - operator
  3302                                        type: object
  3303                                      type: array
  3304                                    matchLabels:
  3305                                      additionalProperties:
  3306                                        type: string
  3307                                      description: matchLabels is a map of {key,value}
  3308                                        pairs. A single {key,value} in the matchLabels
  3309                                        map is equivalent to an element of matchExpressions,
  3310                                        whose key field is "key", the operator is "In",
  3311                                        and the values array contains only "value". The
  3312                                        requirements are ANDed.
  3313                                      type: object
  3314                                  type: object
  3315                                namespaces:
  3316                                  description: namespaces specifies which namespaces the
  3317                                    labelSelector applies to (matches against); null or
  3318                                    empty list means "this pod's namespace"
  3319                                  items:
  3320                                    type: string
  3321                                  type: array
  3322                                topologyKey:
  3323                                  description: This pod should be co-located (affinity)
  3324                                    or not co-located (anti-affinity) with the pods matching
  3325                                    the labelSelector in the specified namespaces, where
  3326                                    co-located is defined as running on a node whose value
  3327                                    of the label with key topologyKey matches that of
  3328                                    any node on which any of the selected pods is running.
  3329                                    Empty topologyKey is not allowed.
  3330                                  type: string
  3331                              required:
  3332                                - topologyKey
  3333                              type: object
  3334                            type: array
  3335                        type: object
  3336                      auxResources:
  3337                        description: AuxResources are the compute resources required by
  3338                          the cstor-target pod side car containers.
  3339                        properties:
  3340                          limits:
  3341                            additionalProperties:
  3342                              anyOf:
  3343                                - type: integer
  3344                                - type: string
  3345                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  3346                              x-kubernetes-int-or-string: true
  3347                            description: 'Limits describes the maximum amount of compute
  3348                            resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
  3349                            type: object
  3350                          requests:
  3351                            additionalProperties:
  3352                              anyOf:
  3353                                - type: integer
  3354                                - type: string
  3355                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  3356                              x-kubernetes-int-or-string: true
  3357                            description: 'Requests describes the minimum amount of compute
  3358                            resources required. If Requests is omitted for a container,
  3359                            it defaults to Limits if that is explicitly specified, otherwise
  3360                            to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
  3361                            type: object
  3362                        type: object
  3363                      luWorkers:
  3364                        description: IOWorkers sets the number of threads that are working
  3365                          on above queue
  3366                        format: int64
  3367                        type: integer
  3368                      monitor:
  3369                        description: Monitor enables or disables the target exporter sidecar
  3370                        type: boolean
  3371                      nodeSelector:
  3372                        additionalProperties:
  3373                          type: string
  3374                        description: NodeSelector is the labels that will be used to select
  3375                          a node for target pod scheduling Required field
  3376                        type: object
  3377                      priorityClassName:
  3378                        description: PriorityClassName if specified applies to this target
  3379                          pod If left empty, no priority class is applied.
  3380                        type: string
  3381                      queueDepth:
  3382                        description: QueueDepth sets the queue size at iSCSI target which
  3383                          limits the ongoing IO count from client
  3384                        type: string
  3385                      replicationFactor:
  3386                        description: ReplicationFactor represents maximum number of replicas
  3387                          that are allowed to connect to the target
  3388                        format: int64
  3389                        type: integer
  3390                      resources:
  3391                        description: Resources are the compute resources required by the
  3392                          cstor-target container.
  3393                        properties:
  3394                          limits:
  3395                            additionalProperties:
  3396                              anyOf:
  3397                                - type: integer
  3398                                - type: string
  3399                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  3400                              x-kubernetes-int-or-string: true
  3401                            description: 'Limits describes the maximum amount of compute
  3402                            resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
  3403                            type: object
  3404                          requests:
  3405                            additionalProperties:
  3406                              anyOf:
  3407                                - type: integer
  3408                                - type: string
  3409                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  3410                              x-kubernetes-int-or-string: true
  3411                            description: 'Requests describes the minimum amount of compute
  3412                            resources required. If Requests is omitted for a container,
  3413                            it defaults to Limits if that is explicitly specified, otherwise
  3414                            to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
  3415                            type: object
  3416                        type: object
  3417                      tolerations:
  3418                        description: Tolerations, if specified, are the target pod's tolerations
  3419                        items:
  3420                          description: The pod this Toleration is attached to tolerates
  3421                            any taint that matches the triple <key,value,effect> using
  3422                            the matching operator <operator>.
  3423                          properties:
  3424                            effect:
  3425                              description: Effect indicates the taint effect to match.
  3426                                Empty means match all taint effects. When specified, allowed
  3427                                values are NoSchedule, PreferNoSchedule and NoExecute.
  3428                              type: string
  3429                            key:
  3430                              description: Key is the taint key that the toleration applies
  3431                                to. Empty means match all taint keys. If the key is empty,
  3432                                operator must be Exists; this combination means to match
  3433                                all values and all keys.
  3434                              type: string
  3435                            operator:
  3436                              description: Operator represents a key's relationship to
  3437                                the value. Valid operators are Exists and Equal. Defaults
  3438                                to Equal. Exists is equivalent to wildcard for value,
  3439                                so that a pod can tolerate all taints of a particular
  3440                                category.
  3441                              type: string
  3442                            tolerationSeconds:
  3443                              description: TolerationSeconds represents the period of
  3444                                time the toleration (which must be of effect NoExecute,
  3445                                otherwise this field is ignored) tolerates the taint.
  3446                                By default, it is not set, which means tolerate the taint
  3447                                forever (do not evict). Zero and negative values will
  3448                                be treated as 0 (evict immediately) by the system.
  3449                              format: int64
  3450                              type: integer
  3451                            value:
  3452                              description: Value is the taint value the toleration matches
  3453                                to. If the operator is Exists, the value should be empty,
  3454                                otherwise just a regular string.
  3455                              type: string
  3456                          type: object
  3457                        type: array
  3458                    type: object
  3459                type: object
  3460              status:
  3461                description: CStorVolumePolicyStatus is for handling status of CstorVolumePolicy
  3462                properties:
  3463                  phase:
  3464                    type: string
  3465                type: object
  3466            required:
  3467              - spec
  3468            type: object
  3469        served: true
  3470        storage: true
  3471  status:
  3472    acceptedNames:
  3473      kind: ""
  3474      plural: ""
  3475    conditions: []
  3476    storedVersions: []
  3477  ---
  3478  #############################################################################################
  3479  ###                                                                                    ######
  3480  ###                    CStorVolumeReplicas CRD                                         ######
  3481  ###                                                                                    ######
  3482  #############################################################################################
  3483  apiVersion: apiextensions.k8s.io/v1
  3484  kind: CustomResourceDefinition
  3485  metadata:
  3486    annotations:
  3487      controller-gen.kubebuilder.io/version: v0.4.0
  3488    creationTimestamp: null
  3489    name: cstorvolumereplicas.cstor.openebs.io
  3490  spec:
  3491    group: cstor.openebs.io
  3492    names:
  3493      kind: CStorVolumeReplica
  3494      listKind: CStorVolumeReplicaList
  3495      plural: cstorvolumereplicas
  3496      shortNames:
  3497        - cvr
  3498      singular: cstorvolumereplica
  3499    scope: Namespaced
  3500    versions:
  3501      - additionalPrinterColumns:
  3502          - description: The amount of disk space consumed by a dataset and all its descendents
  3503            jsonPath: .status.capacity.total
  3504            name: Allocated
  3505            type: string
  3506          - description: The amount of space that is logically consumed by this dataset
  3507            jsonPath: .status.capacity.used
  3508            name: Used
  3509            type: string
  3510          - description: Identifies the current state of the replicas
  3511            jsonPath: .status.phase
  3512            name: Status
  3513            type: string
  3514          - description: Age of CStorVolumeReplica
  3515            jsonPath: .metadata.creationTimestamp
  3516            name: Age
  3517            type: date
  3518        name: v1
  3519        schema:
  3520          openAPIV3Schema:
  3521            description: CStorVolumeReplica describes a cstor volume resource created
  3522              as custom resource
  3523            properties:
  3524              apiVersion:
  3525                description: 'APIVersion defines the versioned schema of this representation
  3526                of an object. Servers should convert recognized schemas to the latest
  3527                internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  3528                type: string
  3529              kind:
  3530                description: 'Kind is a string value representing the REST resource this
  3531                object represents. Servers may infer this from the endpoint the client
  3532                submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  3533                type: string
  3534              metadata:
  3535                type: object
  3536              spec:
  3537                description: CStorVolumeReplicaSpec is the spec for a CStorVolumeReplica
  3538                  resource
  3539                properties:
  3540                  blockSize:
  3541                    description: BlockSize is the logical block size in multiple of 512
  3542                      bytes BlockSize specifies the block size of the volume. The blocksize
  3543                      cannot be changed once the volume has been written, so it should
  3544                      be set at volume creation time. The default blocksize for volumes
  3545                      is 4 Kbytes. Any power of 2 from 512 bytes to 128 Kbytes is valid.
  3546                    format: int32
  3547                    type: integer
  3548                  capacity:
  3549                    description: Represents the actual capacity of the underlying volume
  3550                    type: string
  3551                  compression:
  3552                    description: 'Controls the compression algorithm used for this volumes
  3553                    examples: on|off|gzip|gzip-N|lz4|lzjb|zle'
  3554                    type: string
  3555                  replicaid:
  3556                    description: ReplicaID is unique number to identify the replica
  3557                    type: string
  3558                  targetIP:
  3559                    description: TargetIP represents iscsi target IP through which replica
  3560                      cummunicates IO workloads and other volume operations like snapshot
  3561                      and resize requests
  3562                    type: string
  3563                  zvolWorkers:
  3564                    description: ZvolWorkers represents number of threads that executes
  3565                      client IOs
  3566                    type: string
  3567                type: object
  3568              status:
  3569                description: CStorVolumeReplicaStatus is for handling status of cvr.
  3570                properties:
  3571                  capacity:
  3572                    description: CStorVolumeCapacityDetails represents capacity info of
  3573                      replica
  3574                    properties:
  3575                      total:
  3576                        description: The amount of space consumed by this volume replica
  3577                          and all its descendents
  3578                        type: string
  3579                      used:
  3580                        description: The amount of space that is "logically" accessible
  3581                          by this dataset. The logical space ignores the effect of the
  3582                          compression and copies properties, giving a quantity closer
  3583                          to the amount of data that applications see.  However, it does
  3584                          include space consumed by metadata
  3585                        type: string
  3586                    required:
  3587                      - total
  3588                      - used
  3589                    type: object
  3590                  lastTransitionTime:
  3591                    description: LastTransitionTime refers to the time when the phase
  3592                      changes
  3593                    format: date-time
  3594                    nullable: true
  3595                    type: string
  3596                  lastUpdateTime:
  3597                    description: The last updated time
  3598                    format: date-time
  3599                    nullable: true
  3600                    type: string
  3601                  message:
  3602                    description: A human readable message indicating details about the
  3603                      transition.
  3604                    type: string
  3605                  pendingSnapshots:
  3606                    additionalProperties:
  3607                      description: CStorSnapshotInfo represents the snapshot information
  3608                        related to particular snapshot
  3609                      properties:
  3610                        logicalReferenced:
  3611                          description: LogicalReferenced describes the amount of space
  3612                            that is "logically" accessible by this snapshot. This logical
  3613                            space ignores the effect of the compression and copies properties,
  3614                            giving a quantity closer to the amount of data that application
  3615                            see. It also includes space consumed by metadata.
  3616                          format: int64
  3617                          type: integer
  3618                      required:
  3619                        - logicalReferenced
  3620                      type: object
  3621                    description: PendingSnapshots contains list of pending snapshots that
  3622                      are not yet available on this replica
  3623                    type: object
  3624                  phase:
  3625                    description: CStorVolumeReplicaPhase is to holds different phases
  3626                      of replica
  3627                    type: string
  3628                  snapshots:
  3629                    additionalProperties:
  3630                      description: CStorSnapshotInfo represents the snapshot information
  3631                        related to particular snapshot
  3632                      properties:
  3633                        logicalReferenced:
  3634                          description: LogicalReferenced describes the amount of space
  3635                            that is "logically" accessible by this snapshot. This logical
  3636                            space ignores the effect of the compression and copies properties,
  3637                            giving a quantity closer to the amount of data that application
  3638                            see. It also includes space consumed by metadata.
  3639                          format: int64
  3640                          type: integer
  3641                      required:
  3642                        - logicalReferenced
  3643                      type: object
  3644                    description: Snapshots contains list of snapshots, and their properties,
  3645                      created on CVR
  3646                    type: object
  3647                type: object
  3648              versionDetails:
  3649                description: VersionDetails provides the details for upgrade
  3650                properties:
  3651                  autoUpgrade:
  3652                    description: If AutoUpgrade is set to true then the resource is upgraded
  3653                      automatically without any manual steps
  3654                    type: boolean
  3655                  desired:
  3656                    description: Desired is the version that we want to upgrade or the
  3657                      control plane version
  3658                    type: string
  3659                  status:
  3660                    description: Status gives the status of reconciliation triggered when
  3661                      the desired and current version are not same
  3662                    properties:
  3663                      current:
  3664                        description: Current is the version of resource
  3665                        type: string
  3666                      dependentsUpgraded:
  3667                        description: DependentsUpgraded gives the details whether all
  3668                          children of a resource are upgraded to desired version or not
  3669                        type: boolean
  3670                      lastUpdateTime:
  3671                        description: LastUpdateTime is the time the status was last  updated
  3672                        format: date-time
  3673                        nullable: true
  3674                        type: string
  3675                      message:
  3676                        description: Message is a human readable message if some error
  3677                          occurs
  3678                        type: string
  3679                      reason:
  3680                        description: Reason is the actual reason for the error state
  3681                        type: string
  3682                      state:
  3683                        description: State is the state of reconciliation
  3684                        type: string
  3685                    type: object
  3686                type: object
  3687            required:
  3688              - spec
  3689            type: object
  3690        served: true
  3691        storage: true
  3692        subresources: {}
  3693  status:
  3694    acceptedNames:
  3695      kind: ""
  3696      plural: ""
  3697    conditions: []
  3698    storedVersions: []
  3699  ---
  3700  ###############################################################################
  3701  ####                                                                       ####
  3702  ####               CStorVolume CRD                                         ####
  3703  ####                                                                       ####
  3704  ###############################################################################
  3705  apiVersion: apiextensions.k8s.io/v1
  3706  kind: CustomResourceDefinition
  3707  metadata:
  3708    annotations:
  3709      controller-gen.kubebuilder.io/version: v0.4.0
  3710    creationTimestamp: null
  3711    name: cstorvolumes.cstor.openebs.io
  3712  spec:
  3713    group: cstor.openebs.io
  3714    names:
  3715      kind: CStorVolume
  3716      listKind: CStorVolumeList
  3717      plural: cstorvolumes
  3718      shortNames:
  3719        - cv
  3720      singular: cstorvolume
  3721    scope: Namespaced
  3722    versions:
  3723      - additionalPrinterColumns:
  3724          - description: Current volume capacity
  3725            jsonPath: .status.capacity
  3726            name: Capacity
  3727            type: string
  3728          - description: Identifies the current health of the volume
  3729            jsonPath: .status.phase
  3730            name: Status
  3731            type: string
  3732          - description: Age of CStorVolume
  3733            jsonPath: .metadata.creationTimestamp
  3734            name: Age
  3735            type: date
  3736        name: v1
  3737        schema:
  3738          openAPIV3Schema:
  3739            description: CStorVolume describes a cstor volume resource created as custom
  3740              resource
  3741            properties:
  3742              apiVersion:
  3743                description: 'APIVersion defines the versioned schema of this representation
  3744                of an object. Servers should convert recognized schemas to the latest
  3745                internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  3746                type: string
  3747              kind:
  3748                description: 'Kind is a string value representing the REST resource this
  3749                object represents. Servers may infer this from the endpoint the client
  3750                submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  3751                type: string
  3752              metadata:
  3753                type: object
  3754              spec:
  3755                description: CStorVolumeSpec is the spec for a CStorVolume resource
  3756                properties:
  3757                  capacity:
  3758                    anyOf:
  3759                      - type: integer
  3760                      - type: string
  3761                    description: Capacity represents the desired size of the underlying
  3762                      volume.
  3763                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  3764                    x-kubernetes-int-or-string: true
  3765                  consistencyFactor:
  3766                    description: ConsistencyFactor is minimum number of volume replicas
  3767                      i.e. `RF/2 + 1` has to be connected to the target for write operations.
  3768                      Basically more then 50% of replica has to be connected to target.
  3769                    type: integer
  3770                  desiredReplicationFactor:
  3771                    description: DesiredReplicationFactor represents maximum number of
  3772                      replicas that are allowed to connect to the target. Required for
  3773                      scale operations
  3774                    type: integer
  3775                  iqn:
  3776                    description: Target iSCSI Qualified Name.combination of nodeBase
  3777                    type: string
  3778                  replicaDetails:
  3779                    description: ReplicaDetails refers to the trusty replica information
  3780                    properties:
  3781                      knownReplicas:
  3782                        additionalProperties:
  3783                          type: string
  3784                        description: KnownReplicas represents the replicas that target
  3785                          can trust to read data
  3786                        type: object
  3787                    type: object
  3788                  replicationFactor:
  3789                    description: ReplicationFactor represents number of volume replica
  3790                      created during volume provisioning connect to the target
  3791                    type: integer
  3792                  targetIP:
  3793                    description: TargetIP IP of the iSCSI target service
  3794                    type: string
  3795                  targetPort:
  3796                    description: iSCSI Target Port typically TCP ports 3260
  3797                    type: string
  3798                  targetPortal:
  3799                    description: iSCSI Target Portal. The Portal is combination of IP:port
  3800                      (typically TCP ports 3260)
  3801                    type: string
  3802                type: object
  3803              status:
  3804                description: CStorVolumeStatus is for handling status of cvr.
  3805                properties:
  3806                  capacity:
  3807                    anyOf:
  3808                      - type: integer
  3809                      - type: string
  3810                    description: Represents the actual capacity of the underlying volume.
  3811                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  3812                    x-kubernetes-int-or-string: true
  3813                  conditions:
  3814                    description: Current Condition of cstorvolume. If underlying persistent
  3815                      volume is being resized then the Condition will be set to 'ResizePending'.
  3816                    items:
  3817                      description: CStorVolumeCondition contains details about state of
  3818                        cstorvolume
  3819                      properties:
  3820                        lastProbeTime:
  3821                          description: Last time we probed the condition.
  3822                          format: date-time
  3823                          type: string
  3824                        lastTransitionTime:
  3825                          description: Last time the condition transitioned from one status
  3826                            to another.
  3827                          format: date-time
  3828                          type: string
  3829                        message:
  3830                          description: Human-readable message indicating details about
  3831                            last transition.
  3832                          type: string
  3833                        reason:
  3834                          description: Unique, this should be a short, machine understandable
  3835                            string that gives the reason for condition's last transition.
  3836                            If it reports "ResizePending" that means the underlying cstorvolume
  3837                            is being resized.
  3838                          type: string
  3839                        status:
  3840                          description: ConditionStatus states in which state condition
  3841                            is present
  3842                          type: string
  3843                        type:
  3844                          description: CStorVolumeConditionType is a valid value of CStorVolumeCondition.Type
  3845                          type: string
  3846                      required:
  3847                        - status
  3848                        - type
  3849                      type: object
  3850                    type: array
  3851                  lastTransitionTime:
  3852                    description: LastTransitionTime refers to the time when the phase
  3853                      changes
  3854                    format: date-time
  3855                    nullable: true
  3856                    type: string
  3857                  lastUpdateTime:
  3858                    description: LastUpdateTime refers to the time when last status updated
  3859                      due to any operations
  3860                    format: date-time
  3861                    nullable: true
  3862                    type: string
  3863                  message:
  3864                    description: A human-readable message indicating details about why
  3865                      the volume is in this state.
  3866                    type: string
  3867                  phase:
  3868                    description: CStorVolumePhase is to hold result of action.
  3869                    type: string
  3870                  replicaDetails:
  3871                    description: ReplicaDetails refers to the trusty replica information
  3872                    properties:
  3873                      knownReplicas:
  3874                        additionalProperties:
  3875                          type: string
  3876                        description: KnownReplicas represents the replicas that target
  3877                          can trust to read data
  3878                        type: object
  3879                    type: object
  3880                  replicaStatuses:
  3881                    items:
  3882                      description: ReplicaStatus stores the status of replicas
  3883                      properties:
  3884                        checkpointedIOSeq:
  3885                          description: Represents IO number of replica persisted on the
  3886                            disk
  3887                          type: string
  3888                        inflightRead:
  3889                          description: Ongoing reads I/O from target to replica
  3890                          type: string
  3891                        inflightSync:
  3892                          description: Ongoing sync I/O from target to replica
  3893                          type: string
  3894                        inflightWrite:
  3895                          description: ongoing writes I/O from target to replica
  3896                          type: string
  3897                        mode:
  3898                          description: Mode represents replica status i.e. Healthy, Degraded
  3899                          type: string
  3900                        quorum:
  3901                          description: 'Quorum indicates wheather data wrtitten to the
  3902                          replica is lost or exists. "0" means: data has been lost(
  3903                          might be ephimeral case) and will recostruct data from other
  3904                          Healthy replicas in a write-only mode 1 means: written data
  3905                          is exists on replica'
  3906                          type: string
  3907                        replicaId:
  3908                          description: ID is replica unique identifier
  3909                          type: string
  3910                        upTime:
  3911                          description: time since the replica connected to target
  3912                          type: integer
  3913                      required:
  3914                        - checkpointedIOSeq
  3915                        - inflightRead
  3916                        - inflightSync
  3917                        - inflightWrite
  3918                        - mode
  3919                        - quorum
  3920                        - replicaId
  3921                        - upTime
  3922                      type: object
  3923                    type: array
  3924                type: object
  3925              versionDetails:
  3926                description: VersionDetails provides the details for upgrade
  3927                properties:
  3928                  autoUpgrade:
  3929                    description: If AutoUpgrade is set to true then the resource is upgraded
  3930                      automatically without any manual steps
  3931                    type: boolean
  3932                  desired:
  3933                    description: Desired is the version that we want to upgrade or the
  3934                      control plane version
  3935                    type: string
  3936                  status:
  3937                    description: Status gives the status of reconciliation triggered when
  3938                      the desired and current version are not same
  3939                    properties:
  3940                      current:
  3941                        description: Current is the version of resource
  3942                        type: string
  3943                      dependentsUpgraded:
  3944                        description: DependentsUpgraded gives the details whether all
  3945                          children of a resource are upgraded to desired version or not
  3946                        type: boolean
  3947                      lastUpdateTime:
  3948                        description: LastUpdateTime is the time the status was last  updated
  3949                        format: date-time
  3950                        nullable: true
  3951                        type: string
  3952                      message:
  3953                        description: Message is a human readable message if some error
  3954                          occurs
  3955                        type: string
  3956                      reason:
  3957                        description: Reason is the actual reason for the error state
  3958                        type: string
  3959                      state:
  3960                        description: State is the state of reconciliation
  3961                        type: string
  3962                    type: object
  3963                type: object
  3964            required:
  3965              - spec
  3966            type: object
  3967        served: true
  3968        storage: true
  3969        subresources: {}
  3970  status:
  3971    acceptedNames:
  3972      kind: ""
  3973      plural: ""
  3974    conditions: []
  3975    storedVersions: []
  3976  ---
  3977  ############################################################
  3978  ####                                                    ####
  3979  ####                   CStorBackup CRD                  ####
  3980  ####                                                    ####
  3981  ############################################################
  3982  apiVersion: apiextensions.k8s.io/v1
  3983  kind: CustomResourceDefinition
  3984  metadata:
  3985    annotations:
  3986      controller-gen.kubebuilder.io/version: v0.4.0
  3987    creationTimestamp: null
  3988    name: cstorbackups.cstor.openebs.io
  3989  spec:
  3990    group: cstor.openebs.io
  3991    names:
  3992      kind: CStorBackup
  3993      listKind: CStorBackupList
  3994      plural: cstorbackups
  3995      shortNames:
  3996        - cbackup
  3997      singular: cstorbackup
  3998    scope: Namespaced
  3999    versions:
  4000      - additionalPrinterColumns:
  4001          - description: Name of the volume for which this backup is destined
  4002            jsonPath: .spec.volumeName
  4003            name: Volume
  4004            type: string
  4005          - description: Name of the backup or scheduled backup
  4006            jsonPath: .spec.backupName
  4007            name: Backup/Schedule
  4008            type: string
  4009          - description: Identifies the phase of the backup
  4010            jsonPath: .status
  4011            name: Status
  4012            type: string
  4013        name: v1
  4014        schema:
  4015          openAPIV3Schema:
  4016            description: CStorBackup describes a cstor backup resource created as a custom
  4017              resource
  4018            properties:
  4019              apiVersion:
  4020                description: 'APIVersion defines the versioned schema of this representation
  4021                of an object. Servers should convert recognized schemas to the latest
  4022                internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  4023                type: string
  4024              kind:
  4025                description: 'Kind is a string value representing the REST resource this
  4026                object represents. Servers may infer this from the endpoint the client
  4027                submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  4028                type: string
  4029              metadata:
  4030                type: object
  4031              spec:
  4032                description: CStorBackupSpec is the spec for a CStorBackup resource
  4033                properties:
  4034                  backupDest:
  4035                    description: BackupDest is the remote address for backup transfer
  4036                    type: string
  4037                  backupName:
  4038                    description: BackupName is the name of the backup or scheduled backup
  4039                    type: string
  4040                  localSnap:
  4041                    description: LocalSnap is the flag to enable local snapshot only
  4042                    type: boolean
  4043                  prevSnapName:
  4044                    description: PrevSnapName is the last completed-backup's snapshot
  4045                      name
  4046                    type: string
  4047                  snapName:
  4048                    description: SnapName is the name of the current backup snapshot
  4049                    type: string
  4050                  volumeName:
  4051                    description: VolumeName is the name of the volume for which this backup
  4052                      is destined
  4053                    type: string
  4054                required:
  4055                  - backupName
  4056                  - snapName
  4057                  - volumeName
  4058                type: object
  4059              status:
  4060                description: CStorBackupStatus is a string type that represents the status
  4061                  of the backup
  4062                type: string
  4063            required:
  4064              - spec
  4065            type: object
  4066        served: true
  4067        storage: true
  4068        subresources: {}
  4069  status:
  4070    acceptedNames:
  4071      kind: ""
  4072      plural: ""
  4073    conditions: []
  4074    storedVersions: []
  4075  ---
  4076  ############################################################
  4077  ####                                                    ####
  4078  ####             CStorCompletedBackup CRD               ####
  4079  ####                                                    ####
  4080  ############################################################
  4081  apiVersion: apiextensions.k8s.io/v1
  4082  kind: CustomResourceDefinition
  4083  metadata:
  4084    annotations:
  4085      controller-gen.kubebuilder.io/version: v0.4.0
  4086    creationTimestamp: null
  4087    name: cstorcompletedbackups.cstor.openebs.io
  4088  spec:
  4089    group: cstor.openebs.io
  4090    names:
  4091      kind: CStorCompletedBackup
  4092      listKind: CStorCompletedBackupList
  4093      plural: cstorcompletedbackups
  4094      shortNames:
  4095        - ccompletedbackup
  4096      singular: cstorcompletedbackup
  4097    scope: Namespaced
  4098    versions:
  4099      - additionalPrinterColumns:
  4100          - description: Volume name on which backup is performed
  4101            jsonPath: .spec.volumeName
  4102            name: Volume
  4103            type: string
  4104          - description: Name of the backup or scheduled backup
  4105            jsonPath: .spec.backupName
  4106            name: Backup/Schedule
  4107            type: string
  4108          - description: Last successfully backup snapshot
  4109            jsonPath: .spec.lastSnapName
  4110            name: LastSnap
  4111            type: string
  4112        name: v1
  4113        schema:
  4114          openAPIV3Schema:
  4115            description: CStorCompletedBackup describes a cstor completed-backup resource
  4116              created as custom resource
  4117            properties:
  4118              apiVersion:
  4119                description: 'APIVersion defines the versioned schema of this representation
  4120                of an object. Servers should convert recognized schemas to the latest
  4121                internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  4122                type: string
  4123              kind:
  4124                description: 'Kind is a string value representing the REST resource this
  4125                object represents. Servers may infer this from the endpoint the client
  4126                submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  4127                type: string
  4128              metadata:
  4129                type: object
  4130              spec:
  4131                description: CStorCompletedBackupSpec is the spec for a CStorBackup resource
  4132                properties:
  4133                  backupName:
  4134                    description: BackupName is the name of backup or scheduled backup
  4135                    type: string
  4136                  lastSnapName:
  4137                    description: LastSnapName is the name of last completed-backup's snapshot
  4138                      name
  4139                    type: string
  4140                  secondLastSnapName:
  4141                    description: SecondLastSnapName is the name of second last 'successfully'
  4142                      completed-backup's snapshot
  4143                    type: string
  4144                  volumeName:
  4145                    description: VolumeName is the name of volume for which this backup
  4146                      is destined
  4147                    type: string
  4148                type: object
  4149            required:
  4150              - spec
  4151            type: object
  4152        served: true
  4153        storage: true
  4154        subresources: {}
  4155  status:
  4156    acceptedNames:
  4157      kind: ""
  4158      plural: ""
  4159    conditions: []
  4160    storedVersions: []
  4161  ---
  4162  ############################################################
  4163  ####                                                    ####
  4164  ####             CStorRestore CRD                       ####
  4165  ####                                                    ####
  4166  ############################################################
  4167  apiVersion: apiextensions.k8s.io/v1
  4168  kind: CustomResourceDefinition
  4169  metadata:
  4170    annotations:
  4171      controller-gen.kubebuilder.io/version: v0.4.0
  4172    creationTimestamp: null
  4173    name: cstorrestores.cstor.openebs.io
  4174  spec:
  4175    group: cstor.openebs.io
  4176    names:
  4177      kind: CStorRestore
  4178      listKind: CStorRestoreList
  4179      plural: cstorrestores
  4180      shortNames:
  4181        - crestore
  4182      singular: cstorrestore
  4183    scope: Namespaced
  4184    versions:
  4185      - additionalPrinterColumns:
  4186          - description: Name of the snapshot which is restored
  4187            jsonPath: .spec.restoreName
  4188            name: Backup
  4189            type: string
  4190          - description: Volume on which restore is performed
  4191            jsonPath: .spec.volumeName
  4192            name: Volume
  4193            type: string
  4194          - description: Identifies the state of the restore
  4195            jsonPath: .status
  4196            name: Status
  4197            type: string
  4198        name: v1
  4199        schema:
  4200          openAPIV3Schema:
  4201            description: CStorRestore describes a cstor restore resource created as a
  4202              custom resource
  4203            properties:
  4204              apiVersion:
  4205                description: 'APIVersion defines the versioned schema of this representation
  4206                of an object. Servers should convert recognized schemas to the latest
  4207                internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  4208                type: string
  4209              kind:
  4210                description: 'Kind is a string value representing the REST resource this
  4211                object represents. Servers may infer this from the endpoint the client
  4212                submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  4213                type: string
  4214              metadata:
  4215                type: object
  4216              spec:
  4217                description: CStorRestoreSpec is the spec for a CStorRestore resource
  4218                properties:
  4219                  localRestore:
  4220                    description: Local defines whether restore is from local/remote
  4221                    type: boolean
  4222                  maxretrycount:
  4223                    description: MaxRestoreRetryCount is the maximum number of attempt,
  4224                      will be performed to restore
  4225                    type: integer
  4226                  restoreName:
  4227                    description: RestoreName holds restore name
  4228                    type: string
  4229                  restoreSrc:
  4230                    description: RestoreSrc can be ip:port in case of restore from remote
  4231                      or volumeName in case of local restore
  4232                    type: string
  4233                  retrycount:
  4234                    description: RetryCount represents the number of restore attempts
  4235                      performed for the restore
  4236                    type: integer
  4237                  size:
  4238                    anyOf:
  4239                      - type: integer
  4240                      - type: string
  4241                    description: Size represents the size of a snapshot to restore
  4242                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  4243                    x-kubernetes-int-or-string: true
  4244                  storageClass:
  4245                    description: StorageClass represents name of StorageClass of restore
  4246                      volume
  4247                    type: string
  4248                  volumeName:
  4249                    description: VolumeName is used to restore the data to corresponding
  4250                      volume
  4251                    type: string
  4252                required:
  4253                  - restoreName
  4254                  - restoreSrc
  4255                  - volumeName
  4256                type: object
  4257              status:
  4258                description: CStorRestoreStatus is a string type that represents the status
  4259                  of the restore
  4260                type: string
  4261            required:
  4262              - spec
  4263            type: object
  4264        served: true
  4265        storage: true
  4266        subresources: {}
  4267  status:
  4268    acceptedNames:
  4269      kind: ""
  4270      plural: ""
  4271    conditions: []
  4272    storedVersions: []
  4273  ---
  4274  apiVersion: apiextensions.k8s.io/v1
  4275  kind: CustomResourceDefinition
  4276  metadata:
  4277    annotations:
  4278      controller-gen.kubebuilder.io/version: v0.4.0
  4279    creationTimestamp: null
  4280    name: upgradetasks.openebs.io
  4281  spec:
  4282    group: openebs.io
  4283    names:
  4284      kind: UpgradeTask
  4285      listKind: UpgradeTaskList
  4286      plural: upgradetasks
  4287      singular: upgradetask
  4288    scope: Namespaced
  4289    versions:
  4290      - name: v1alpha1
  4291        schema:
  4292          openAPIV3Schema:
  4293            description: UpgradeTask represents an upgrade task
  4294            properties:
  4295              apiVersion:
  4296                description: 'APIVersion defines the versioned schema of this representation
  4297                of an object. Servers should convert recognized schemas to the latest
  4298                internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  4299                type: string
  4300              kind:
  4301                description: 'Kind is a string value representing the REST resource this
  4302                object represents. Servers may infer this from the endpoint the client
  4303                submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  4304                type: string
  4305              metadata:
  4306                type: object
  4307              spec:
  4308                description: Spec i.e. specifications of the UpgradeTask
  4309                properties:
  4310                  cstorPool:
  4311                    description: CStorPool contains the details of the cstor pool to be
  4312                      upgraded
  4313                    properties:
  4314                      options:
  4315                        description: Options can be used to change the default behaviour
  4316                          of upgrade
  4317                        properties:
  4318                          ignoreStepsOnError:
  4319                            description: IgnoreStepsOnError allows to ignore steps which
  4320                              failed
  4321                            items:
  4322                              type: string
  4323                            type: array
  4324                        type: object
  4325                      poolName:
  4326                        description: PoolName contains the name of the cstor pool to be
  4327                          upgraded
  4328                        type: string
  4329                    type: object
  4330                  cstorPoolCluster:
  4331                    description: CStorPoolCluster contains the details of the storage
  4332                      pool claim to be upgraded
  4333                    properties:
  4334                      cspcName:
  4335                        description: CSPCName contains the name of the storage pool claim
  4336                          to be upgraded
  4337                        type: string
  4338                      options:
  4339                        description: Options can be used to change the default behaviour
  4340                          of upgrade
  4341                        properties:
  4342                          ignoreStepsOnError:
  4343                            description: IgnoreStepsOnError allows to ignore steps which
  4344                              failed
  4345                            items:
  4346                              type: string
  4347                            type: array
  4348                        type: object
  4349                    type: object
  4350                  cstorPoolInstance:
  4351                    description: CStorPoolInstance contains the details of the cstor pool
  4352                      to be upgraded
  4353                    properties:
  4354                      cspiName:
  4355                        description: CSPCName contains the name of the storage pool claim
  4356                          to be upgraded
  4357                        type: string
  4358                      options:
  4359                        description: Options can be used to change the default behaviour
  4360                          of upgrade
  4361                        properties:
  4362                          ignoreStepsOnError:
  4363                            description: IgnoreStepsOnError allows to ignore steps which
  4364                              failed
  4365                            items:
  4366                              type: string
  4367                            type: array
  4368                        type: object
  4369                    type: object
  4370                  cstorVolume:
  4371                    description: CStorVolume contains the details of the cstor volume
  4372                      to be upgraded
  4373                    properties:
  4374                      options:
  4375                        description: Options can be used to change the default behaviour
  4376                          of upgrade
  4377                        properties:
  4378                          ignoreStepsOnError:
  4379                            description: IgnoreStepsOnError allows to ignore steps which
  4380                              failed
  4381                            items:
  4382                              type: string
  4383                            type: array
  4384                        type: object
  4385                      pvName:
  4386                        description: PVName contains the name of the pv associated with
  4387                          the cstor volume
  4388                        type: string
  4389                    type: object
  4390                  fromVersion:
  4391                    description: FromVersion is the current version of the resource.
  4392                    type: string
  4393                  imagePrefix:
  4394                    description: ImagePrefix contains the url prefix of the image url.
  4395                      This field is optional. If not present upgrade takes the previously
  4396                      present ImagePrefix.
  4397                    type: string
  4398                  imageTag:
  4399                    description: ImageTag contains the customized tag for ToVersion if
  4400                      any. This field is optional. If not present upgrade takes the ToVersion
  4401                      as the ImageTag
  4402                    type: string
  4403                  jivaVolume:
  4404                    description: JivaVolume contains the details of the jiva volume to
  4405                      be upgraded
  4406                    properties:
  4407                      options:
  4408                        description: Options can be used to change the default behaviour
  4409                          of upgrade
  4410                        properties:
  4411                          ignoreStepsOnError:
  4412                            description: IgnoreStepsOnError allows to ignore steps which
  4413                              failed
  4414                            items:
  4415                              type: string
  4416                            type: array
  4417                        type: object
  4418                      pvName:
  4419                        description: PVName contains the name of the pv associated with
  4420                          the jiva volume
  4421                        type: string
  4422                    type: object
  4423                  options:
  4424                    description: Options contains the optional flags that can be passed
  4425                      during upgrade.
  4426                    properties:
  4427                      timeout:
  4428                        description: Timeout is maximum seconds to wait at any given step
  4429                          in the upgrade
  4430                        type: integer
  4431                    type: object
  4432                  storagePoolClaim:
  4433                    description: StoragePoolClaim contains the details of the storage
  4434                      pool claim to be upgraded
  4435                    properties:
  4436                      options:
  4437                        description: Options can be used to change the default behaviour
  4438                          of upgrade
  4439                        properties:
  4440                          ignoreStepsOnError:
  4441                            description: IgnoreStepsOnError allows to ignore steps which
  4442                              failed
  4443                            items:
  4444                              type: string
  4445                            type: array
  4446                        type: object
  4447                      spcName:
  4448                        description: SPCName contains the name of the storage pool claim
  4449                          to be upgraded
  4450                        type: string
  4451                    type: object
  4452                  toVersion:
  4453                    description: ToVersion is the upgraded version of the resource. It
  4454                      should be same as the version of control plane components version.
  4455                    type: string
  4456                required:
  4457                  - fromVersion
  4458                  - toVersion
  4459                type: object
  4460              status:
  4461                description: Status of UpgradeTask
  4462                properties:
  4463                  completedTime:
  4464                    description: CompletedTime of Upgrade
  4465                    format: date-time
  4466                    nullable: true
  4467                    type: string
  4468                  phase:
  4469                    description: Phase indicates if a upgradeTask is started, success
  4470                      or errored
  4471                    type: string
  4472                  retries:
  4473                    description: Retries is the number of times the job attempted to upgrade
  4474                      the resource
  4475                    type: integer
  4476                  startTime:
  4477                    description: StartTime of Upgrade
  4478                    format: date-time
  4479                    nullable: true
  4480                    type: string
  4481                  upgradeDetailedStatuses:
  4482                    description: UpgradeDetailedStatuses contains the list of statuses
  4483                      of each step
  4484                    items:
  4485                      description: UpgradeDetailedStatuses represents the latest available
  4486                        observations of a UpgradeTask current state.
  4487                      properties:
  4488                        lastUpdatedAt:
  4489                          description: LastUpdatedTime of a UpgradeStep
  4490                          format: date-time
  4491                          nullable: true
  4492                          type: string
  4493                        message:
  4494                          description: A human-readable message indicating details about
  4495                            why the upgradeStep is in this state
  4496                          type: string
  4497                        phase:
  4498                          description: Phase indicates if the UpgradeStep is waiting,
  4499                            errored or completed.
  4500                          type: string
  4501                        reason:
  4502                          description: Reason is a brief CamelCase string that describes
  4503                            any failure and is meant for machine parsing and tidy display
  4504                            in the CLI
  4505                          type: string
  4506                        startTime:
  4507                          description: StartTime of a UpgradeStep
  4508                          format: date-time
  4509                          nullable: true
  4510                          type: string
  4511                        step:
  4512                          description: UpgradeStep is the current step being performed
  4513                            for a particular resource upgrade
  4514                          type: string
  4515                      type: object
  4516                    type: array
  4517                type: object
  4518            required:
  4519              - spec
  4520            type: object
  4521        served: true
  4522        storage: true
  4523  status:
  4524    acceptedNames:
  4525      kind: ""
  4526      plural: ""
  4527    conditions: []
  4528    storedVersions: []
  4529  ---
  4530  apiVersion: apiextensions.k8s.io/v1
  4531  kind: CustomResourceDefinition
  4532  metadata:
  4533    annotations:
  4534      controller-gen.kubebuilder.io/version: v0.4.0
  4535    creationTimestamp: null
  4536    name: migrationtasks.openebs.io
  4537  spec:
  4538    group: openebs.io
  4539    names:
  4540      kind: MigrationTask
  4541      listKind: MigrationTaskList
  4542      plural: migrationtasks
  4543      shortNames:
  4544        - mtask
  4545      singular: migrationtask
  4546    scope: Namespaced
  4547    versions:
  4548      - name: v1alpha1
  4549        schema:
  4550          openAPIV3Schema:
  4551            description: MigrationTask represents an migration task
  4552            properties:
  4553              apiVersion:
  4554                description: 'APIVersion defines the versioned schema of this representation
  4555                of an object. Servers should convert recognized schemas to the latest
  4556                internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  4557                type: string
  4558              kind:
  4559                description: 'Kind is a string value representing the REST resource this
  4560                object represents. Servers may infer this from the endpoint the client
  4561                submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  4562                type: string
  4563              metadata:
  4564                type: object
  4565              spec:
  4566                description: Spec i.e. specifications of the MigrationTask
  4567                properties:
  4568                  cstorPool:
  4569                    description: MigrateCStorPool contains the details of the cstor pool
  4570                      to be migrated
  4571                    properties:
  4572                      rename:
  4573                        description: If a CSPC with the same name as SPC already exists
  4574                          then we can rename SPC during migration using Rename
  4575                        type: string
  4576                      spcName:
  4577                        description: SPCName contains the name of the storage pool claim
  4578                          to be migrated
  4579                        type: string
  4580                    type: object
  4581                  cstorVolume:
  4582                    description: MigrateCStorVolume contains the details of the cstor
  4583                      volume to be migrated
  4584                    properties:
  4585                      pvName:
  4586                        description: PVName contains the name of the pv associated with
  4587                          the cstor volume to be migrated
  4588                        type: string
  4589                    type: object
  4590                type: object
  4591              status:
  4592                description: Status of MigrationTask
  4593                properties:
  4594                  completedTime:
  4595                    description: CompletedTime of Migrate
  4596                    format: date-time
  4597                    nullable: true
  4598                    type: string
  4599                  migrationDetailedStatuses:
  4600                    description: MigrationDetailedStatuses contains the list of statuses
  4601                      of each step
  4602                    items:
  4603                      description: MigrationDetailedStatuses represents the latest available
  4604                        observations of a MigrationTask current state.
  4605                      properties:
  4606                        lastUpdatedAt:
  4607                          description: LastUpdatedTime of a MigrateStep
  4608                          format: date-time
  4609                          nullable: true
  4610                          type: string
  4611                        message:
  4612                          description: A human-readable message indicating details about
  4613                            why the migrationStep is in this state
  4614                          type: string
  4615                        phase:
  4616                          description: Phase indicates if the MigrateStep is waiting,
  4617                            errored or completed.
  4618                          type: string
  4619                        reason:
  4620                          description: Reason is a brief CamelCase string that describes
  4621                            any failure and is meant for machine parsing and tidy display
  4622                            in the CLI
  4623                          type: string
  4624                        startTime:
  4625                          description: StartTime of a MigrateStep
  4626                          format: date-time
  4627                          nullable: true
  4628                          type: string
  4629                        step:
  4630                          type: string
  4631                      type: object
  4632                    type: array
  4633                  phase:
  4634                    description: Phase indicates if a migrationTask is started, success
  4635                      or errored
  4636                    type: string
  4637                  retries:
  4638                    description: Retries is the number of times the job attempted to migration
  4639                      the resource
  4640                    type: integer
  4641                  startTime:
  4642                    description: StartTime of Migrate
  4643                    format: date-time
  4644                    nullable: true
  4645                    type: string
  4646                type: object
  4647            required:
  4648              - spec
  4649            type: object
  4650        served: true
  4651        storage: true
  4652  status:
  4653    acceptedNames:
  4654      kind: ""
  4655      plural: ""
  4656    conditions: []
  4657    storedVersions: []
  4658  ---
  4659  apiVersion: apps/v1
  4660  kind: Deployment
  4661  metadata:
  4662    name: cspc-operator
  4663    namespace: openebs
  4664    labels:
  4665      name: cspc-operator
  4666      openebs.io/component-name: cspc-operator
  4667      openebs.io/version: 2.11.0
  4668  spec:
  4669    selector:
  4670      matchLabels:
  4671        name: cspc-operator
  4672        openebs.io/component-name: cspc-operator
  4673    replicas: 1
  4674    strategy:
  4675      type: Recreate
  4676    template:
  4677      metadata:
  4678        labels:
  4679          name: cspc-operator
  4680          openebs.io/component-name: cspc-operator
  4681          openebs.io/version: 2.11.0
  4682      spec:
  4683        serviceAccountName: openebs-cstor-operator
  4684        containers:
  4685        - name: cspc-operator
  4686          imagePullPolicy: IfNotPresent
  4687          image: openebs/cspc-operator:2.11.0
  4688          env:
  4689          - name: OPENEBS_NAMESPACE
  4690            valueFrom:
  4691              fieldRef:
  4692                fieldPath: metadata.namespace
  4693          - name: OPENEBS_SERVICEACCOUNT_NAME
  4694            valueFrom:
  4695              fieldRef:
  4696                fieldPath: spec.serviceAccountName
  4697          - name: CSPC_OPERATOR_POD_NAME
  4698            valueFrom:
  4699              fieldRef:
  4700                fieldPath: metadata.name
  4701          # OPENEBS_IO_BASE_DIR is used to configure base directory for openebs on host path.
  4702          # Where OpenEBS can store required files. Default base path will be /var/openebs
  4703          # - name: OPENEBS_IO_BASE_DIR
  4704          #   value: "/var/openebs"
  4705          # OPENEBS_IO_CSTOR_POOL_SPARSE_DIR can be used to specify the hostpath
  4706          # to be used for saving the shared content between the side cars
  4707          # of cstor pool pod. This ENV is also used to indicate the location
  4708          # of the sparse devices.
  4709          # The default path used is /var/openebs/sparse
  4710          #- name: OPENEBS_IO_CSTOR_POOL_SPARSE_DIR
  4711          #  value: "/var/openebs/sparse"
  4712          # OPENEBS_IO_IMAGE_PULL_SECRETS is used to specify the image pull secrets for the cstor pool pod
  4713          #- name: OPENEBS_IO_IMAGE_PULL_SECRETS
  4714          #  value: ""
  4715          - name: OPENEBS_IO_CSPI_MGMT_IMAGE
  4716            value: "openebs/cstor-pool-manager:2.11.0"
  4717          - name: OPENEBS_IO_CSTOR_POOL_IMAGE
  4718            value: "openebs/cstor-pool:2.11.0"
  4719          - name:  OPENEBS_IO_CSTOR_POOL_EXPORTER_IMAGE
  4720            value: "openebs/m-exporter:2.11.0"
  4721          - name: RESYNC_INTERVAL
  4722            value: "30"
  4723  ---
  4724  apiVersion: apps/v1
  4725  kind: Deployment
  4726  metadata:
  4727    name: cvc-operator
  4728    namespace: openebs
  4729    labels:
  4730      name: cvc-operator
  4731      openebs.io/component-name: cvc-operator
  4732      openebs.io/version: 2.11.0
  4733  spec:
  4734    selector:
  4735      matchLabels:
  4736        name: cvc-operator
  4737        openebs.io/component-name: cvc-operator
  4738    replicas: 1
  4739    strategy:
  4740      type: Recreate
  4741    template:
  4742      metadata:
  4743        labels:
  4744          name: cvc-operator
  4745          openebs.io/component-name: cvc-operator
  4746          openebs.io/version: 2.11.0
  4747      spec:
  4748        serviceAccountName: openebs-cstor-operator
  4749        containers:
  4750        - name: cvc-operator
  4751          imagePullPolicy: IfNotPresent
  4752          image: openebs/cvc-operator:2.11.0
  4753          args:
  4754            - "--v=2"
  4755            - "--leader-election=false"
  4756            - "--bind=$(OPENEBS_CVC_POD_IP)"
  4757          env:
  4758          # OPENEBS_IO_BASE_DIR is used to configure base directory for openebs on host path.
  4759          # Where OpenEBS can store required files. Default base path will be /var/openebs
  4760          # - name: OPENEBS_IO_BASE_DIR
  4761          #   value: "/var/openebs"
  4762          # OPENEBS_IO_CSTOR_TARGET_DIR can be used to specify the hostpath
  4763          # that to be used for saving the core dump of cstor volume pod.
  4764          # The default path used is /var/openebs/sparse
  4765          #- name: OPENEBS_IO_CSTOR_TARGET_DIR
  4766          #  value: "/var/openebs/sparse"
  4767          # OPENEBS_IO_IMAGE_PULL_SECRETS is used to specify the image pull secrets for the cstor target pod
  4768          #- name: OPENEBS_IO_IMAGE_PULL_SECRETS
  4769          #  value: ""
  4770          - name: OPENEBS_NAMESPACE
  4771            valueFrom:
  4772              fieldRef:
  4773                fieldPath: metadata.namespace
  4774          - name: OPENEBS_CVC_POD_IP
  4775            valueFrom:
  4776              fieldRef:
  4777                fieldPath: status.podIP
  4778          - name: OPENEBS_SERVICEACCOUNT_NAME
  4779            valueFrom:
  4780              fieldRef:
  4781                fieldPath: spec.serviceAccountName
  4782          - name: OPENEBS_IO_CSTOR_TARGET_IMAGE
  4783            value: "openebs/cstor-istgt:2.11.0"
  4784          - name:  OPENEBS_IO_CSTOR_VOLUME_MGMT_IMAGE
  4785            value: "openebs/cstor-volume-manager:2.11.0"
  4786          - name:  OPENEBS_IO_VOLUME_MONITOR_IMAGE
  4787            value: "openebs/m-exporter:2.11.0"
  4788  ---
  4789  apiVersion: v1
  4790  kind: Service
  4791  metadata:
  4792    name: cvc-operator-service
  4793    namespace: openebs
  4794    labels:
  4795      openebs.io/component-name: cvc-operator-svc
  4796  spec:
  4797    ports:
  4798    - name: api
  4799      port: 5757
  4800      protocol: TCP
  4801      targetPort: 5757
  4802    selector:
  4803      name: cvc-operator
  4804    sessionAffinity: None
  4805  ---
  4806  apiVersion: apps/v1
  4807  kind: Deployment
  4808  metadata:
  4809    name: openebs-cstor-admission-server
  4810    namespace: openebs
  4811    labels:
  4812      app: cstor-admission-webhook
  4813      openebs.io/component-name: cstor-admission-webhook
  4814      openebs.io/version: 2.11.0
  4815  spec:
  4816    replicas: 1
  4817    strategy:
  4818      type: Recreate
  4819      rollingUpdate: null
  4820    selector:
  4821      matchLabels:
  4822        app: cstor-admission-webhook
  4823    template:
  4824      metadata:
  4825        labels:
  4826          app: cstor-admission-webhook
  4827          openebs.io/component-name: cstor-admission-webhook
  4828          openebs.io/version: 2.11.0
  4829      spec:
  4830        serviceAccountName: openebs-cstor-operator
  4831        containers:
  4832          - name: admission-webhook
  4833            image: openebs/cstor-webhook:2.11.0
  4834            imagePullPolicy: IfNotPresent
  4835            args:
  4836              - -alsologtostderr
  4837              - -v=2
  4838              - 2>&1
  4839            env:
  4840              - name: OPENEBS_NAMESPACE
  4841                valueFrom:
  4842                  fieldRef:
  4843                    fieldPath: metadata.namespace
  4844              - name: ADMISSION_WEBHOOK_NAME
  4845                value: "openebs-cstor-admission-server"
  4846              - name: ADMISSION_WEBHOOK_FAILURE_POLICY
  4847                value: "Fail"
  4848  ---
  4849  ###########################################################################
  4850  ####                                                                   ####
  4851  ####                     NDM Operator yaml                             ####
  4852  ####                                                                   ####
  4853  ###########################################################################
  4854  apiVersion: apiextensions.k8s.io/v1
  4855  kind: CustomResourceDefinition
  4856  metadata:
  4857    annotations:
  4858      controller-gen.kubebuilder.io/version: v0.5.0
  4859    creationTimestamp: null
  4860    name: blockdevices.openebs.io
  4861  spec:
  4862    group: openebs.io
  4863    names:
  4864      kind: BlockDevice
  4865      listKind: BlockDeviceList
  4866      plural: blockdevices
  4867      shortNames:
  4868        - bd
  4869      singular: blockdevice
  4870    scope: Namespaced
  4871    versions:
  4872      - additionalPrinterColumns:
  4873          - jsonPath: .spec.nodeAttributes.nodeName
  4874            name: NodeName
  4875            type: string
  4876          - jsonPath: .spec.path
  4877            name: Path
  4878            priority: 1
  4879            type: string
  4880          - jsonPath: .spec.filesystem.fsType
  4881            name: FSType
  4882            priority: 1
  4883            type: string
  4884          - jsonPath: .spec.capacity.storage
  4885            name: Size
  4886            type: string
  4887          - jsonPath: .status.claimState
  4888            name: ClaimState
  4889            type: string
  4890          - jsonPath: .status.state
  4891            name: Status
  4892            type: string
  4893          - jsonPath: .metadata.creationTimestamp
  4894            name: Age
  4895            type: date
  4896        name: v1alpha1
  4897        schema:
  4898          openAPIV3Schema:
  4899            description: BlockDevice is the Schema for the blockdevices API
  4900            properties:
  4901              apiVersion:
  4902                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'
  4903                type: string
  4904              kind:
  4905                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'
  4906                type: string
  4907              metadata:
  4908                type: object
  4909              spec:
  4910                description: DeviceSpec defines the properties and runtime status of a BlockDevice
  4911                properties:
  4912                  aggregateDevice:
  4913                    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
  4914                    type: string
  4915                  capacity:
  4916                    description: Capacity
  4917                    properties:
  4918                      logicalSectorSize:
  4919                        description: LogicalSectorSize is blockdevice logical-sector size in bytes
  4920                        format: int32
  4921                        type: integer
  4922                      physicalSectorSize:
  4923                        description: PhysicalSectorSize is blockdevice physical-Sector size in bytes
  4924                        format: int32
  4925                        type: integer
  4926                      storage:
  4927                        description: Storage is the blockdevice capacity in bytes
  4928                        format: int64
  4929                        type: integer
  4930                    required:
  4931                      - storage
  4932                    type: object
  4933                  claimRef:
  4934                    description: ClaimRef is the reference to the BDC which has claimed this BD
  4935                    properties:
  4936                      apiVersion:
  4937                        description: API version of the referent.
  4938                        type: string
  4939                      fieldPath:
  4940                        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.'
  4941                        type: string
  4942                      kind:
  4943                        description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  4944                        type: string
  4945                      name:
  4946                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
  4947                        type: string
  4948                      namespace:
  4949                        description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
  4950                        type: string
  4951                      resourceVersion:
  4952                        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'
  4953                        type: string
  4954                      uid:
  4955                        description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
  4956                        type: string
  4957                    type: object
  4958                  details:
  4959                    description: Details contain static attributes of BD like model,serial, and so forth
  4960                    properties:
  4961                      compliance:
  4962                        description: Compliance is standards/specifications version implemented by device firmware  such as SPC-1, SPC-2, etc
  4963                        type: string
  4964                      deviceType:
  4965                        description: DeviceType represents the type of device like sparse, disk, partition, lvm, crypt
  4966                        enum:
  4967                          - disk
  4968                          - partition
  4969                          - sparse
  4970                          - loop
  4971                          - lvm
  4972                          - crypt
  4973                          - dm
  4974                          - mpath
  4975                        type: string
  4976                      driveType:
  4977                        description: DriveType is the type of backing drive, HDD/SSD
  4978                        enum:
  4979                          - HDD
  4980                          - SSD
  4981                          - Unknown
  4982                          - ""
  4983                        type: string
  4984                      firmwareRevision:
  4985                        description: FirmwareRevision is the disk firmware revision
  4986                        type: string
  4987                      hardwareSectorSize:
  4988                        description: HardwareSectorSize is the hardware sector size in bytes
  4989                        format: int32
  4990                        type: integer
  4991                      logicalBlockSize:
  4992                        description: LogicalBlockSize is the logical block size in bytes reported by /sys/class/block/sda/queue/logical_block_size
  4993                        format: int32
  4994                        type: integer
  4995                      model:
  4996                        description: Model is model of disk
  4997                        type: string
  4998                      physicalBlockSize:
  4999                        description: PhysicalBlockSize is the physical block size in bytes reported by /sys/class/block/sda/queue/physical_block_size
  5000                        format: int32
  5001                        type: integer
  5002                      serial:
  5003                        description: Serial is serial number of disk
  5004                        type: string
  5005                      vendor:
  5006                        description: Vendor is vendor of disk
  5007                        type: string
  5008                    type: object
  5009                  devlinks:
  5010                    description: DevLinks contains soft links of a block device like /dev/by-id/... /dev/by-uuid/...
  5011                    items:
  5012                      description: DeviceDevLink holds the mapping between type and links like by-id type or by-path type link
  5013                      properties:
  5014                        kind:
  5015                          description: Kind is the type of link like by-id or by-path.
  5016                          enum:
  5017                            - by-id
  5018                            - by-path
  5019                          type: string
  5020                        links:
  5021                          description: Links are the soft links
  5022                          items:
  5023                            type: string
  5024                          type: array
  5025                      type: object
  5026                    type: array
  5027                  filesystem:
  5028                    description: FileSystem contains mountpoint and filesystem type
  5029                    properties:
  5030                      fsType:
  5031                        description: Type represents the FileSystem type of the block device
  5032                        type: string
  5033                      mountPoint:
  5034                        description: MountPoint represents the mountpoint of the block device.
  5035                        type: string
  5036                    type: object
  5037                  nodeAttributes:
  5038                    description: NodeAttributes has the details of the node on which BD is attached
  5039                    properties:
  5040                      nodeName:
  5041                        description: NodeName is the name of the Kubernetes node resource on which the device is attached
  5042                        type: string
  5043                    type: object
  5044                  parentDevice:
  5045                    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"
  5046                    type: string
  5047                  partitioned:
  5048                    description: Partitioned represents if BlockDevice has partitions or not (Yes/No) Currently always default to No. To be deprecated
  5049                    enum:
  5050                      - "Yes"
  5051                      - "No"
  5052                    type: string
  5053                  path:
  5054                    description: Path contain devpath (e.g. /dev/sdb)
  5055                    type: string
  5056                required:
  5057                  - capacity
  5058                  - devlinks
  5059                  - nodeAttributes
  5060                  - path
  5061                type: object
  5062              status:
  5063                description: DeviceStatus defines the observed state of BlockDevice
  5064                properties:
  5065                  claimState:
  5066                    description: ClaimState represents the claim state of the block device
  5067                    enum:
  5068                      - Claimed
  5069                      - Unclaimed
  5070                      - Released
  5071                    type: string
  5072                  state:
  5073                    description: State is the current state of the blockdevice (Active/Inactive/Unknown)
  5074                    enum:
  5075                      - Active
  5076                      - Inactive
  5077                      - Unknown
  5078                    type: string
  5079                required:
  5080                  - claimState
  5081                  - state
  5082                type: object
  5083            type: object
  5084        served: true
  5085        storage: true
  5086        subresources: {}
  5087  status:
  5088    acceptedNames:
  5089      kind: ""
  5090      plural: ""
  5091    conditions: []
  5092    storedVersions: []
  5093  
  5094  ---
  5095  apiVersion: apiextensions.k8s.io/v1
  5096  kind: CustomResourceDefinition
  5097  metadata:
  5098    annotations:
  5099      controller-gen.kubebuilder.io/version: v0.5.0
  5100    creationTimestamp: null
  5101    name: blockdeviceclaims.openebs.io
  5102  spec:
  5103    group: openebs.io
  5104    names:
  5105      kind: BlockDeviceClaim
  5106      listKind: BlockDeviceClaimList
  5107      plural: blockdeviceclaims
  5108      shortNames:
  5109        - bdc
  5110      singular: blockdeviceclaim
  5111    scope: Namespaced
  5112    versions:
  5113      - additionalPrinterColumns:
  5114          - jsonPath: .spec.blockDeviceName
  5115            name: BlockDeviceName
  5116            type: string
  5117          - jsonPath: .status.phase
  5118            name: Phase
  5119            type: string
  5120          - jsonPath: .metadata.creationTimestamp
  5121            name: Age
  5122            type: date
  5123        name: v1alpha1
  5124        schema:
  5125          openAPIV3Schema:
  5126            description: BlockDeviceClaim is the Schema for the blockdeviceclaims API
  5127            properties:
  5128              apiVersion:
  5129                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'
  5130                type: string
  5131              kind:
  5132                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'
  5133                type: string
  5134              metadata:
  5135                type: object
  5136              spec:
  5137                description: DeviceClaimSpec defines the request details for a BlockDevice
  5138                properties:
  5139                  blockDeviceName:
  5140                    description: BlockDeviceName is the reference to the block-device backing this claim
  5141                    type: string
  5142                  blockDeviceNodeAttributes:
  5143                    description: BlockDeviceNodeAttributes is the attributes on the node from which a BD should be selected for this claim. It can include nodename, failure domain etc.
  5144                    properties:
  5145                      hostName:
  5146                        description: HostName represents the hostname of the Kubernetes node resource where the BD should be present
  5147                        type: string
  5148                      nodeName:
  5149                        description: NodeName represents the name of the Kubernetes node resource where the BD should be present
  5150                        type: string
  5151                    type: object
  5152                  deviceClaimDetails:
  5153                    description: Details of the device to be claimed
  5154                    properties:
  5155                      allowPartition:
  5156                        description: AllowPartition represents whether to claim a full block device or a device that is a partition
  5157                        type: boolean
  5158                      blockVolumeMode:
  5159                        description: 'BlockVolumeMode represents whether to claim a device in Block mode or Filesystem mode. These are use cases of BlockVolumeMode: 1) Not specified: VolumeMode check will not be effective 2) VolumeModeBlock: BD should not have any filesystem or mountpoint 3) VolumeModeFileSystem: BD should have a filesystem and mountpoint. If DeviceFormat is    specified then the format should match with the FSType in BD'
  5160                        type: string
  5161                      formatType:
  5162                        description: Format of the device required, eg:ext4, xfs
  5163                        type: string
  5164                    type: object
  5165                  deviceType:
  5166                    description: DeviceType represents the type of drive like SSD, HDD etc.,
  5167                    nullable: true
  5168                    type: string
  5169                  hostName:
  5170                    description: Node name from where blockdevice has to be claimed. To be deprecated. Use NodeAttributes.HostName instead
  5171                    type: string
  5172                  resources:
  5173                    description: Resources will help with placing claims on Capacity, IOPS
  5174                    properties:
  5175                      requests:
  5176                        additionalProperties:
  5177                          anyOf:
  5178                            - type: integer
  5179                            - type: string
  5180                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  5181                          x-kubernetes-int-or-string: true
  5182                        description: 'Requests describes the minimum resources required. eg: if storage resource of 10G is requested minimum capacity of 10G should be available TODO for validating'
  5183                        type: object
  5184                    required:
  5185                      - requests
  5186                    type: object
  5187                  selector:
  5188                    description: Selector is used to find block devices to be considered for claiming
  5189                    properties:
  5190                      matchExpressions:
  5191                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
  5192                        items:
  5193                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
  5194                          properties:
  5195                            key:
  5196                              description: key is the label key that the selector applies to.
  5197                              type: string
  5198                            operator:
  5199                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
  5200                              type: string
  5201                            values:
  5202                              description: values is 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. This array is replaced during a strategic merge patch.
  5203                              items:
  5204                                type: string
  5205                              type: array
  5206                          required:
  5207                            - key
  5208                            - operator
  5209                          type: object
  5210                        type: array
  5211                      matchLabels:
  5212                        additionalProperties:
  5213                          type: string
  5214                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
  5215                        type: object
  5216                    type: object
  5217                type: object
  5218              status:
  5219                description: DeviceClaimStatus defines the observed state of BlockDeviceClaim
  5220                properties:
  5221                  phase:
  5222                    description: Phase represents the current phase of the claim
  5223                    type: string
  5224                required:
  5225                  - phase
  5226                type: object
  5227            type: object
  5228        served: true
  5229        storage: true
  5230        subresources: {}
  5231  status:
  5232    acceptedNames:
  5233      kind: ""
  5234      plural: ""
  5235    conditions: []
  5236    storedVersions: []
  5237  ---
  5238  # This is the node-disk-manager related config.
  5239  # It can be used to customize the disks probes and filters
  5240  apiVersion: v1
  5241  kind: ConfigMap
  5242  metadata:
  5243    name: openebs-ndm-config
  5244    namespace: openebs
  5245    labels:
  5246      openebs.io/component-name: ndm-config
  5247  data:
  5248    # udev-probe is default or primary probe it should be enabled to run ndm
  5249    # filterconfigs contains configs of filters. To provide a group of include
  5250    # and exclude values add it as , separated string
  5251    node-disk-manager.config: |
  5252      probeconfigs:
  5253        - key: udev-probe
  5254          name: udev probe
  5255          state: true
  5256        - key: seachest-probe
  5257          name: seachest probe
  5258          state: false
  5259        - key: smart-probe
  5260          name: smart probe
  5261          state: true
  5262      filterconfigs:
  5263        - key: os-disk-exclude-filter
  5264          name: os disk exclude filter
  5265          state: true
  5266          exclude: "/,/etc/hosts,/boot"
  5267        - key: vendor-filter
  5268          name: vendor filter
  5269          state: true
  5270          include: ""
  5271          exclude: "CLOUDBYT,OpenEBS"
  5272        - key: path-filter
  5273          name: path filter
  5274          state: true
  5275          include: ""
  5276          exclude: "/dev/loop,/dev/fd0,/dev/sr0,/dev/ram,/dev/md,/dev/dm-,/dev/rbd,/dev/zd"
  5277  ---
  5278  apiVersion: apps/v1
  5279  kind: DaemonSet
  5280  metadata:
  5281    name: openebs-ndm
  5282    namespace: openebs
  5283    labels:
  5284      name: openebs-ndm
  5285      openebs.io/component-name: ndm
  5286      openebs.io/version: 2.11.0
  5287  spec:
  5288    selector:
  5289      matchLabels:
  5290        name: openebs-ndm
  5291        openebs.io/component-name: ndm
  5292    updateStrategy:
  5293      type: RollingUpdate
  5294    template:
  5295      metadata:
  5296        labels:
  5297          name: openebs-ndm
  5298          openebs.io/component-name: ndm
  5299          openebs.io/version: 2.11.0
  5300      spec:
  5301        # By default the node-disk-manager will be run on all kubernetes nodes
  5302        # If you would like to limit this to only some nodes, say the nodes
  5303        # that have storage attached, you could label those node and use
  5304        # nodeSelector.
  5305        #
  5306        # e.g. label the storage nodes with - "openebs.io/nodegroup"="storage-node"
  5307        # kubectl label node <node-name> "openebs.io/nodegroup"="storage-node"
  5308        #nodeSelector:
  5309        #  "openebs.io/nodegroup": "storage-node"
  5310        serviceAccountName: openebs-cstor-operator
  5311        hostNetwork: true
  5312        # host PID is used to check status of iSCSI Service when the NDM
  5313        # API service is enabled
  5314        #hostPID: true
  5315        containers:
  5316          - name: node-disk-manager
  5317            image: openebs/node-disk-manager:1.6.0
  5318            args:
  5319              - -v=4
  5320              # The feature-gate is used to enable the new UUID algorithm.
  5321              - --feature-gates="GPTBasedUUID"
  5322            # Detect mount point and filesystem changes wihtout restart.
  5323            # Uncomment the line below to enable the feature.
  5324            # --feature-gates="MountChangeDetection"
  5325            # The feature gate is used to start the gRPC API service. The gRPC server
  5326            # starts at 9115 port by default. This feature is currently in Alpha state
  5327            # - --feature-gates="APIService"
  5328            # The feature gate is used to enable NDM, to create blockdevice resources
  5329            # for unused partitions on the OS disk
  5330            # - --feature-gates="UseOSDisk"
  5331            imagePullPolicy: IfNotPresent
  5332            securityContext:
  5333              privileged: true
  5334            volumeMounts:
  5335              - name: config
  5336                mountPath: /host/node-disk-manager.config
  5337                subPath: node-disk-manager.config
  5338                readOnly: true
  5339                # make udev database available inside container
  5340              - name: udev
  5341                mountPath: /run/udev
  5342              - name: procmount
  5343                mountPath: /host/proc
  5344                readOnly: true
  5345              - name: devmount
  5346                mountPath: /dev
  5347              - name: basepath
  5348                mountPath: /var/openebs/ndm
  5349              - name: sparsepath
  5350                mountPath: /var/openebs/sparse
  5351            env:
  5352              # namespace in which NDM is installed will be passed to NDM Daemonset
  5353              # as environment variable
  5354              - name: NAMESPACE
  5355                valueFrom:
  5356                  fieldRef:
  5357                    fieldPath: metadata.namespace
  5358              # pass hostname as env variable using downward API to the NDM container
  5359              - name: NODE_NAME
  5360                valueFrom:
  5361                  fieldRef:
  5362                    fieldPath: spec.nodeName
  5363              # specify the directory where the sparse files need to be created.
  5364              # if not specified, then sparse files will not be created.
  5365              - name: SPARSE_FILE_DIR
  5366                value: "/var/openebs/sparse"
  5367              # Size(bytes) of the sparse file to be created.
  5368              - name: SPARSE_FILE_SIZE
  5369                value: "10737418240"
  5370              # Specify the number of sparse files to be created
  5371              - name: SPARSE_FILE_COUNT
  5372                value: "0"
  5373            livenessProbe:
  5374              exec:
  5375                command:
  5376                  - pgrep
  5377                  - "ndm"
  5378              initialDelaySeconds: 30
  5379              periodSeconds: 60
  5380        volumes:
  5381          - name: config
  5382            configMap:
  5383              name: openebs-ndm-config
  5384          - name: udev
  5385            hostPath:
  5386              path: /run/udev
  5387              type: Directory
  5388          # mount /proc (to access mount file of process 1 of host) inside container
  5389          # to read mount-point of disks and partitions
  5390          - name: procmount
  5391            hostPath:
  5392              path: /proc
  5393              type: Directory
  5394          - name: devmount
  5395            # the /dev directory is mounted so that we have access to the devices that
  5396            # are connected at runtime of the pod.
  5397            hostPath:
  5398              path: /dev
  5399              type: Directory
  5400          - name: basepath
  5401            hostPath:
  5402              path: /var/openebs/ndm
  5403              type: DirectoryOrCreate
  5404          - name: sparsepath
  5405            hostPath:
  5406              path: /var/openebs/sparse
  5407  ---
  5408  apiVersion: apps/v1
  5409  kind: Deployment
  5410  metadata:
  5411    name: openebs-ndm-operator
  5412    namespace: openebs
  5413    labels:
  5414      name: openebs-ndm-operator
  5415      openebs.io/component-name: ndm-operator
  5416      openebs.io/version: 2.11.0
  5417  spec:
  5418    selector:
  5419      matchLabels:
  5420        name: openebs-ndm-operator
  5421        openebs.io/component-name: ndm-operator
  5422    replicas: 1
  5423    strategy:
  5424      type: Recreate
  5425    template:
  5426      metadata:
  5427        labels:
  5428          name: openebs-ndm-operator
  5429          openebs.io/component-name: ndm-operator
  5430          openebs.io/version: 2.11.0
  5431      spec:
  5432        serviceAccountName: openebs-cstor-operator
  5433        containers:
  5434          - name: node-disk-operator
  5435            image: openebs/node-disk-operator:1.6.0
  5436            imagePullPolicy: IfNotPresent
  5437            env:
  5438              - name: WATCH_NAMESPACE
  5439                valueFrom:
  5440                  fieldRef:
  5441                    fieldPath: metadata.namespace
  5442              - name: POD_NAME
  5443                valueFrom:
  5444                  fieldRef:
  5445                    fieldPath: metadata.name
  5446              # the service account of the ndm-operator pod
  5447              - name: SERVICE_ACCOUNT
  5448                valueFrom:
  5449                  fieldRef:
  5450                    fieldPath: spec.serviceAccountName
  5451              - name: OPERATOR_NAME
  5452                value: "node-disk-operator"
  5453              - name: CLEANUP_JOB_IMAGE
  5454                value: "openebs/linux-utils:2.11.0"
  5455              # OPENEBS_IO_IMAGE_PULL_SECRETS environment variable is used to pass the image pull secrets
  5456              # to the cleanup pod launched by NDM operator
  5457              #- name: OPENEBS_IO_IMAGE_PULL_SECRETS
  5458              #  value: ""
  5459            livenessProbe:
  5460              httpGet:
  5461                path: /healthz
  5462                port: 8585
  5463              initialDelaySeconds: 15
  5464              periodSeconds: 20
  5465            readinessProbe:
  5466              httpGet:
  5467                path: /readyz
  5468                port: 8585
  5469              initialDelaySeconds: 5
  5470              periodSeconds: 10
  5471  ---