apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/1337"
    controller-gen.kubebuilder.io/version: v0.15.0
  name: volumegroupsnapshotcontents.groupsnapshot.storage.k8s.io
spec:
  group: groupsnapshot.storage.k8s.io
  names:
    kind: VolumeGroupSnapshotContent
    listKind: VolumeGroupSnapshotContentList
    plural: volumegroupsnapshotcontents
    shortNames:
      - vgsc
      - vgscs
    singular: volumegroupsnapshotcontent
  scope: Cluster
  conversion:
    strategy: Webhook
    webhook:
      conversionReviewVersions: ["v1"]
      clientConfig: {"caBundle": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURxRENDQXBDZ0F3SUJBZ0lRREYzRU84dWx2U0hPdXRjSTZYbDJ6akFOQmdrcWhraUc5dzBCQVFzRkFEQkoKTVVjd1JRWURWUVFERXo1emJtRndjMmh2ZEMxamIyNTBjbTlzYkdWeUxXTnZiblpsY25OcGIyNHRkMlZpYUc5dgpheTV6Ym1Gd2MyaHZkQzFqYjI1MGNtOXNiR1Z5TG5OMll6QWVGdzB5TmpBeE1UVXlNekkzTWpCYUZ3MHpOakF4Ck1UTXlNekkzTWpCYU1Fa3hSekJGQmdOVkJBTVRQbk51WVhCemFHOTBMV052Ym5SeWIyeHNaWEl0WTI5dWRtVnkKYzJsdmJpMTNaV0pvYjI5ckxuTnVZWEJ6YUc5MExXTnZiblJ5YjJ4c1pYSXVjM1pqTUlJQklqQU5CZ2txaGtpRwo5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBK3NBSHV4ZWNxT3ZMaUpnRkZNSmFkVVY3OUx5KzFNQ3VSTnVGCmRpc3JEQ3p3dGcvMHlvdVc0SGFSc2I3WXdNTUMwWm1obVcwUnhTY2QvWmVwU2hGRXR6UWk5T0VqcWNsU1ZuY00KSDZlaGJHVm1sSVJJUVdPNHhXOUloOHhVWWpGWUpSVGF5aFc4SFZEajVLL0N6Nlhib2hjK2xNLzVhcE1hMCtuQgp0YzVkYWR6ZU0rRzJURDR0UUY2UEV1UkdjOXc0QXV4bnRPaFlHeU9GK25NaEhKZUZaQmtFZGdrN3VWd2V3cjJvCnVockQ5SlRvK1ZpNStNdEw4aSt1VVpoc3pGKzBKNzZ6UG8xanRENkVsZHIrZHZSS1l1UGNaZVpnR0FmWmNsYlkKb1Nmay9xc0hjOG52T29PUGkyalp4QjF1dHh4dzVWRU9iemtlanJoZ2g1TXBweW5nb1FJREFRQUJvNEdMTUlHSQpNQTRHQTFVZER3RUIvd1FFQXdJRm9EQWRCZ05WSFNVRUZqQVVCZ2dyQmdFRkJRY0RBUVlJS3dZQkJRVUhBd0l3CkRBWURWUjBUQVFIL0JBSXdBREJKQmdOVkhSRUVRakJBZ2o1emJtRndjMmh2ZEMxamIyNTBjbTlzYkdWeUxXTnYKYm5abGNuTnBiMjR0ZDJWaWFHOXZheTV6Ym1Gd2MyaHZkQzFqYjI1MGNtOXNiR1Z5TG5OMll6QU5CZ2txaGtpRwo5dzBCQVFzRkFBT0NBUUVBNmNsMUIvSkY4cjRZSlZXWGRac2xIMzZyTHo5ZWFleWdxZUtHSnpxNE01dmJyRVpICnR1c2xISFViNXJ0b0dmYmE3SFZkRkl5ZkhwdUtkNzQyY1lwK3JwYkh2NFVCTitLaUlQY1NFU0hrbGpBUnpGQmgKdVVqMVJiamZrcXJ0Yi8reDNGL0hQbysvTlhJWFJUOVNvSnVwaXU1V1FjdjJUYm8xb0ZwUlQ4OEo5a09XRkN2QQpSZURabGNqL3VneGlpbkp3WUxJVjQ3d2l2QndhL1Ixd0cvWHptNldPUzA3RHMrWHZ4S3lpT1NLV21aTFAyNVVGCm1UZ3RMSWlzckEwU1BQZHNZeWRKcENLWEM4NlZaVWpGMHRDR2ZsTW51aEJLaDFwUnpWa20yVXFvSW96Ky84NHQKSk1lRXo4MlpJWmNHN3ZVMmNFR2EzcjlJQlN1bDRJRkNGUWRjSGc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", "service": {"name": "snapshot-controller-conversion-webhook", "namespace": "snapshot-controller", "path": "/convert"}}
  versions:
    - additionalPrinterColumns:
        - description: Indicates if all the individual snapshots in the group are ready to be used to restore a group of volumes.
          jsonPath: .status.readyToUse
          name: ReadyToUse
          type: boolean
        - description: Determines whether this VolumeGroupSnapshotContent and its physical group snapshot on the underlying storage system should be deleted when its bound VolumeGroupSnapshot is deleted.
          jsonPath: .spec.deletionPolicy
          name: DeletionPolicy
          type: string
        - description: Name of the CSI driver used to create the physical group snapshot on the underlying storage system.
          jsonPath: .spec.driver
          name: Driver
          type: string
        - description: Name of the VolumeGroupSnapshotClass from which this group snapshot was (or will be) created.
          jsonPath: .spec.volumeGroupSnapshotClassName
          name: VolumeGroupSnapshotClass
          type: string
        - description: Namespace of the VolumeGroupSnapshot object to which this VolumeGroupSnapshotContent object is bound.
          jsonPath: .spec.volumeGroupSnapshotRef.namespace
          name: VolumeGroupSnapshotNamespace
          type: string
        - description: Name of the VolumeGroupSnapshot object to which this VolumeGroupSnapshotContent object is bound.
          jsonPath: .spec.volumeGroupSnapshotRef.name
          name: VolumeGroupSnapshot
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      deprecated: true
      name: v1beta1
      schema:
        openAPIV3Schema:
          description: |-
            VolumeGroupSnapshotContent represents the actual "on-disk" group snapshot object
            in the underlying storage system
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: |-
                Spec defines properties of a VolumeGroupSnapshotContent created by the underlying storage system.
                Required.
              properties:
                deletionPolicy:
                  description: |-
                    DeletionPolicy determines whether this VolumeGroupSnapshotContent and the
                    physical group snapshot on the underlying storage system should be deleted
                    when the bound VolumeGroupSnapshot is deleted.
                    Supported values are "Retain" and "Delete".
                    "Retain" means that the VolumeGroupSnapshotContent and its physical group
                    snapshot on underlying storage system are kept.
                    "Delete" means that the VolumeGroupSnapshotContent and its physical group
                    snapshot on underlying storage system are deleted.
                    For dynamically provisioned group snapshots, this field will automatically
                    be filled in by the CSI snapshotter sidecar with the "DeletionPolicy" field
                    defined in the corresponding VolumeGroupSnapshotClass.
                    For pre-existing snapshots, users MUST specify this field when creating the
                    VolumeGroupSnapshotContent object.
                    Required.
                  enum:
                    - Delete
                    - Retain
                  type: string
                driver:
                  description: |-
                    Driver is the name of the CSI driver used to create the physical group snapshot on
                    the underlying storage system.
                    This MUST be the same as the name returned by the CSI GetPluginName() call for
                    that driver.
                    Required.
                  type: string
                source:
                  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.
                  properties:
                    groupSnapshotHandles:
                      description: |-
                        GroupSnapshotHandles specifies the CSI "group_snapshot_id" of a pre-existing
                        group snapshot and a list of CSI "snapshot_id" of pre-existing snapshots
                        on the underlying storage system for which a Kubernetes object
                        representation was (or should be) created.
                        This field is immutable.
                      properties:
                        volumeGroupSnapshotHandle:
                          description: |-
                            VolumeGroupSnapshotHandle specifies the CSI "group_snapshot_id" of a pre-existing
                            group snapshot on the underlying storage system for which a Kubernetes object
                            representation was (or should be) created.
                            This field is immutable.
                            Required.
                          type: string
                        volumeSnapshotHandles:
                          description: |-
                            VolumeSnapshotHandles is a list of CSI "snapshot_id" of pre-existing
                            snapshots on the underlying storage system for which Kubernetes objects
                            representation were (or should be) created.
                            This field is immutable.
                            Required.
                          items:
                            type: string
                          type: array
                      required:
                        - volumeGroupSnapshotHandle
                        - volumeSnapshotHandles
                      type: object
                      x-kubernetes-validations:
                        - message: groupSnapshotHandles is immutable
                          rule: self == oldSelf
                    volumeHandles:
                      description: |-
                        VolumeHandles is a list of volume handles on the backend to be snapshotted
                        together. It is specified for dynamic provisioning of the VolumeGroupSnapshot.
                        This field is immutable.
                      items:
                        type: string
                      type: array
                      x-kubernetes-validations:
                        - message: volumeHandles is immutable
                          rule: self == oldSelf
                  type: object
                  x-kubernetes-validations:
                    - message: volumeHandles is required once set
                      rule: '!has(oldSelf.volumeHandles) || has(self.volumeHandles)'
                    - message: groupSnapshotHandles is required once set
                      rule: '!has(oldSelf.groupSnapshotHandles) || has(self.groupSnapshotHandles)'
                    - message: exactly one of volumeHandles and groupSnapshotHandles must be set
                      rule: (has(self.volumeHandles) && !has(self.groupSnapshotHandles)) || (!has(self.volumeHandles) && has(self.groupSnapshotHandles))
                volumeGroupSnapshotClassName:
                  description: |-
                    VolumeGroupSnapshotClassName is the name of the VolumeGroupSnapshotClass from
                    which this group snapshot was (or will be) created.
                    Note that after provisioning, the VolumeGroupSnapshotClass may be deleted or
                    recreated with different set of values, and as such, should not be referenced
                    post-snapshot creation.
                    For dynamic provisioning, this field must be set.
                    This field may be unset for pre-provisioned snapshots.
                  type: string
                volumeGroupSnapshotRef:
                  description: |-
                    VolumeGroupSnapshotRef specifies the VolumeGroupSnapshot object to which this
                    VolumeGroupSnapshotContent object is bound.
                    VolumeGroupSnapshot.Spec.VolumeGroupSnapshotContentName field must reference to
                    this VolumeGroupSnapshotContent's name for the bidirectional binding to be valid.
                    For a pre-existing VolumeGroupSnapshotContent object, name and namespace of the
                    VolumeGroupSnapshot object MUST be provided for binding to happen.
                    This field is immutable after creation.
                    Required.
                  properties:
                    apiVersion:
                      description: API version of the referent.
                      type: string
                    fieldPath:
                      description: |-
                        If referring to a piece of an object instead of an entire object, this string
                        should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                        For example, if the object reference is to a container within a pod, this would take on a value like:
                        "spec.containers{name}" (where "name" refers to the name of the container that triggered
                        the event) or if no container name is specified "spec.containers[2]" (container with
                        index 2 in this pod). This syntax is chosen only to have some well-defined way of
                        referencing a part of an object.
                        TODO: this design is not final and this field is subject to change in the future.
                      type: string
                    kind:
                      description: |-
                        Kind of the referent.
                        More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                      type: string
                    name:
                      description: |-
                        Name of the referent.
                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                      type: string
                    namespace:
                      description: |-
                        Namespace of the referent.
                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
                      type: string
                    resourceVersion:
                      description: |-
                        Specific resourceVersion to which this reference is made, if any.
                        More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
                      type: string
                    uid:
                      description: |-
                        UID of the referent.
                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                      type: string
                  type: object
                  x-kubernetes-map-type: atomic
                  x-kubernetes-validations:
                    - message: both volumeGroupSnapshotRef.name and volumeGroupSnapshotRef.namespace must be set
                      rule: has(self.name) && has(self.__namespace__)
              required:
                - deletionPolicy
                - driver
                - source
                - volumeGroupSnapshotRef
              type: object
            status:
              description: status represents the current information of a group snapshot.
              properties:
                creationTime:
                  description: |-
                    CreationTime is the timestamp when the point-in-time group snapshot is taken
                    by the underlying storage system.
                    If not specified, it indicates the creation time is unknown.
                    If not specified, it means the readiness of a group snapshot 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.
                    This field is the source for the CreationTime field in VolumeGroupSnapshotStatus
                  format: date-time
                  type: string
                error:
                  description: |-
                    Error is the last observed error during group snapshot creation, if any.
                    Upon success after retry, this error field will be cleared.
                  properties:
                    message:
                      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.
                      type: string
                    time:
                      description: time is the timestamp when the error was encountered.
                      format: date-time
                      type: string
                  type: object
                readyToUse:
                  description: |-
                    ReadyToUse indicates if all the individual snapshots in the group are ready to be
                    used to restore a group of volumes.
                    ReadyToUse becomes true when ReadyToUse of all individual snapshots become true.
                  type: boolean
                volumeGroupSnapshotHandle:
                  description: |-
                    VolumeGroupSnapshotHandle is a unique id returned by the CSI driver
                    to identify the VolumeGroupSnapshot on the storage system.
                    If a storage system does not provide such an id, the
                    CSI driver can choose to return the VolumeGroupSnapshot name.
                  type: string
                volumeSnapshotHandlePairList:
                  description: |-
                    VolumeSnapshotHandlePairList is a list of CSI "volume_id" and "snapshot_id"
                    pair returned by the CSI driver to identify snapshots and their source volumes
                    on the storage system.
                  items:
                    description: VolumeSnapshotHandlePair defines a pair of a source volume handle and a snapshot handle
                    properties:
                      snapshotHandle:
                        description: |-
                          SnapshotHandle is a unique id returned by the CSI driver to identify a volume
                          snapshot on the storage system
                          Required.
                        type: string
                      volumeHandle:
                        description: |-
                          VolumeHandle is a unique id returned by the CSI driver to identify a volume
                          on the storage system
                          Required.
                        type: string
                    required:
                      - snapshotHandle
                      - volumeHandle
                    type: object
                  type: array
              type: object
          required:
            - spec
          type: object
      served: true
      storage: false
      subresources:
        status: {}
    - additionalPrinterColumns:
        - description: Indicates if all the individual snapshots in the group are ready to be used to restore a group of volumes.
          jsonPath: .status.readyToUse
          name: ReadyToUse
          type: boolean
        - description: Determines whether this VolumeGroupSnapshotContent and its physical group snapshot on the underlying storage system should be deleted when its bound VolumeGroupSnapshot is deleted.
          jsonPath: .spec.deletionPolicy
          name: DeletionPolicy
          type: string
        - description: Name of the CSI driver used to create the physical group snapshot on the underlying storage system.
          jsonPath: .spec.driver
          name: Driver
          type: string
        - description: Name of the VolumeGroupSnapshotClass from which this group snapshot was (or will be) created.
          jsonPath: .spec.volumeGroupSnapshotClassName
          name: VolumeGroupSnapshotClass
          type: string
        - description: Namespace of the VolumeGroupSnapshot object to which this VolumeGroupSnapshotContent object is bound.
          jsonPath: .spec.volumeGroupSnapshotRef.namespace
          name: VolumeGroupSnapshotNamespace
          type: string
        - description: Name of the VolumeGroupSnapshot object to which this VolumeGroupSnapshotContent object is bound.
          jsonPath: .spec.volumeGroupSnapshotRef.name
          name: VolumeGroupSnapshot
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v1beta2
      schema:
        openAPIV3Schema:
          description: |-
            VolumeGroupSnapshotContent represents the actual "on-disk" group snapshot object
            in the underlying storage system
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: |-
                Spec defines properties of a VolumeGroupSnapshotContent created by the underlying storage system.
                Required.
              properties:
                deletionPolicy:
                  description: |-
                    DeletionPolicy determines whether this VolumeGroupSnapshotContent and the
                    physical group snapshot on the underlying storage system should be deleted
                    when the bound VolumeGroupSnapshot is deleted.
                    Supported values are "Retain" and "Delete".
                    "Retain" means that the VolumeGroupSnapshotContent and its physical group
                    snapshot on underlying storage system are kept.
                    "Delete" means that the VolumeGroupSnapshotContent and its physical group
                    snapshot on underlying storage system are deleted.
                    For dynamically provisioned group snapshots, this field will automatically
                    be filled in by the CSI snapshotter sidecar with the "DeletionPolicy" field
                    defined in the corresponding VolumeGroupSnapshotClass.
                    For pre-existing snapshots, users MUST specify this field when creating the
                    VolumeGroupSnapshotContent object.
                    Required.
                  enum:
                    - Delete
                    - Retain
                  type: string
                driver:
                  description: |-
                    Driver is the name of the CSI driver used to create the physical group snapshot on
                    the underlying storage system.
                    This MUST be the same as the name returned by the CSI GetPluginName() call for
                    that driver.
                    Required.
                  type: string
                  x-kubernetes-validations:
                    - message: driver is immutable once set
                      rule: self == oldSelf
                source:
                  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.
                  properties:
                    groupSnapshotHandles:
                      description: |-
                        GroupSnapshotHandles specifies the CSI "group_snapshot_id" of a pre-existing
                        group snapshot and a list of CSI "snapshot_id" of pre-existing snapshots
                        on the underlying storage system for which a Kubernetes object
                        representation was (or should be) created.
                        This field is immutable.
                      properties:
                        volumeGroupSnapshotHandle:
                          description: |-
                            VolumeGroupSnapshotHandle specifies the CSI "group_snapshot_id" of a pre-existing
                            group snapshot on the underlying storage system for which a Kubernetes object
                            representation was (or should be) created.
                            This field is immutable.
                            Required.
                          type: string
                        volumeSnapshotHandles:
                          description: |-
                            VolumeSnapshotHandles is a list of CSI "snapshot_id" of pre-existing
                            snapshots on the underlying storage system for which Kubernetes objects
                            representation were (or should be) created.
                            This field is immutable.
                            Required.
                          items:
                            type: string
                          type: array
                      required:
                        - volumeGroupSnapshotHandle
                        - volumeSnapshotHandles
                      type: object
                      x-kubernetes-validations:
                        - message: groupSnapshotHandles is immutable
                          rule: self == oldSelf
                    volumeHandles:
                      description: |-
                        VolumeHandles is a list of volume handles on the backend to be snapshotted
                        together. It is specified for dynamic provisioning of the VolumeGroupSnapshot.
                        This field is immutable.
                      items:
                        type: string
                      type: array
                      x-kubernetes-validations:
                        - message: volumeHandles is immutable
                          rule: self == oldSelf
                  type: object
                  x-kubernetes-validations:
                    - message: volumeHandles is required once set
                      rule: '!has(oldSelf.volumeHandles) || has(self.volumeHandles)'
                    - message: groupSnapshotHandles is required once set
                      rule: '!has(oldSelf.groupSnapshotHandles) || has(self.groupSnapshotHandles)'
                    - message: exactly one of volumeHandles and groupSnapshotHandles must be set
                      rule: (has(self.volumeHandles) && !has(self.groupSnapshotHandles)) || (!has(self.volumeHandles) && has(self.groupSnapshotHandles))
                volumeGroupSnapshotClassName:
                  description: |-
                    VolumeGroupSnapshotClassName is the name of the VolumeGroupSnapshotClass from
                    which this group snapshot was (or will be) created.
                    Note that after provisioning, the VolumeGroupSnapshotClass may be deleted or
                    recreated with different set of values, and as such, should not be referenced
                    post-snapshot creation.
                    For dynamic provisioning, this field must be set.
                    This field may be unset for pre-provisioned snapshots.
                  type: string
                  x-kubernetes-validations:
                    - message: volumeGroupSnapshotClassName is immutable once set
                      rule: self == oldSelf
                volumeGroupSnapshotRef:
                  description: |-
                    VolumeGroupSnapshotRef specifies the VolumeGroupSnapshot object to which this
                    VolumeGroupSnapshotContent object is bound.
                    VolumeGroupSnapshot.Spec.VolumeGroupSnapshotContentName field must reference to
                    this VolumeGroupSnapshotContent's name for the bidirectional binding to be valid.
                    For a pre-existing VolumeGroupSnapshotContent object, name and namespace of the
                    VolumeGroupSnapshot object MUST be provided for binding to happen.
                    This field is immutable after creation.
                    Required.
                  properties:
                    apiVersion:
                      description: API version of the referent.
                      type: string
                    fieldPath:
                      description: |-
                        If referring to a piece of an object instead of an entire object, this string
                        should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                        For example, if the object reference is to a container within a pod, this would take on a value like:
                        "spec.containers{name}" (where "name" refers to the name of the container that triggered
                        the event) or if no container name is specified "spec.containers[2]" (container with
                        index 2 in this pod). This syntax is chosen only to have some well-defined way of
                        referencing a part of an object.
                        TODO: this design is not final and this field is subject to change in the future.
                      type: string
                    kind:
                      description: |-
                        Kind of the referent.
                        More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                      type: string
                    name:
                      description: |-
                        Name of the referent.
                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                      type: string
                    namespace:
                      description: |-
                        Namespace of the referent.
                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
                      type: string
                    resourceVersion:
                      description: |-
                        Specific resourceVersion to which this reference is made, if any.
                        More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
                      type: string
                    uid:
                      description: |-
                        UID of the referent.
                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                      type: string
                  type: object
                  x-kubernetes-map-type: atomic
                  x-kubernetes-validations:
                    - message: both volumeGroupSnapshotRef.name and volumeGroupSnapshotRef.namespace must be set
                      rule: has(self.name) && has(self.__namespace__)
                    - message: volumeGroupSnapshotRef.name and volumeGroupSnapshotRef.namespace are immutable
                      rule: self.name == oldSelf.name && self.__namespace__ == oldSelf.__namespace__
                    - message: volumeGroupSnapshotRef.uid is immutable once set
                      rule: '!has(oldSelf.uid) || (has(self.uid) && self.uid == oldSelf.uid)'
              required:
                - deletionPolicy
                - driver
                - source
                - volumeGroupSnapshotRef
              type: object
            status:
              description: status represents the current information of a group snapshot.
              properties:
                creationTime:
                  description: |-
                    CreationTime is the timestamp when the point-in-time group snapshot is taken
                    by the underlying storage system.
                    If not specified, it indicates the creation time is unknown.
                    If not specified, it means the readiness of a group snapshot is unknown.
                    This field is the source for the CreationTime field in VolumeGroupSnapshotStatus
                  format: date-time
                  type: string
                error:
                  description: |-
                    Error is the last observed error during group snapshot creation, if any.
                    Upon success after retry, this error field will be cleared.
                  properties:
                    message:
                      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.
                      type: string
                    time:
                      description: time is the timestamp when the error was encountered.
                      format: date-time
                      type: string
                  type: object
                readyToUse:
                  description: |-
                    ReadyToUse indicates if all the individual snapshots in the group are ready to be
                    used to restore a group of volumes.
                    ReadyToUse becomes true when ReadyToUse of all individual snapshots become true.
                  type: boolean
                volumeGroupSnapshotHandle:
                  description: |-
                    VolumeGroupSnapshotHandle is a unique id returned by the CSI driver
                    to identify the VolumeGroupSnapshot on the storage system.
                    If a storage system does not provide such an id, the
                    CSI driver can choose to return the VolumeGroupSnapshot name.
                  type: string
                  x-kubernetes-validations:
                    - message: volumeGroupSnapshotHandle is immutable once set
                      rule: self == oldSelf
                volumeSnapshotInfoList:
                  description: |-
                    This field is introduced in v1beta2
                    It is replacing VolumeSnapshotHandlePairList
                    VolumeSnapshotInfoList is a list of snapshot information returned by
                    by the CSI driver to identify snapshots on the storage system.
                  items:
                    description: |-
                      The VolumeSnapshotInfo struct is added in v1beta2
                      VolumeSnapshotInfo contains information for a snapshot
                    properties:
                      creationTime:
                        description: |-
                          creationTime is the timestamp when the point-in-time snapshot is taken
                          by the underlying storage system.
                        format: int64
                        type: integer
                      readyToUse:
                        description: ReadyToUse indicates if the snapshot is ready to be used to restore a volume.
                        type: boolean
                      restoreSize:
                        description: |-
                          RestoreSize represents the minimum size of volume required to create a volume
                          from this snapshot.
                        format: int64
                        type: integer
                      snapshotHandle:
                        description: SnapshotHandle is the CSI "snapshot_id" of this snapshot on the underlying storage system.
                        type: string
                      volumeHandle:
                        description: |-
                          VolumeHandle specifies the CSI "volume_id" of the volume from which this snapshot
                          was taken from.
                        type: string
                    type: object
                  type: array
              type: object
          required:
            - spec
          type: object
      served: true
      storage: true
      subresources:
        status: {}
