Address comments and re generate code

This commit is contained in:
Raunak Pradip Shah
2023-03-06 11:14:39 +05:30
parent c4d9e9acf6
commit ada506c53f
5 changed files with 136 additions and 77 deletions

View File

@@ -32,7 +32,8 @@ type VolumeGroupSnapshotSpec struct {
// is created, the existing group snapshots won't be modified.
// Once a VolumeGroupSnapshotContent is created and the sidecar starts to process
// it, the volume list will not change with retries.
Selector *metav1.LabelSelector `json:"selector" protobuf:"bytes,1,opt,name=selector"`
// Required.
Selector metav1.LabelSelector `json:"selector" protobuf:"bytes,1,opt,name=selector"`
// VolumeGroupSnapshotClassName is the name of the VolumeGroupSnapshotClass
// requested by the VolumeGroupSnapshot.
@@ -65,7 +66,11 @@ type VolumeGroupSnapshotStatus struct {
// 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.
// 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.
// +optional
ReadyToUse *bool `json:"readyToUse,omitempty" protobuf:"varint,3,opt,name=readyToUse"`
@@ -86,41 +91,57 @@ type VolumeGroupSnapshotStatus struct {
}
//+genclient
//+k8s:deepcopy-gen=true
//+k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
//+kubebuilder:resource:scope=Namespaced,shortName=vgs
//+kubebuilder:subresource:status
// VolumeGroupSnapshot is a user's request for creating either a point-in-time
// group snapshot or binding to a pre-existing group snapshot.
// +kubebuilder:object:root=true
// +kubebuilder:resource:scope=Namespaced,shortName=vgs
// +kubebuilder:subresource:status
type VolumeGroupSnapshot struct {
metav1.TypeMeta `json:",inline"`
metav1.TypeMeta `json:",inline"`
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
Spec VolumeGroupSnapshotSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"`
Status VolumeGroupSnapshotStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
// Spec defines the desired characteristics of a group snapshot requested by a user.
// Required.
Spec VolumeGroupSnapshotSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"`
// Status represents the current information of a group snapshot.
// Consumers must verify binding between VolumeGroupSnapshot and
// VolumeGroupSnapshotContent objects is successful (by validating that both
// VolumeGroupSnapshot and VolumeGroupSnapshotContent point to each other) before
// using this object.
// +optional
Status *VolumeGroupSnapshotStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// VolumeGroupSnapshotList contains a list of VolumeGroupSnapshot
// VolumeGroupSnapshotList contains a list of VolumeGroupSnapshot objects.
type VolumeGroupSnapshotList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []VolumeGroupSnapshot `json:"items"`
// +optional
metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
// Items is the list of VolumeGroupSnapshots.
Items []VolumeGroupSnapshot `json:"items" protobuf:"bytes,2,rep,name=items"`
}
//+genclient
//+genclient:nonNamespaced
//+k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// VolumeGroupSnapshotClass is the Schema for the volumegroupsnapshotclass API
// 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.
// +kubebuilder:object:root=true
// +kubebuilder:subresource:status
// +kubebuilder:resource:scope=Cluster,shortName=vsgclass;vsgclasses
// +kubebuilder:resource:scope=Cluster,shortName=vgsclass;vgsclasses
type VolumeGroupSnapshotClass struct {
metav1.TypeMeta `json:",inline"`
metav1.TypeMeta `json:",inline"`
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
// Driver is the name of the storage driver expected to handle this VolumeGroupSnapshotClass.
@@ -129,8 +150,7 @@ type VolumeGroupSnapshotClass struct {
// Parameters is a key-value map with storage driver specific parameters for
// creating group snapshots.
// These values are opaque to the system and are passed directly
// to the driver.
// These values are opaque to Kubernetes and are passed directly to the driver.
// +optional
Parameters map[string]string `json:"parameters,omitempty" protobuf:"bytes,3,rep,name=parameters"`
@@ -138,8 +158,12 @@ type VolumeGroupSnapshotClass struct {
// 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.
DeletionPolicy *snapshotv1.DeletionPolicy `json:"deletionPolicy" protobuf:"bytes,4,opt,name=deletionPolicy"`
DeletionPolicy snapshotv1.DeletionPolicy `json:"deletionPolicy" protobuf:"bytes,4,opt,name=deletionPolicy"`
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
@@ -148,9 +172,12 @@ type VolumeGroupSnapshotClass struct {
// +kubebuilder:object:root=true
type VolumeGroupSnapshotClassList struct {
metav1.TypeMeta `json:",inline"`
// Standard list metadata
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
// Items is the list of VolumeGroupSnapshotClass
// Items is the list of VolumeGroupSnapshotClasses.
Items []VolumeGroupSnapshotClass `json:"items" protobuf:"bytes,2,rep,name=items"`
}
@@ -161,14 +188,21 @@ type VolumeGroupSnapshotClassList struct {
// VolumeGroupSnapshotContent represents the actual "on-disk" group snapshot object
// in the underlying storage system
// +kubebuilder:object:root=true
// +kubebuilder:resource:scope=Cluster,shortName=vsc;vgscs
// +kubebuilder:resource:scope=Cluster,shortName=vgsc;vgscs
// +kubebuilder:subresource:status
type VolumeGroupSnapshotContent struct {
metav1.TypeMeta `json:",inline"`
metav1.TypeMeta `json:",inline"`
// Standard list metadata
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
Spec VolumeGroupSnapshotContentSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"`
Status VolumeGroupSnapshotContentStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
// Spec defines properties of a VolumeGroupSnapshotContent created by the underlying storage system.
// Required.
Spec VolumeGroupSnapshotContentSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"`
// status represents the current information of a group snapshot.
// +optional
Status *VolumeGroupSnapshotContentStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
@@ -177,10 +211,12 @@ type VolumeGroupSnapshotContent struct {
// +kubebuilder:object:root=true
type VolumeGroupSnapshotContentList struct {
metav1.TypeMeta `json:",inline"`
// Standard list metadata
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
// items is the list of VolumeGroupSnapshotContent
// Items is the list of VolumeGroupSnapshotContents.
Items []VolumeGroupSnapshotContent `json:"items" protobuf:"bytes,2,rep,name=items"`
}
@@ -197,9 +233,13 @@ type VolumeGroupSnapshotContentSpec struct {
VolumeGroupSnapshotRef core_v1.ObjectReference `json:"volumeGroupSnapshotRef" protobuf:"bytes,1,opt,name=volumeGroupSnapshotRef"`
// DeletionPolicy determines whether this VolumeGroupSnapshotContent and the
// physical snapshots on the underlying storage system should be deleted when
// the bound VolumeGroupSnapshot is deleted.
// 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.
@@ -249,7 +289,11 @@ type VolumeGroupSnapshotContentStatus struct {
// 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.
// 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.
// +optional
ReadyToUse *bool `json:"readyToUse,omitempty" protobuf:"varint,3,opt,name=readyToUse"`
@@ -270,13 +314,13 @@ type VolumeGroupSnapshotContentStatus struct {
// Members in VolumeGroupSnapshotContentSource are immutable.
type VolumeGroupSnapshotContentSource struct {
// PersistentVolumeNames is a list of names of PersistentVolumes to be snapshotted
// together. Signifies dynamic provisioning of the VolumeGroupSnapshot.
// together. It is specified for dynamic provisioning of the VolumeGroupSnapshot.
// This field is immutable.
// +optional
PersistentVolumeNames []string `json:"persistentVolumeNames,omitempty" protobuf:"bytes,1,opt,name=persistentVolumeNames"`
// VolumeGroupSnapshotHandle specifies the CSI "snapshot_id" of a pre-existing
// snapshot on the underlying storage system for which a Kubernetes object
// 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.
// +optional

View File

@@ -24,7 +24,6 @@ package v1alpha1
import (
v1 "github.com/kubernetes-csi/external-snapshotter/client/v6/apis/volumesnapshot/v1"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
)
@@ -34,7 +33,11 @@ func (in *VolumeGroupSnapshot) DeepCopyInto(out *VolumeGroupSnapshot) {
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
in.Status.DeepCopyInto(&out.Status)
if in.Status != nil {
in, out := &in.Status, &out.Status
*out = new(VolumeGroupSnapshotStatus)
(*in).DeepCopyInto(*out)
}
return
}
@@ -68,11 +71,6 @@ func (in *VolumeGroupSnapshotClass) DeepCopyInto(out *VolumeGroupSnapshotClass)
(*out)[key] = val
}
}
if in.DeletionPolicy != nil {
in, out := &in.DeletionPolicy, &out.DeletionPolicy
*out = new(v1.DeletionPolicy)
**out = **in
}
return
}
@@ -133,7 +131,11 @@ func (in *VolumeGroupSnapshotContent) DeepCopyInto(out *VolumeGroupSnapshotConte
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
in.Status.DeepCopyInto(&out.Status)
if in.Status != nil {
in, out := &in.Status, &out.Status
*out = new(VolumeGroupSnapshotContentStatus)
(*in).DeepCopyInto(*out)
}
return
}
@@ -314,11 +316,7 @@ func (in *VolumeGroupSnapshotList) DeepCopyObject() runtime.Object {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *VolumeGroupSnapshotSpec) DeepCopyInto(out *VolumeGroupSnapshotSpec) {
*out = *in
if in.Selector != nil {
in, out := &in.Selector, &out.Selector
*out = new(metav1.LabelSelector)
(*in).DeepCopyInto(*out)
}
in.Selector.DeepCopyInto(&out.Selector)
if in.VolumeGroupSnapshotClassName != nil {
in, out := &in.VolumeGroupSnapshotClassName, &out.VolumeGroupSnapshotClassName
*out = new(string)

View File

@@ -14,16 +14,18 @@ spec:
listKind: VolumeGroupSnapshotClassList
plural: volumegroupsnapshotclasses
shortNames:
- vsgclass
- vsgclasses
- vgsclass
- vgsclasses
singular: volumegroupsnapshotclass
scope: Cluster
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: VolumeGroupSnapshotClass is the Schema for the volumegroupsnapshotclass
API
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
@@ -34,7 +36,10 @@ spec:
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". Required.
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
@@ -53,7 +58,7 @@ spec:
type: string
description: Parameters is a key-value map with storage driver specific
parameters for creating group snapshots. These values are opaque to
the system and are passed directly to the driver.
Kubernetes and are passed directly to the driver.
type: object
required:
- deletionPolicy
@@ -61,5 +66,3 @@ spec:
type: object
served: true
storage: true
subresources:
status: {}

View File

@@ -14,7 +14,7 @@ spec:
listKind: VolumeGroupSnapshotContentList
plural: volumegroupsnapshotcontents
shortNames:
- vsc
- vgsc
- vgscs
singular: volumegroupsnapshotcontent
scope: Cluster
@@ -36,19 +36,22 @@ spec:
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: VolumeGroupSnapshotContentSpec describes the common attributes
of a group snapshot content
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 snapshots on the underlying storage system should
be deleted when the bound VolumeGroupSnapshot is deleted. Supported
values are "Retain" and "Delete". 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.
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
@@ -66,14 +69,14 @@ spec:
properties:
persistentVolumeNames:
description: PersistentVolumeNames is a list of names of PersistentVolumes
to be snapshotted together. Signifies dynamic provisioning of
the VolumeGroupSnapshot. This field is immutable.
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 "snapshot_id"
of a pre-existing snapshot on the underlying storage system
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
@@ -141,8 +144,7 @@ spec:
- volumeGroupSnapshotRef
type: object
status:
description: VolumeGroupSnapshotContentStatus defines the observed state
of VolumeGroupSnapshotContent.
description: status represents the current information of a group snapshot.
properties:
creationTime:
description: CreationTime is the timestamp when the point-in-time
@@ -156,19 +158,23 @@ spec:
be cleared.
properties:
message:
description: 'Message is a string detailing the encountered error
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.
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. If not specified,
it means the readiness of a group snapshot is unknown.
in the group are ready to be used to restore a volume. ReadyToUse
becomes true when ReadyToUse of all individual snapshots become
true. 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.
type: boolean
volumeGroupSnapshotHandle:
description: VolumeGroupSnapshotHandle is a unique id returned by

View File

@@ -35,7 +35,8 @@ spec:
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: VolumeGroupSnapshotSpec defines the desired state of VolumeGroupSnapshot
description: Spec defines the desired characteristics of a group snapshot
requested by a user. Required.
properties:
selector:
description: Selector is a label query over PersistentVolumeClaims
@@ -44,7 +45,7 @@ spec:
added or removed to a volume after a group snapshot is created,
the existing group snapshots won't be modified. Once a VolumeGroupSnapshotContent
is created and the sidecar starts to process it, the volume list
will not change with retries.
will not change with retries. Required.
properties:
matchExpressions:
description: matchExpressions is a list of label selector requirements.
@@ -98,7 +99,10 @@ spec:
- selector
type: object
status:
description: VolumeGroupSnapshotStatus defines the observed state of VolumeGroupSnapshot
description: Status represents the current information of a group snapshot.
Consumers must verify binding between VolumeGroupSnapshot and VolumeGroupSnapshotContent
objects is successful (by validating that both VolumeGroupSnapshot and
VolumeGroupSnapshotContent point to each other) before using this object.
properties:
boundVolumeGroupSnapshotContentName:
description: 'BoundVolumeGroupSnapshotContentName is the name of the
@@ -128,19 +132,23 @@ spec:
this error field will be cleared.
properties:
message:
description: 'Message is a string detailing the encountered error
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.
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. If not specified,
it means the readiness of a group snapshot is unknown.
in the group are ready to be used to restore a volume. ReadyToUse
becomes true when ReadyToUse of all individual snapshots become
true. 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.
type: boolean
volumeSnapshotRefList:
description: VolumeSnapshotRefList is the list of volume snapshot