package v1beta1 import "time" // VolumeGroupSnapshot is a user's request for creating either a point-in-time // group snapshot or binding to a pre-existing group snapshot. #VolumeGroupSnapshot: { _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 group snapshot requested by a user. // Required. "spec"!: { // Source specifies where a group snapshot will be created from. // This field is immutable after creation. // Required. "source"!: { // Selector is a label query over persistent volume claims that are to be // grouped together for snapshotting. // This labelSelector will be used to match the label added to a PVC. // If the label is added or removed to a volume after a group snapshot // is created, the existing group snapshots won't be modified. // Once a VolumeGroupSnapshotContent is created and the sidecar starts to process // it, the volume list will not change with retries. "selector"?: { // matchExpressions is a list of label selector requirements. The requirements are ANDed. "matchExpressions"?: [...{ // key is the label key that the selector applies to. "key"!: string // operator represents a key's relationship to a set of values. // Valid operators are In, NotIn, Exists and DoesNotExist. "operator"!: string // values is an array of string values. If the operator is In or NotIn, // the values array must be non-empty. If the operator is Exists or DoesNotExist, // the values array must be empty. This array is replaced during a strategic // merge patch. "values"?: [...string] }] // matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels // map is equivalent to an element of matchExpressions, whose key field is "key", the // operator is "In", and the values array contains only "value". The requirements are ANDed. "matchLabels"?: [string]: string } // VolumeGroupSnapshotContentName specifies the name of a pre-existing VolumeGroupSnapshotContent // object representing an existing volume group snapshot. // This field should be set if the volume group snapshot already exists and // only needs a representation in Kubernetes. // This field is immutable. "volumeGroupSnapshotContentName"?: string } // VolumeGroupSnapshotClassName is the name of the VolumeGroupSnapshotClass // requested by the VolumeGroupSnapshot. // VolumeGroupSnapshotClassName may be left nil to indicate that the default // class will be used. // Empty string is not allowed for this field. "volumeGroupSnapshotClassName"?: string } // Status represents the current information of a group snapshot. // Consumers must verify binding between VolumeGroupSnapshot and // VolumeGroupSnapshotContent objects is successful (by validating that both // VolumeGroupSnapshot and VolumeGroupSnapshotContent point to each other) before // using this object. "status"?: { // BoundVolumeGroupSnapshotContentName is the name of the VolumeGroupSnapshotContent // object to which this VolumeGroupSnapshot object intends to bind to. // If not specified, it indicates that the VolumeGroupSnapshot object has not // been successfully bound to a VolumeGroupSnapshotContent object yet. // NOTE: To avoid possible security issues, consumers must verify binding between // VolumeGroupSnapshot and VolumeGroupSnapshotContent objects is successful // (by validating that both VolumeGroupSnapshot and VolumeGroupSnapshotContent // point at each other) before using this object. "boundVolumeGroupSnapshotContentName"?: string // CreationTime is the timestamp when the point-in-time group snapshot is taken // by the underlying storage system. // If not specified, it may indicate that the creation time of the group snapshot // 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. // This field is updated based on the CreationTime field in VolumeGroupSnapshotContentStatus "creationTime"?: time.Time // Error is the last observed error during group 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 group // snapshot to be created based on the type of error reported. // The snapshot controller will keep retrying when an error occurs during the // group 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 all the individual snapshots in the group are ready // to be used to restore a group of volumes. // ReadyToUse becomes true when ReadyToUse of all individual snapshots become true. // If not specified, it means the readiness of a group snapshot is unknown. "readyToUse"?: bool } _embeddedResource: { "apiVersion"!: string "kind"!: string "metadata"?: {...} } apiVersion: "groupsnapshot.storage.k8s.io/v1beta1" kind: "VolumeGroupSnapshot" metadata!: { "name"!: string "namespace"!: string "labels"?: {[string]: string} "annotations"?: {[string]: string} ... } }