Update groupsnapshot.storage.k8s.io_volumegroupsnapshotcontents.yaml
Signed-off-by: Kjeld Schouten <info@kjeldschouten.nl>
This commit is contained in:
+189
-169
@@ -3,9 +3,8 @@ apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/971"
|
||||
controller-gen.kubebuilder.io/version: v0.12.0
|
||||
creationTimestamp: null
|
||||
api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/1068"
|
||||
controller-gen.kubebuilder.io/version: v0.15.0
|
||||
name: volumegroupsnapshotcontents.groupsnapshot.storage.k8s.io
|
||||
spec:
|
||||
group: groupsnapshot.storage.k8s.io
|
||||
@@ -57,71 +56,90 @@ spec:
|
||||
name: v1alpha1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: VolumeGroupSnapshotContent represents the actual "on-disk" group
|
||||
snapshot object in the underlying storage system
|
||||
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'
|
||||
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'
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
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
|
||||
@@ -129,70 +147,98 @@ spec:
|
||||
- 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.
|
||||
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
|
||||
oneOf:
|
||||
- required: ["volumeHandles"]
|
||||
- required: ["groupSnapshotHandles"]
|
||||
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.
|
||||
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.
|
||||
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.'
|
||||
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'
|
||||
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'
|
||||
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/'
|
||||
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'
|
||||
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'
|
||||
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 is immutable
|
||||
rule: self == oldSelf
|
||||
required:
|
||||
- deletionPolicy
|
||||
- driver
|
||||
@@ -203,108 +249,82 @@ spec:
|
||||
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
|
||||
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.
|
||||
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.'
|
||||
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
|
||||
pvVolumeSnapshotContentList:
|
||||
description: |-
|
||||
PVVolumeSnapshotContentList is the list of pairs of PV and
|
||||
VolumeSnapshotContent for this group snapshot
|
||||
The maximum number of allowed snapshots in the group is 100.
|
||||
items:
|
||||
description: |-
|
||||
PVVolumeSnapshotContentPair represent a pair of PV names and
|
||||
VolumeSnapshotContent names
|
||||
properties:
|
||||
persistentVolumeRef:
|
||||
description: PersistentVolumeRef is a reference to the persistent
|
||||
volume resource
|
||||
properties:
|
||||
name:
|
||||
description: |-
|
||||
Name of the referent.
|
||||
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||
TODO: Add other useful fields. apiVersion, kind, uid?
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
volumeSnapshotContentRef:
|
||||
description: VolumeSnapshotContentRef is a reference to the
|
||||
volume snapshot content resource
|
||||
properties:
|
||||
name:
|
||||
description: |-
|
||||
Name of the referent.
|
||||
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||
TODO: Add other useful fields. apiVersion, kind, uid?
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
type: array
|
||||
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.
|
||||
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.
|
||||
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
|
||||
volumeSnapshotContentRefList:
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user