package v1beta1 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 // 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 } // 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 } _embeddedResource: { "apiVersion"!: string "kind"!: string "metadata"?: { ... } } apiVersion: "snapshot.storage.k8s.io/v1beta1" kind: "VolumeSnapshotContent" metadata!: { "name"!: string "namespace"?: string "labels"?: { [string]: string } "annotations"?: { [string]: string } ... } }