Update groupsnapshot.storage.k8s.io_volumegroupsnapshots.yaml
Signed-off-by: Kjeld Schouten <info@kjeldschouten.nl>
This commit is contained in:
+149
-142
@@ -3,9 +3,8 @@ apiVersion: apiextensions.k8s.io/v1
|
|||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/995"
|
api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/1068"
|
||||||
controller-gen.kubebuilder.io/version: v0.12.0
|
controller-gen.kubebuilder.io/version: v0.15.0
|
||||||
creationTimestamp: null
|
|
||||||
name: volumegroupsnapshots.groupsnapshot.storage.k8s.io
|
name: volumegroupsnapshots.groupsnapshot.storage.k8s.io
|
||||||
spec:
|
spec:
|
||||||
group: groupsnapshot.storage.k8s.io
|
group: groupsnapshot.storage.k8s.io
|
||||||
@@ -47,215 +46,223 @@ spec:
|
|||||||
name: v1alpha1
|
name: v1alpha1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: VolumeGroupSnapshot is a user's request for creating either a
|
description: |-
|
||||||
point-in-time group snapshot or binding to a pre-existing group snapshot.
|
VolumeGroupSnapshot is a user's request for creating either a point-in-time
|
||||||
|
group snapshot or binding to a pre-existing group snapshot.
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: 'APIVersion defines the versioned schema of this representation
|
description: |-
|
||||||
of an object. Servers should convert recognized schemas to the latest
|
APIVersion defines the versioned schema of this representation of an object.
|
||||||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
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
|
type: string
|
||||||
kind:
|
kind:
|
||||||
description: 'Kind is a string value representing the REST resource this
|
description: |-
|
||||||
object represents. Servers may infer this from the endpoint the client
|
Kind is a string value representing the REST resource this object represents.
|
||||||
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
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
|
type: string
|
||||||
metadata:
|
metadata:
|
||||||
type: object
|
type: object
|
||||||
spec:
|
spec:
|
||||||
description: Spec defines the desired characteristics of a group snapshot
|
description: |-
|
||||||
requested by a user. Required.
|
Spec defines the desired characteristics of a group snapshot requested by a user.
|
||||||
|
Required.
|
||||||
properties:
|
properties:
|
||||||
source:
|
source:
|
||||||
description: Source specifies where a group snapshot will be created
|
description: |-
|
||||||
from. This field is immutable after creation. Required.
|
Source specifies where a group snapshot will be created from.
|
||||||
|
This field is immutable after creation.
|
||||||
|
Required.
|
||||||
properties:
|
properties:
|
||||||
selector:
|
selector:
|
||||||
description: Selector is a label query over persistent volume
|
description: |-
|
||||||
claims that are to be grouped together for snapshotting. This
|
Selector is a label query over persistent volume claims that are to be
|
||||||
labelSelector will be used to match the label added to a PVC.
|
grouped together for snapshotting.
|
||||||
|
This labelSelector will be used to match the label added to a PVC.
|
||||||
If the label is added or removed to a volume after a group snapshot
|
If the label is added or removed to a volume after a group snapshot
|
||||||
is created, the existing group snapshots won't be modified.
|
is created, the existing group snapshots won't be modified.
|
||||||
Once a VolumeGroupSnapshotContent is created and the sidecar
|
Once a VolumeGroupSnapshotContent is created and the sidecar starts to process
|
||||||
starts to process it, the volume list will not change with retries.
|
it, the volume list will not change with retries.
|
||||||
properties:
|
properties:
|
||||||
matchExpressions:
|
matchExpressions:
|
||||||
description: matchExpressions is a list of label selector
|
description: matchExpressions is a list of label selector
|
||||||
requirements. The requirements are ANDed.
|
requirements. The requirements are ANDed.
|
||||||
items:
|
items:
|
||||||
description: A label selector requirement is a selector
|
description: |-
|
||||||
that contains values, a key, and an operator that relates
|
A label selector requirement is a selector that contains values, a key, and an operator that
|
||||||
the key and values.
|
relates the key and values.
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: key is the label key that the selector
|
description: key is the label key that the selector
|
||||||
applies to.
|
applies to.
|
||||||
type: string
|
type: string
|
||||||
operator:
|
operator:
|
||||||
description: operator represents a key's relationship
|
description: |-
|
||||||
to a set of values. Valid operators are In, NotIn,
|
operator represents a key's relationship to a set of values.
|
||||||
Exists and DoesNotExist.
|
Valid operators are In, NotIn, Exists and DoesNotExist.
|
||||||
type: string
|
type: string
|
||||||
values:
|
values:
|
||||||
description: values is an array of string values. If
|
description: |-
|
||||||
the operator is In or NotIn, the values array must
|
values is an array of string values. If the operator is In or NotIn,
|
||||||
be non-empty. If the operator is Exists or DoesNotExist,
|
the values array must be non-empty. If the operator is Exists or DoesNotExist,
|
||||||
the values array must be empty. This array is replaced
|
the values array must be empty. This array is replaced during a strategic
|
||||||
during a strategic merge patch.
|
merge patch.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
- operator
|
- operator
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
matchLabels:
|
matchLabels:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
type: string
|
||||||
description: matchLabels is a map of {key,value} pairs. A
|
description: |-
|
||||||
single {key,value} in the matchLabels map is equivalent
|
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
|
||||||
to an element of matchExpressions, whose key field is "key",
|
map is equivalent to an element of matchExpressions, whose key field is "key", the
|
||||||
the operator is "In", and the values array contains only
|
operator is "In", and the values array contains only "value". The requirements are ANDed.
|
||||||
"value". The requirements are ANDed.
|
|
||||||
type: object
|
type: object
|
||||||
type: object
|
type: object
|
||||||
x-kubernetes-map-type: atomic
|
x-kubernetes-map-type: atomic
|
||||||
|
x-kubernetes-validations:
|
||||||
|
- message: selector is immutable
|
||||||
|
rule: self == oldSelf
|
||||||
volumeGroupSnapshotContentName:
|
volumeGroupSnapshotContentName:
|
||||||
description: VolumeGroupSnapshotContentName specifies the name
|
description: |-
|
||||||
of a pre-existing VolumeGroupSnapshotContent object representing
|
VolumeGroupSnapshotContentName specifies the name of a pre-existing VolumeGroupSnapshotContent
|
||||||
an existing volume group snapshot. This field should be set
|
object representing an existing volume group snapshot.
|
||||||
if the volume group snapshot already exists and only needs a
|
This field should be set if the volume group snapshot already exists and
|
||||||
representation in Kubernetes. This field is immutable.
|
only needs a representation in Kubernetes.
|
||||||
|
This field is immutable.
|
||||||
type: string
|
type: string
|
||||||
|
x-kubernetes-validations:
|
||||||
|
- message: volumeGroupSnapshotContentName is immutable
|
||||||
|
rule: self == oldSelf
|
||||||
type: object
|
type: object
|
||||||
|
x-kubernetes-validations:
|
||||||
|
- message: selector is required once set
|
||||||
|
rule: '!has(oldSelf.selector) || has(self.selector)'
|
||||||
|
- message: volumeGroupSnapshotContentName is required once set
|
||||||
|
rule: '!has(oldSelf.volumeGroupSnapshotContentName) || has(self.volumeGroupSnapshotContentName)'
|
||||||
|
- message: exactly one of selector and volumeGroupSnapshotContentName
|
||||||
|
must be set
|
||||||
|
rule: (has(self.selector) && !has(self.volumeGroupSnapshotContentName))
|
||||||
|
|| (!has(self.selector) && has(self.volumeGroupSnapshotContentName))
|
||||||
volumeGroupSnapshotClassName:
|
volumeGroupSnapshotClassName:
|
||||||
description: VolumeGroupSnapshotClassName is the name of the VolumeGroupSnapshotClass
|
description: |-
|
||||||
requested by the VolumeGroupSnapshot. VolumeGroupSnapshotClassName
|
VolumeGroupSnapshotClassName is the name of the VolumeGroupSnapshotClass
|
||||||
may be left nil to indicate that the default class will be used.
|
requested by the VolumeGroupSnapshot.
|
||||||
|
VolumeGroupSnapshotClassName may be left nil to indicate that the default
|
||||||
|
class will be used.
|
||||||
Empty string is not allowed for this field.
|
Empty string is not allowed for this field.
|
||||||
type: string
|
type: string
|
||||||
|
x-kubernetes-validations:
|
||||||
|
- message: volumeGroupSnapshotClassName must not be the empty string
|
||||||
|
when set
|
||||||
|
rule: size(self) > 0
|
||||||
required:
|
required:
|
||||||
- source
|
- source
|
||||||
type: object
|
type: object
|
||||||
status:
|
status:
|
||||||
description: Status represents the current information of a group snapshot.
|
description: |-
|
||||||
Consumers must verify binding between VolumeGroupSnapshot and VolumeGroupSnapshotContent
|
Status represents the current information of a group snapshot.
|
||||||
objects is successful (by validating that both VolumeGroupSnapshot and
|
Consumers must verify binding between VolumeGroupSnapshot and
|
||||||
VolumeGroupSnapshotContent point to each other) before using this object.
|
VolumeGroupSnapshotContent objects is successful (by validating that both
|
||||||
|
VolumeGroupSnapshot and VolumeGroupSnapshotContent point to each other) before
|
||||||
|
using this object.
|
||||||
properties:
|
properties:
|
||||||
boundVolumeGroupSnapshotContentName:
|
boundVolumeGroupSnapshotContentName:
|
||||||
description: 'BoundVolumeGroupSnapshotContentName is the name of the
|
description: |-
|
||||||
VolumeGroupSnapshotContent object to which this VolumeGroupSnapshot
|
BoundVolumeGroupSnapshotContentName is the name of the VolumeGroupSnapshotContent
|
||||||
object intends to bind to. If not specified, it indicates that the
|
object to which this VolumeGroupSnapshot object intends to bind to.
|
||||||
VolumeGroupSnapshot object has not been successfully bound to a
|
If not specified, it indicates that the VolumeGroupSnapshot object has not
|
||||||
VolumeGroupSnapshotContent object yet. NOTE: To avoid possible security
|
been successfully bound to a VolumeGroupSnapshotContent object yet.
|
||||||
issues, consumers must verify binding between VolumeGroupSnapshot
|
NOTE: To avoid possible security issues, consumers must verify binding between
|
||||||
and VolumeGroupSnapshotContent objects is successful (by validating
|
VolumeGroupSnapshot and VolumeGroupSnapshotContent objects is successful
|
||||||
that both VolumeGroupSnapshot and VolumeGroupSnapshotContent point
|
(by validating that both VolumeGroupSnapshot and VolumeGroupSnapshotContent
|
||||||
at each other) before using this object.'
|
point at each other) before using this object.
|
||||||
type: string
|
type: string
|
||||||
creationTime:
|
creationTime:
|
||||||
description: CreationTime is the timestamp when the point-in-time
|
description: |-
|
||||||
group snapshot is taken by the underlying storage system. If not
|
CreationTime is the timestamp when the point-in-time group snapshot is taken
|
||||||
specified, it may indicate that the creation time of the group snapshot
|
by the underlying storage system.
|
||||||
is unknown. The format of this field is a Unix nanoseconds time
|
If not specified, it may indicate that the creation time of the group snapshot
|
||||||
encoded as an int64. On Unix, the command date +%s%N returns the
|
is unknown.
|
||||||
current time in nanoseconds since 1970-01-01 00:00:00 UTC.
|
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: date-time
|
format: date-time
|
||||||
type: string
|
type: string
|
||||||
error:
|
error:
|
||||||
description: Error is the last observed error during group snapshot
|
description: |-
|
||||||
creation, if any. This field could be helpful to upper level controllers
|
Error is the last observed error during group snapshot creation, if any.
|
||||||
(i.e., application controller) to decide whether they should continue
|
This field could be helpful to upper level controllers (i.e., application
|
||||||
on waiting for the group snapshot to be created based on the type
|
controller) to decide whether they should continue on waiting for the group
|
||||||
of error reported. The snapshot controller will keep retrying when
|
snapshot to be created based on the type of error reported.
|
||||||
an error occurs during the group snapshot creation. Upon success,
|
The snapshot controller will keep retrying when an error occurs during the
|
||||||
this error field will be cleared.
|
group snapshot creation. Upon success, this error field will be cleared.
|
||||||
properties:
|
properties:
|
||||||
message:
|
message:
|
||||||
description: 'message is a string detailing the encountered error
|
description: |-
|
||||||
during snapshot creation if specified. NOTE: message may be
|
message is a string detailing the encountered error during snapshot
|
||||||
logged, and it should not contain sensitive information.'
|
creation if specified.
|
||||||
|
NOTE: message may be logged, and it should not contain sensitive
|
||||||
|
information.
|
||||||
type: string
|
type: string
|
||||||
time:
|
time:
|
||||||
description: time is the timestamp when the error was encountered.
|
description: time is the timestamp when the error was encountered.
|
||||||
format: date-time
|
format: date-time
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
readyToUse:
|
pvcVolumeSnapshotRefList:
|
||||||
description: ReadyToUse indicates if all the individual snapshots
|
description: |-
|
||||||
in the group are ready to be used to restore a group of volumes.
|
VolumeSnapshotRefList is the list of PVC and VolumeSnapshot pairs that
|
||||||
ReadyToUse becomes true when ReadyToUse of all individual snapshots
|
is part of this group snapshot.
|
||||||
become true. If not specified, it means the readiness of a group
|
The maximum number of allowed snapshots in the group is 100.
|
||||||
snapshot is unknown.
|
|
||||||
type: boolean
|
|
||||||
volumeSnapshotRefList:
|
|
||||||
description: VolumeSnapshotRefList is the list of volume snapshot
|
|
||||||
references for this group snapshot. The maximum number of allowed
|
|
||||||
snapshots in the group is 100.
|
|
||||||
items:
|
items:
|
||||||
description: "ObjectReference contains enough information to let
|
description: PVCVolumeSnapshotPair defines a pair of a PVC reference
|
||||||
you inspect or modify the referred object. --- New uses of this
|
and a Volume Snapshot Reference
|
||||||
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:
|
properties:
|
||||||
apiVersion:
|
persistentVolumeClaimRef:
|
||||||
description: API version of the referent.
|
description: PersistentVolumeClaimRef is a reference to the
|
||||||
type: string
|
PVC this pair is referring to
|
||||||
fieldPath:
|
properties:
|
||||||
description: 'If referring to a piece of an object instead of
|
name:
|
||||||
an entire object, this string should contain a valid JSON/Go
|
description: |-
|
||||||
field access statement, such as desiredState.manifest.containers[2].
|
Name of the referent.
|
||||||
For example, if the object reference is to a container within
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
a pod, this would take on a value like: "spec.containers{name}"
|
TODO: Add other useful fields. apiVersion, kind, uid?
|
||||||
(where "name" refers to the name of the container that triggered
|
type: string
|
||||||
the event) or if no container name is specified "spec.containers[2]"
|
type: object
|
||||||
(container with index 2 in this pod). This syntax is chosen
|
x-kubernetes-map-type: atomic
|
||||||
only to have some well-defined way of referencing a part of
|
volumeSnapshotRef:
|
||||||
an object. TODO: this design is not final and this field is
|
description: VolumeSnapshotRef is a reference to the VolumeSnapshot
|
||||||
subject to change in the future.'
|
this pair is referring to
|
||||||
type: string
|
properties:
|
||||||
kind:
|
name:
|
||||||
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
description: |-
|
||||||
type: string
|
Name of the referent.
|
||||||
name:
|
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'
|
TODO: Add other useful fields. apiVersion, kind, uid?
|
||||||
type: string
|
type: string
|
||||||
namespace:
|
type: object
|
||||||
description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
|
x-kubernetes-map-type: atomic
|
||||||
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
|
type: object
|
||||||
x-kubernetes-map-type: atomic
|
|
||||||
type: array
|
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.
|
||||||
|
If not specified, it means the readiness of a group snapshot is unknown.
|
||||||
|
type: boolean
|
||||||
type: object
|
type: object
|
||||||
required:
|
required:
|
||||||
- spec
|
- spec
|
||||||
|
|||||||
Reference in New Issue
Block a user