package v1 import "time" // VolumeSnapshotContent represents the actual "on-disk" snapshot object in the // underlying storage system #VolumeSnapshotContent: { _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 VolumeSnapshotContent created by the underlying storage system. // Required. "spec"!: { // deletionPolicy determines whether this VolumeSnapshotContent and its physical snapshot on // the underlying storage system should be deleted when its bound VolumeSnapshot is deleted. // Supported values are "Retain" and "Delete". // "Retain" means that the VolumeSnapshotContent and its physical snapshot on // underlying storage system are kept. // "Delete" means that the VolumeSnapshotContent and its physical snapshot on // underlying storage system are deleted. // For dynamically provisioned snapshots, this field will automatically be filled in by the // CSI snapshotter sidecar with the "DeletionPolicy" field defined in the corresponding // VolumeSnapshotClass. // For pre-existing snapshots, users MUST specify this field when creating the // VolumeSnapshotContent object. // Required. "deletionPolicy"!: "Delete" | "Retain" // driver is the name of the CSI driver used to create the physical 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"!: { // snapshotHandle specifies the CSI "snapshot_id" of a pre-existing snapshot on // the underlying storage system for which a Kubernetes object representation // was (or should be) created. // This field is immutable. "snapshotHandle"?: string // volumeHandle specifies the CSI "volume_id" of the volume from which a snapshot // should be dynamically taken from. // This field is immutable. "volumeHandle"?: string } // SourceVolumeMode is the mode of the volume whose snapshot is taken. // Can be either “Filesystem” or “Block”. // If not specified, it indicates the source volume's mode is unknown. // This field is immutable. // This field is an alpha field. "sourceVolumeMode"?: string // name of the VolumeSnapshotClass from which this snapshot was (or will be) // created. // Note that after provisioning, the VolumeSnapshotClass may be deleted or // recreated with different set of values, and as such, should not be referenced // post-snapshot creation. "volumeSnapshotClassName"?: string // volumeSnapshotRef specifies the VolumeSnapshot object to which this // VolumeSnapshotContent object is bound. // VolumeSnapshot.Spec.VolumeSnapshotContentName field must reference to // this VolumeSnapshotContent's name for the bidirectional binding to be valid. // For a pre-existing VolumeSnapshotContent object, name and namespace of the // VolumeSnapshot object MUST be provided for binding to happen. // This field is immutable after creation. // Required. "volumeSnapshotRef"!: { // 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 snapshot. "status"?: { // creationTime is the timestamp when the point-in-time snapshot is taken // by the underlying storage system. // In dynamic snapshot creation case, this field will be filled in by the // CSI snapshotter sidecar with the "creation_time" value returned from CSI // "CreateSnapshot" gRPC call. // For a pre-existing snapshot, this field will be filled with the "creation_time" // value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. // If not specified, it indicates the creation time 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. "creationTime"?: int64 & int // error is the last observed error during 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 a snapshot is ready to be used to restore a volume. // In dynamic snapshot creation case, this field will be filled in by the // CSI snapshotter sidecar with the "ready_to_use" value returned from CSI // "CreateSnapshot" gRPC call. // For a pre-existing snapshot, this field will be filled with the "ready_to_use" // value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, // otherwise, this field will be set to "True". // If not specified, it means the readiness of a snapshot is unknown. "readyToUse"?: bool // restoreSize represents the complete size of the snapshot in bytes. // In dynamic snapshot creation case, this field will be filled in by the // CSI snapshotter sidecar with the "size_bytes" value returned from CSI // "CreateSnapshot" gRPC call. // For a pre-existing snapshot, this field will be filled with the "size_bytes" // value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. // When restoring a volume from this snapshot, the size of the volume MUST NOT // be smaller than the restoreSize if it is specified, otherwise the restoration will fail. // If not specified, it indicates that the size is unknown. "restoreSize"?: int64 & int & >=0 // snapshotHandle is the CSI "snapshot_id" of a snapshot on the underlying storage system. // If not specified, it indicates that dynamic snapshot creation has either failed // or it is still in progress. "snapshotHandle"?: string // VolumeGroupSnapshotHandle is the CSI "group_snapshot_id" of a group snapshot // on the underlying storage system. "volumeGroupSnapshotHandle"?: string } _embeddedResource: { "apiVersion"!: string "kind"!: string "metadata"?: {...} } apiVersion: "snapshot.storage.k8s.io/v1" kind: "VolumeSnapshotContent" metadata!: { "name"!: string "namespace"?: string "labels"?: {[string]: string} "annotations"?: {[string]: string} ... } }