Show / Hide Table of Contents

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
object
V1CSIStorageCapacity
Implements
IKubernetesObject<V1ObjectMeta>
IKubernetesObject
IMetadata<V1ObjectMeta>
IEquatable<V1CSIStorageCapacity>
Inherited Members
object.GetType()
object.MemberwiseClone()
object.Equals(object, object)
object.ReferenceEquals(object, object)
Namespace: k8s.Models
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

V1CSIStorageCapacity()

Declaration
public V1CSIStorageCapacity()

V1CSIStorageCapacity(V1CSIStorageCapacity)

Declaration
protected V1CSIStorageCapacity(V1CSIStorageCapacity original)
Parameters
Type Name Description
V1CSIStorageCapacity original

Fields

KubeApiVersion

Declaration
public const string KubeApiVersion = "v1"
Field Value
Type Description
string

KubeGroup

Declaration
public const string KubeGroup = "storage.k8s.io"
Field Value
Type Description
string

KubeKind

Declaration
public const string KubeKind = "CSIStorageCapacity"
Field Value
Type Description
string

KubePluralName

Declaration
public const string KubePluralName = "csistoragecapacities"
Field Value
Type Description
string

Properties

ApiVersion

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

Declaration
[JsonPropertyName("apiVersion")]
public string ApiVersion { get; set; }
Property Value
Type Description
string

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
Type Description
ResourceQuantity

EqualityContract

Declaration
protected virtual Type EqualityContract { get; }
Property Value
Type Description
Type

Kind

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

Declaration
[JsonPropertyName("kind")]
public string Kind { get; set; }
Property Value
Type Description
string

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
Type Description
ResourceQuantity

Metadata

Standard object's metadata. The name has no particular meaning. It must be a DNS subdomain (dots allowed, 253 characters). To ensure that there are no conflicts with other CSI drivers on the cluster, the recommendation is to use csisc-<uuid>, a generated name, or a reverse-domain name which ends with the unique CSI driver name.

Objects are namespaced.

More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

Declaration
[JsonPropertyName("metadata")]
public V1ObjectMeta Metadata { get; set; }
Property Value
Type Description
V1ObjectMeta

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
Type Description
V1LabelSelector

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
Type Description
string

Methods

Equals(object?)

Declaration
public override bool Equals(object? obj)
Parameters
Type Name Description
object obj
Returns
Type Description
bool
Overrides
object.Equals(object)

Equals(V1CSIStorageCapacity?)

Declaration
public virtual bool Equals(V1CSIStorageCapacity? other)
Parameters
Type Name Description
V1CSIStorageCapacity other
Returns
Type Description
bool

GetHashCode()

Declaration
public override int GetHashCode()
Returns
Type Description
int
Overrides
object.GetHashCode()

PrintMembers(StringBuilder)

Declaration
protected virtual bool PrintMembers(StringBuilder builder)
Parameters
Type Name Description
StringBuilder builder
Returns
Type Description
bool

ToString()

Declaration
public override string ToString()
Returns
Type Description
string
Overrides
object.ToString()

Operators

operator ==(V1CSIStorageCapacity?, V1CSIStorageCapacity?)

Declaration
public static bool operator ==(V1CSIStorageCapacity? left, V1CSIStorageCapacity? right)
Parameters
Type Name Description
V1CSIStorageCapacity left
V1CSIStorageCapacity right
Returns
Type Description
bool

operator !=(V1CSIStorageCapacity?, V1CSIStorageCapacity?)

Declaration
public static bool operator !=(V1CSIStorageCapacity? left, V1CSIStorageCapacity? right)
Parameters
Type Name Description
V1CSIStorageCapacity left
V1CSIStorageCapacity right
Returns
Type Description
bool

Implements

IKubernetesObject<TMetadata>
IKubernetesObject
IMetadata<T>
IEquatable<T>

Extension Methods

ModelExtensions.ApiGroup(IKubernetesObject)
ModelExtensions.ApiGroupAndVersion(IKubernetesObject)
ModelExtensions.ApiGroupVersion(IKubernetesObject)
ModelExtensions.GetApiGroupAndVersion(IKubernetesObject, out string, out string)
ModelExtensions.AddFinalizer(IMetadata<V1ObjectMeta>, string)
ModelExtensions.AddOwnerReference(IMetadata<V1ObjectMeta>, V1OwnerReference)
ModelExtensions.Annotations(IMetadata<V1ObjectMeta>)
ModelExtensions.CreationTimestamp(IMetadata<V1ObjectMeta>)
ModelExtensions.DeletionTimestamp(IMetadata<V1ObjectMeta>)
ModelExtensions.EnsureMetadata(IMetadata<V1ObjectMeta>)
ModelExtensions.Finalizers(IMetadata<V1ObjectMeta>)
ModelExtensions.FindOwnerReference(IMetadata<V1ObjectMeta>, Predicate<V1OwnerReference>)
ModelExtensions.FindOwnerReference(IMetadata<V1ObjectMeta>, IKubernetesObject<V1ObjectMeta>)
ModelExtensions.Generation(IMetadata<V1ObjectMeta>)
ModelExtensions.GetAnnotation(IMetadata<V1ObjectMeta>, string)
ModelExtensions.GetController(IMetadata<V1ObjectMeta>)
ModelExtensions.GetLabel(IMetadata<V1ObjectMeta>, string)
ModelExtensions.GetOwnerReference(IMetadata<V1ObjectMeta>, Predicate<V1OwnerReference>)
ModelExtensions.GetOwnerReference(IMetadata<V1ObjectMeta>, IKubernetesObject<V1ObjectMeta>)
ModelExtensions.HasFinalizer(IMetadata<V1ObjectMeta>, string)
ModelExtensions.IsOwnedBy(IMetadata<V1ObjectMeta>, IKubernetesObject<V1ObjectMeta>)
ModelExtensions.Labels(IMetadata<V1ObjectMeta>)
ModelExtensions.Name(IMetadata<V1ObjectMeta>)
ModelExtensions.Namespace(IMetadata<V1ObjectMeta>)
ModelExtensions.OwnerReferences(IMetadata<V1ObjectMeta>)
ModelExtensions.RemoveFinalizer(IMetadata<V1ObjectMeta>, string)
ModelExtensions.RemoveOwnerReference(IMetadata<V1ObjectMeta>, IKubernetesObject<V1ObjectMeta>)
ModelExtensions.RemoveOwnerReferences(IMetadata<V1ObjectMeta>, Predicate<V1OwnerReference>)
ModelExtensions.RemoveOwnerReferences(IMetadata<V1ObjectMeta>, IKubernetesObject<V1ObjectMeta>)
ModelExtensions.ResourceVersion(IMetadata<V1ObjectMeta>)
ModelExtensions.SetAnnotation(IMetadata<V1ObjectMeta>, string, string)
ModelExtensions.SetLabel(IMetadata<V1ObjectMeta>, string, string)
ModelExtensions.Uid(IMetadata<V1ObjectMeta>)
Extensions.GetKubernetesTypeMetadata<T>(T)
Extensions.Initialize<T>(T)
In this article
Back to top Generated by DocFX