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