260 lines
15 KiB
YAML
260 lines
15 KiB
YAML
---
|
|
apiVersion: apiextensions.k8s.io/v1
|
|
kind: CustomResourceDefinition
|
|
metadata:
|
|
annotations:
|
|
controller-gen.kubebuilder.io/version: v0.11.3
|
|
api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/814"
|
|
creationTimestamp: null
|
|
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
|
|
versions:
|
|
- name: v1alpha1
|
|
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
|
|
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:
|
|
persistentVolumeNames:
|
|
description: PersistentVolumeNames is a list of names of PersistentVolumes
|
|
to be snapshotted together. It is specified for dynamic provisioning
|
|
of the VolumeGroupSnapshot. This field is immutable.
|
|
items:
|
|
type: string
|
|
type: array
|
|
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.
|
|
type: string
|
|
type: object
|
|
oneOf:
|
|
- required: ["persistentVolumeNames"]
|
|
- required: ["volumeGroupSnapshotHandle"]
|
|
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
|
|
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.
|
|
format: int64
|
|
type: integer
|
|
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 volume. 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
|
|
volumeSnapshotRefList:
|
|
description: VolumeSnapshotContentRefList is the list of volume snapshot
|
|
content references for this group snapshot. The maximum number of
|
|
allowed snapshots in the group is 100.
|
|
items:
|
|
description: "ObjectReference contains enough information to let
|
|
you inspect or modify the referred object. --- New uses of this
|
|
type are discouraged because of difficulty describing its usage
|
|
when embedded in APIs. 1. Ignored fields. It includes many fields
|
|
which are not generally honored. For instance, ResourceVersion
|
|
and FieldPath are both very rarely valid in actual usage. 2. Invalid
|
|
usage help. It is impossible to add specific help for individual
|
|
usage. In most embedded usages, there are particular restrictions
|
|
like, \"must refer only to types A and B\" or \"UID not honored\"
|
|
or \"name must be restricted\". Those cannot be well described
|
|
when embedded. 3. Inconsistent validation. Because the usages
|
|
are different, the validation rules are different by usage, which
|
|
makes it hard for users to predict what will happen. 4. The fields
|
|
are both imprecise and overly precise. Kind is not a precise
|
|
mapping to a URL. This can produce ambiguity during interpretation
|
|
and require a REST mapping. In most cases, the dependency is
|
|
on the group,resource tuple and the version of the actual struct
|
|
is irrelevant. 5. We cannot easily change it. Because this type
|
|
is embedded in many locations, updates to this type will affect
|
|
numerous schemas. Don't make new APIs embed an underspecified
|
|
API type they do not control. \n Instead of using this type, create
|
|
a locally provided and used type that is well-focused on your
|
|
reference. For example, ServiceReferences for admission registration:
|
|
https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
|
|
."
|
|
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
|
|
type: array
|
|
type: object
|
|
required:
|
|
- spec
|
|
type: object
|
|
served: true
|
|
storage: true
|
|
subresources:
|
|
status: {}
|