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