package v1 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 "metadata"?: {} // 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]+))))?$" // VolumeGroupSnapshotName is the name of the VolumeGroupSnapshot of which this // VolumeSnapshot is a part of. "volumeGroupSnapshotName"?: string } _embeddedResource: { "apiVersion"!: string "kind"!: string "metadata"?: {...} } apiVersion: "snapshot.storage.k8s.io/v1" kind: "VolumeSnapshot" metadata!: { "name"!: string "namespace"!: string "labels"?: {[string]: string} "annotations"?: {[string]: string} ... } }