Update groupsnapshot.storage.k8s.io_volumegroupsnapshots.yaml

Signed-off-by: Kjeld Schouten <info@kjeldschouten.nl>
This commit is contained in:
Kjeld Schouten
2024-10-08 14:13:59 +02:00
committed by GitHub
parent e9cf625106
commit 703ccdc80b
@@ -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