Class V1CSIStorageCapacity
CSIStorageCapacity stores the result of one CSI GetCapacity call. For a given
StorageClass, this describes the available capacity in a particular topology
segment. This can be used when considering where to instantiate new
PersistentVolumes.
For example this can express things like: - StorageClass "standard" has "1234
GiB" available in "topology.kubernetes.io/zone=us-east1" - StorageClass
"localssd" has "10 GiB" available in "kubernetes.io/hostname=knode-abc123"
The following three cases all imply that no capacity is available for a certain
combination: - no object exists with suitable topology and storage class name -
such an object exists, but the capacity is unset - such an object exists, but
the capacity is zero
The producer of these objects can decide which approach is more suitable.
They are consumed by the kube-scheduler when a CSI driver opts into
capacity-aware scheduling with CSIDriverSpec.StorageCapacity. The scheduler
compares the MaximumVolumeSize against the requested size of pending volumes to
filter out unsuitable nodes. If MaximumVolumeSize is unset, it falls back to a
comparison against the less precise Capacity. If that is also unset, the
scheduler assumes that capacity is insufficient and tries some other node.
Inheritance
V1CSIStorageCapacity
Assembly: KubernetesClient.dll
Syntax
[KubernetesEntity(Group = "storage.k8s.io", Kind = "CSIStorageCapacity", ApiVersion = "v1", PluralName = "csistoragecapacities")]
public record V1CSIStorageCapacity : IKubernetesObject<V1ObjectMeta>, IKubernetesObject, IMetadata<V1ObjectMeta>, IEquatable<V1CSIStorageCapacity>
Constructors
View Source
V1CSIStorageCapacity()
Declaration
public V1CSIStorageCapacity()
View Source
V1CSIStorageCapacity(V1CSIStorageCapacity)
Declaration
protected V1CSIStorageCapacity(V1CSIStorageCapacity original)
Parameters
Fields
View Source
KubeApiVersion
Declaration
public const string KubeApiVersion = "v1"
Field Value
View Source
KubeGroup
Declaration
public const string KubeGroup = "storage.k8s.io"
Field Value
View Source
KubeKind
Declaration
public const string KubeKind = "CSIStorageCapacity"
Field Value
View Source
KubePluralName
Declaration
public const string KubePluralName = "csistoragecapacities"
Field Value
Properties
View Source
ApiVersion
Declaration
[JsonPropertyName("apiVersion")]
public string ApiVersion { get; set; }
Property Value
View Source
Capacity
capacity is the value reported by the CSI driver in its GetCapacityResponse for
a GetCapacityRequest with topology and parameters that match the previous
fields.
The semantic is currently (CSI spec 1.2) defined as: The available capacity, in
bytes, of the storage that can be used to provision volumes. If not set, that
information is currently unavailable.
Declaration
[JsonPropertyName("capacity")]
public ResourceQuantity Capacity { get; set; }
Property Value
View Source
EqualityContract
Declaration
protected virtual Type EqualityContract { get; }
Property Value
View Source
Kind
Declaration
[JsonPropertyName("kind")]
public string Kind { get; set; }
Property Value
View Source
MaximumVolumeSize
maximumVolumeSize is the value reported by the CSI driver in its
GetCapacityResponse for a GetCapacityRequest with topology and parameters that
match the previous fields.
This is defined since CSI spec 1.4.0 as the largest size that may be used in a
CreateVolumeRequest.capacity_range.required_bytes field to create a volume with
the same parameters as those in GetCapacityRequest. The corresponding value in
the Kubernetes API is ResourceRequirements.Requests in a volume claim.
Declaration
[JsonPropertyName("maximumVolumeSize")]
public ResourceQuantity MaximumVolumeSize { get; set; }
Property Value
View Source
Declaration
[JsonPropertyName("metadata")]
public V1ObjectMeta Metadata { get; set; }
Property Value
View Source
NodeTopology
nodeTopology defines which nodes have access to the storage for which capacity
was reported. If not set, the storage is not accessible from any node in the
cluster. If empty, the storage is accessible from all nodes. This field is
immutable.
Declaration
[JsonPropertyName("nodeTopology")]
public V1LabelSelector NodeTopology { get; set; }
Property Value
View Source
StorageClassName
storageClassName represents the name of the StorageClass that the reported
capacity applies to. It must meet the same requirements as the name of a
StorageClass object (non-empty, DNS subdomain). If that object no longer exists,
the CSIStorageCapacity object is obsolete and should be removed by its creator.
This field is immutable.
Declaration
[JsonPropertyName("storageClassName")]
public string StorageClassName { get; set; }
Property Value
Methods
View Source
Equals(object?)
Declaration
public override bool Equals(object? obj)
Parameters
| Type |
Name |
Description |
| object |
obj |
|
Returns
Overrides
View Source
Equals(V1CSIStorageCapacity?)
Declaration
public virtual bool Equals(V1CSIStorageCapacity? other)
Parameters
Returns
View Source
GetHashCode()
Declaration
public override int GetHashCode()
Returns
Overrides
View Source
PrintMembers(StringBuilder)
Declaration
protected virtual bool PrintMembers(StringBuilder builder)
Parameters
Returns
View Source
ToString()
Declaration
public override string ToString()
Returns
Overrides
Operators
View Source
operator ==(V1CSIStorageCapacity?, V1CSIStorageCapacity?)
Declaration
public static bool operator ==(V1CSIStorageCapacity? left, V1CSIStorageCapacity? right)
Parameters
Returns
View Source
operator !=(V1CSIStorageCapacity?, V1CSIStorageCapacity?)
Declaration
public static bool operator !=(V1CSIStorageCapacity? left, V1CSIStorageCapacity? right)
Parameters
Returns
Implements
Extension Methods