package v1beta1 import "time" // VolumeSnapshot is a user's request for either creating a point-in-time // snapshot of a persistent volume, or binding to a pre-existing snapshot. #VolumeSnapshot: { _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 the desired characteristics of a snapshot requested by a user. // More info: // https://kubernetes.io/docs/concepts/storage/volume-snapshots#volumesnapshots // Required. "spec"!: { // source specifies where a snapshot will be created from. This field is // immutable after creation. Required. "source"!: { // persistentVolumeClaimName specifies the name of the PersistentVolumeClaim // object representing the volume from which a snapshot should be created. This // PVC is assumed to be in the same namespace as the VolumeSnapshot object. // This field should be set if the snapshot does not exists, and needs to be // created. This field is immutable. "persistentVolumeClaimName"?: string // volumeSnapshotContentName specifies the name of a pre-existing // VolumeSnapshotContent object representing an existing volume snapshot. This // field should be set if the snapshot already exists and only needs a // representation in Kubernetes. This field is immutable. "volumeSnapshotContentName"?: string } // VolumeSnapshotClassName is the name of the VolumeSnapshotClass requested by // the VolumeSnapshot. VolumeSnapshotClassName may be left nil to indicate that // the default SnapshotClass should be used. A given cluster may have multiple // default Volume SnapshotClasses: one default per CSI Driver. If a // VolumeSnapshot does not specify a SnapshotClass, VolumeSnapshotSource will // be checked to figure out what the associated CSI Driver is, and the default // VolumeSnapshotClass associated with that CSI Driver will be used. If more // than one VolumeSnapshotClass exist for a given CSI Driver and more than one // have been marked as default, CreateSnapshot will fail and generate an event. // Empty string is not allowed for this field. "volumeSnapshotClassName"?: string } // status represents the current information of a snapshot. Consumers must // verify binding between VolumeSnapshot and VolumeSnapshotContent objects is // successful (by validating that both VolumeSnapshot and VolumeSnapshotContent // point at each other) before using this object. "status"?: { // boundVolumeSnapshotContentName is the name of the VolumeSnapshotContent // object to which this VolumeSnapshot object intends to bind to. If not // specified, it indicates that the VolumeSnapshot object has not been // successfully bound to a VolumeSnapshotContent object yet. NOTE: To avoid // possible security issues, consumers must verify binding between // VolumeSnapshot and VolumeSnapshotContent objects is successful (by // validating that both VolumeSnapshot and VolumeSnapshotContent point at each // other) before using this object. "boundVolumeSnapshotContentName"?: string // 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 snapshot controller 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 may indicate that the creation time of the snapshot is unknown. "creationTime"?: time.Time // error is the last observed error during snapshot creation, if any. This field // could be helpful to upper level controllers(i.e., application controller) to // decide whether they should continue on waiting for the snapshot to be // created based on the type of error reported. The snapshot controller will // keep retrying when an error occurs during the snapshot creation. Upon // success, 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 the snapshot is ready to be used to restore a volume. // In dynamic snapshot creation case, this field will be filled in by the // snapshot controller 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 minimum size of volume required to create a volume // from this snapshot. In dynamic snapshot creation case, this field will be // filled in by the snapshot controller 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"?: =~"^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" } _embeddedResource: { "apiVersion"!: string "kind"!: string "metadata"?: {...} } apiVersion: "snapshot.storage.k8s.io/v1beta1" kind: "VolumeSnapshot" metadata!: { "name"!: string "namespace"!: string "labels"?: {[string]: string} "annotations"?: {[string]: string} ... } }