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