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 } ... } }