package v1beta2 import "time" // VolumeGroupSnapshotContent represents the actual "on-disk" group snapshot object // in the underlying storage system #VolumeGroupSnapshotContent: { _embeddedResource // 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 apiVersion?: string // 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 kind?: string metadata?: {} // Spec defines properties of a VolumeGroupSnapshotContent created by the underlying storage system. // Required. spec!: { // 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. deletionPolicy!: "Delete" | "Retain" // 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. driver!: string // 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. source!: { // 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. groupSnapshotHandles?: { // 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. volumeGroupSnapshotHandle!: string // 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. volumeSnapshotHandles!: [...string] } // 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. volumeHandles?: [...string] } // 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. volumeGroupSnapshotClassName?: string // 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. volumeGroupSnapshotRef!: { // API version of the referent. apiVersion?: string // 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. fieldPath?: string // Kind of the referent. // More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds kind?: string // Name of the referent. // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names name?: string // Namespace of the referent. // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ namespace?: string // 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 resourceVersion?: string // UID of the referent. // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids uid?: string } } // status represents the current information of a group snapshot. status?: { // 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. // This field is the source for the CreationTime field in VolumeGroupSnapshotStatus creationTime?: time.Time // Error is the last observed error during group snapshot creation, if any. // Upon success after retry, this error field will be cleared. error?: { // 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. message?: string // time is the timestamp when the error was encountered. "time"?: time.Time } // 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. readyToUse?: bool // 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. volumeGroupSnapshotHandle?: string // This field is introduced in v1beta2 // It is replacing VolumeSnapshotHandlePairList // VolumeSnapshotInfoList is a list of snapshot information returned by // by the CSI driver to identify snapshots on the storage system. volumeSnapshotInfoList?: [...{ // creationTime is the timestamp when the point-in-time snapshot is taken // by the underlying storage system. creationTime?: int64 & int // ReadyToUse indicates if the snapshot is ready to be used to restore a volume. readyToUse?: bool // RestoreSize represents the minimum size of volume required to create a volume // from this snapshot. restoreSize?: int64 & int // SnapshotHandle is the CSI "snapshot_id" of this snapshot on the underlying storage system. snapshotHandle?: string // VolumeHandle specifies the CSI "volume_id" of the volume from which this snapshot // was taken from. volumeHandle?: string }] } _embeddedResource: { apiVersion!: string kind!: string metadata?: {...} } apiVersion: "groupsnapshot.storage.k8s.io/v1beta2" kind: "VolumeGroupSnapshotContent" metadata!: { name!: string namespace?: string labels?: [string]: string annotations?: [string]: string ... } }