---
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: volumegroupsnapshotclasses.groupsnapshot.storage.k8s.io
spec:
  group: groupsnapshot.storage.k8s.io
  names:
    kind: VolumeGroupSnapshotClass
    listKind: VolumeGroupSnapshotClassList
    plural: volumegroupsnapshotclasses
    shortNames:
    - vgsclass
    - vgsclasses
    singular: volumegroupsnapshotclass
  scope: Cluster
  versions:
  - additionalPrinterColumns:
    - jsonPath: .driver
      name: Driver
      type: string
    - description: Determines whether a VolumeGroupSnapshotContent created through
        the VolumeGroupSnapshotClass should be deleted when its bound VolumeGroupSnapshot
        is deleted.
      jsonPath: .deletionPolicy
      name: DeletionPolicy
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1
    schema:
      openAPIV3Schema:
        description: |-
          VolumeGroupSnapshotClass specifies parameters that a underlying storage system
          uses when creating a volume group snapshot. A specific VolumeGroupSnapshotClass
          is used by specifying its name in a VolumeGroupSnapshot object.
          VolumeGroupSnapshotClasses are non-namespaced.
        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
          deletionPolicy:
            description: |-
              DeletionPolicy determines whether a VolumeGroupSnapshotContent created
              through the VolumeGroupSnapshotClass should be deleted when its 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.
              Required.
            enum:
            - Delete
            - Retain
            type: string
            x-kubernetes-validations:
            - message: deletionPolicy is immutable once set
              rule: self == oldSelf
          driver:
            description: |-
              Driver is the name of the storage driver expected to handle this VolumeGroupSnapshotClass.
              Required.
            type: string
            x-kubernetes-validations:
            - message: driver is immutable once set
              rule: self == oldSelf
          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
          parameters:
            additionalProperties:
              type: string
            description: |-
              Parameters is a key-value map with storage driver specific parameters for
              creating group snapshots.
              These values are opaque to Kubernetes and are passed directly to the driver.
            type: object
            x-kubernetes-validations:
            - message: parameters are immutable once set
              rule: self == oldSelf
        required:
        - deletionPolicy
        - driver
        type: object
    served: true
    storage: false
    subresources: {}
  - additionalPrinterColumns:
    - jsonPath: .driver
      name: Driver
      type: string
    - description: Determines whether a VolumeGroupSnapshotContent created through
        the VolumeGroupSnapshotClass should be deleted when its bound VolumeGroupSnapshot
        is deleted.
      jsonPath: .deletionPolicy
      name: DeletionPolicy
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    deprecated: true
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: |-
          VolumeGroupSnapshotClass specifies parameters that a underlying storage system
          uses when creating a volume group snapshot. A specific VolumeGroupSnapshotClass
          is used by specifying its name in a VolumeGroupSnapshot object.
          VolumeGroupSnapshotClasses are non-namespaced.
        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
          deletionPolicy:
            description: |-
              DeletionPolicy determines whether a VolumeGroupSnapshotContent created
              through the VolumeGroupSnapshotClass should be deleted when its 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.
              Required.
            enum:
            - Delete
            - Retain
            type: string
          driver:
            description: |-
              Driver is the name of the storage driver expected to handle this VolumeGroupSnapshotClass.
              Required.
            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
          parameters:
            additionalProperties:
              type: string
            description: |-
              Parameters is a key-value map with storage driver specific parameters for
              creating group snapshots.
              These values are opaque to Kubernetes and are passed directly to the driver.
            type: object
        required:
        - deletionPolicy
        - driver
        type: object
    served: true
    storage: false
    subresources: {}
  - additionalPrinterColumns:
    - jsonPath: .driver
      name: Driver
      type: string
    - description: Determines whether a VolumeGroupSnapshotContent created through
        the VolumeGroupSnapshotClass should be deleted when its bound VolumeGroupSnapshot
        is deleted.
      jsonPath: .deletionPolicy
      name: DeletionPolicy
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta2
    schema:
      openAPIV3Schema:
        description: |-
          VolumeGroupSnapshotClass specifies parameters that a underlying storage system
          uses when creating a volume group snapshot. A specific VolumeGroupSnapshotClass
          is used by specifying its name in a VolumeGroupSnapshot object.
          VolumeGroupSnapshotClasses are non-namespaced.
        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
          deletionPolicy:
            description: |-
              DeletionPolicy determines whether a VolumeGroupSnapshotContent created
              through the VolumeGroupSnapshotClass should be deleted when its 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.
              Required.
            enum:
            - Delete
            - Retain
            type: string
            x-kubernetes-validations:
            - message: deletionPolicy is immutable once set
              rule: self == oldSelf
          driver:
            description: |-
              Driver is the name of the storage driver expected to handle this VolumeGroupSnapshotClass.
              Required.
            type: string
            x-kubernetes-validations:
            - message: driver is immutable once set
              rule: self == oldSelf
          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
          parameters:
            additionalProperties:
              type: string
            description: |-
              Parameters is a key-value map with storage driver specific parameters for
              creating group snapshots.
              These values are opaque to Kubernetes and are passed directly to the driver.
            type: object
            x-kubernetes-validations:
            - message: parameters are immutable once set
              rule: self == oldSelf
        required:
        - deletionPolicy
        - driver
        type: object
    served: true
    storage: true
    subresources: {}
