updated vendor
This commit is contained in:
+1644
File diff suppressed because it is too large
Load Diff
+374
-122
@@ -65,8 +65,8 @@ message AllocatedDeviceStatus {
|
||||
//
|
||||
// +optional
|
||||
// +featureGate=DRAConsumableCapacity
|
||||
// +k8s:optional
|
||||
// +k8s:format=k8s-uuid
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:format=k8s-uuid
|
||||
optional string shareID = 7;
|
||||
|
||||
// Conditions contains the latest observation of the device's state.
|
||||
@@ -90,7 +90,7 @@ message AllocatedDeviceStatus {
|
||||
// NetworkData contains network-related information specific to the device.
|
||||
//
|
||||
// +optional
|
||||
// +k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
optional NetworkDeviceData networkData = 6;
|
||||
}
|
||||
|
||||
@@ -110,7 +110,7 @@ message AllocationResult {
|
||||
// AllocationTimestamp stores the time when the resources were allocated.
|
||||
// This field is not guaranteed to be set, in which case that time is unknown.
|
||||
//
|
||||
// This is an alpha field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus
|
||||
// This is a beta field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus
|
||||
// feature gate.
|
||||
//
|
||||
// +optional
|
||||
@@ -169,6 +169,14 @@ message CELDeviceSelector {
|
||||
//
|
||||
// cel.bind(dra, device.attributes["dra.example.com"], dra.someBool && dra.anotherBool)
|
||||
//
|
||||
// When the DRAListTypeAttributes feature gate is enabled,
|
||||
// the includes() helper is available and it can work for both scalar
|
||||
// and list-type attributes. It was introduced to support smooth migration
|
||||
// from scalar attributes to list-type attributes while keeping
|
||||
// CEL expressions simple. For example:
|
||||
//
|
||||
// device.attributes["dra.example.com"].models.includes("some-model")
|
||||
//
|
||||
// The length of the expression must be smaller or equal to 10 Ki. The
|
||||
// cost of evaluating it is also limited based on the estimated number
|
||||
// of logical steps.
|
||||
@@ -307,8 +315,8 @@ message CounterSet {
|
||||
// It must be a DNS label.
|
||||
//
|
||||
// +required
|
||||
// +k8s:required
|
||||
// +k8s:format=k8s-short-name
|
||||
// +k8s:alpha(since: "1.36")=+k8s:required
|
||||
// +k8s:alpha(since: "1.36")=+k8s:format=k8s-short-name
|
||||
optional string name = 1;
|
||||
|
||||
// Counters defines the set of counters for this CounterSet
|
||||
@@ -317,6 +325,8 @@ message CounterSet {
|
||||
// The maximum number of counters is 32.
|
||||
//
|
||||
// +required
|
||||
// +k8s:alpha(since: "1.36")=+k8s:required
|
||||
// +k8s:alpha(since: "1.36")=+k8s:eachKey=+k8s:format=k8s-short-name
|
||||
map<string, Counter> counters = 2;
|
||||
}
|
||||
|
||||
@@ -335,6 +345,7 @@ message Device {
|
||||
// The maximum number of attributes and capacities combined is 32.
|
||||
//
|
||||
// +optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
map<string, DeviceAttribute> attributes = 2;
|
||||
|
||||
// Capacity defines the set of capacities for this device.
|
||||
@@ -355,13 +366,13 @@ message Device {
|
||||
// device is 2.
|
||||
//
|
||||
// +optional
|
||||
// +k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +listType=atomic
|
||||
// +k8s:listType=atomic
|
||||
// +k8s:unique=map
|
||||
// +k8s:listMapKey=counterSet
|
||||
// +k8s:alpha(since: "1.36")=+k8s:unique=map
|
||||
// +k8s:alpha(since: "1.36")=+k8s:listMapKey=counterSet
|
||||
// +featureGate=DRAPartitionableDevices
|
||||
// +k8s:maxItems=2
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxItems=2
|
||||
repeated DeviceCounterConsumption consumesCounters = 4;
|
||||
|
||||
// NodeName identifies the node where the device is available.
|
||||
@@ -402,12 +413,13 @@ message Device {
|
||||
// any device in a ResourceSlice, then the maximum number of
|
||||
// allowed devices per ResourceSlice is 64 instead of 128.
|
||||
//
|
||||
// This is an alpha field and requires enabling the DRADeviceTaints
|
||||
// This is a beta field and requires enabling the DRADeviceTaints
|
||||
// feature gate.
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +featureGate=DRADeviceTaints
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
repeated DeviceTaint taints = 8;
|
||||
|
||||
// BindsToNode indicates if the usage of an allocation involving this device
|
||||
@@ -415,7 +427,7 @@ message Device {
|
||||
// If set to true, the scheduler will set the ResourceClaim.Status.Allocation.NodeSelector
|
||||
// to match the node where the allocation was made.
|
||||
//
|
||||
// This is an alpha field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus
|
||||
// This is a beta field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus
|
||||
// feature gates.
|
||||
//
|
||||
// +optional
|
||||
@@ -431,14 +443,14 @@ message Device {
|
||||
//
|
||||
// The conditions must be a valid condition type string.
|
||||
//
|
||||
// This is an alpha field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus
|
||||
// This is a beta field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus
|
||||
// feature gates.
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +featureGate=DRADeviceBindingConditions,DRAResourceClaimDeviceStatus
|
||||
// +k8s:optional
|
||||
// +k8s:maxItems=4
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxItems=4
|
||||
repeated string bindingConditions = 10;
|
||||
|
||||
// BindingFailureConditions defines the conditions for binding failure.
|
||||
@@ -449,14 +461,14 @@ message Device {
|
||||
//
|
||||
// The conditions must be a valid condition type string.
|
||||
//
|
||||
// This is an alpha field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus
|
||||
// This is a beta field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus
|
||||
// feature gates.
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +featureGate=DRADeviceBindingConditions,DRAResourceClaimDeviceStatus
|
||||
// +k8s:optional
|
||||
// +k8s:maxItems=4
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxItems=4
|
||||
repeated string bindingFailureConditions = 11;
|
||||
|
||||
// AllowMultipleAllocations marks whether the device is allowed to be allocated to multiple DeviceRequests.
|
||||
@@ -467,6 +479,21 @@ message Device {
|
||||
// +optional
|
||||
// +featureGate=DRAConsumableCapacity
|
||||
optional bool allowMultipleAllocations = 12;
|
||||
|
||||
// NodeAllocatableResourceMappings defines the mapping of node resources
|
||||
// that are managed by the DRA driver exposing this device. This includes resources currently
|
||||
// reported in v1.Node `status.allocatable` that are not extended resources
|
||||
// (see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#extended-resources).
|
||||
// Examples include "cpu", "memory", "ephemeral-storage", and hugepages.
|
||||
// In addition to standard requests made through the Pod `spec`, these resources
|
||||
// can also be requested through claims and allocated by the DRA driver.
|
||||
// For example, a CPU DRA driver might allocate exclusive CPUs or auxiliary node memory
|
||||
// dependencies of an accelerator device.
|
||||
// The keys of this map are the node-allocatable resource names (e.g., "cpu", "memory").
|
||||
// Extended resource names are not permitted as keys.
|
||||
// +optional
|
||||
// +featureGate=DRANodeAllocatableResources
|
||||
map<string, NodeAllocatableResourceMapping> nodeAllocatableResourceMappings = 13;
|
||||
}
|
||||
|
||||
// DeviceAllocationConfiguration gets embedded in an AllocationResult.
|
||||
@@ -476,7 +503,7 @@ message DeviceAllocationConfiguration {
|
||||
// or from a claim.
|
||||
//
|
||||
// +required
|
||||
// +k8s:required
|
||||
// +k8s:alpha(since: "1.36")=+k8s:required
|
||||
optional string source = 1;
|
||||
|
||||
// Requests lists the names of requests where the configuration applies.
|
||||
@@ -488,10 +515,10 @@ message DeviceAllocationConfiguration {
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:listType=atomic
|
||||
// +k8s:unique=set
|
||||
// +k8s:maxItems=32
|
||||
// +k8s:alpha(since: "1.36")=+k8s:unique=set
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxItems=32
|
||||
repeated string requests = 2;
|
||||
|
||||
optional DeviceConfiguration deviceConfiguration = 3;
|
||||
@@ -503,8 +530,8 @@ message DeviceAllocationResult {
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +k8s:optional
|
||||
// +k8s:maxItems=32
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxItems=32
|
||||
repeated DeviceRequestAllocationResult results = 1;
|
||||
|
||||
// This field is a combination of all the claim and class configuration parameters.
|
||||
@@ -517,8 +544,8 @@ message DeviceAllocationResult {
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +k8s:optional
|
||||
// +k8s:maxItems=64
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxItems=64
|
||||
repeated DeviceAllocationConfiguration config = 2;
|
||||
}
|
||||
|
||||
@@ -527,31 +554,79 @@ message DeviceAttribute {
|
||||
// IntValue is a number.
|
||||
//
|
||||
// +optional
|
||||
// +k8s:optional
|
||||
// +k8s:unionMember
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:unionMember
|
||||
optional int64 int = 2;
|
||||
|
||||
// BoolValue is a true/false value.
|
||||
//
|
||||
// +optional
|
||||
// +k8s:optional
|
||||
// +k8s:unionMember
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:unionMember
|
||||
optional bool bool = 3;
|
||||
|
||||
// StringValue is a string. Must not be longer than 64 characters.
|
||||
//
|
||||
// +optional
|
||||
// +k8s:optional
|
||||
// +k8s:unionMember
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:unionMember
|
||||
optional string string = 4;
|
||||
|
||||
// VersionValue is a semantic version according to semver.org spec 2.0.0.
|
||||
// Must not be longer than 64 characters.
|
||||
//
|
||||
// +optional
|
||||
// +k8s:optional
|
||||
// +k8s:unionMember
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:unionMember
|
||||
optional string version = 5;
|
||||
|
||||
// IntValues is a non-empty list of numbers.
|
||||
//
|
||||
// This is an alpha field and requires enabling the DRAListTypeAttributes feature gate.
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +k8s:listType=atomic
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:unionMember
|
||||
// +featureGate=DRAListTypeAttributes
|
||||
repeated int64 ints = 6;
|
||||
|
||||
// BoolValues is a non-empty list of true/false values.
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +k8s:listType=atomic
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:unionMember
|
||||
// +featureGate=DRAListTypeAttributes
|
||||
repeated bool bools = 7;
|
||||
|
||||
// StringValues is a non-empty list of strings.
|
||||
// Each string must not be longer than 64 characters.
|
||||
//
|
||||
// This is an alpha field and requires enabling the DRAListTypeAttributes feature gate.
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +k8s:listType=atomic
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:unionMember
|
||||
// +featureGate=DRAListTypeAttributes
|
||||
repeated string strings = 8;
|
||||
|
||||
// VersionValues is a non-empty list of semantic versions according to semver.org spec 2.0.0.
|
||||
// Each version string must not be longer than 64 characters.
|
||||
//
|
||||
// This is an alpha field and requires enabling the DRAListTypeAttributes feature gate.
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +k8s:listType=atomic
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:unionMember
|
||||
// +featureGate=DRAListTypeAttributes
|
||||
repeated string versions = 9;
|
||||
}
|
||||
|
||||
// DeviceCapacity describes a quantity associated with a device.
|
||||
@@ -587,11 +662,11 @@ message DeviceClaim {
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:listType=atomic
|
||||
// +k8s:unique=map
|
||||
// +k8s:listMapKey=name
|
||||
// +k8s:maxItems=32
|
||||
// +k8s:alpha(since: "1.36")=+k8s:unique=map
|
||||
// +k8s:alpha(since: "1.36")=+k8s:listMapKey=name
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxItems=32
|
||||
repeated DeviceRequest requests = 1;
|
||||
|
||||
// These constraints must be satisfied by the set of devices that get
|
||||
@@ -599,8 +674,8 @@ message DeviceClaim {
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +k8s:optional
|
||||
// +k8s:maxItems=32
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxItems=32
|
||||
repeated DeviceConstraint constraints = 2;
|
||||
|
||||
// This field holds configuration for multiple potential drivers which
|
||||
@@ -609,8 +684,8 @@ message DeviceClaim {
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +k8s:optional
|
||||
// +k8s:maxItems=32
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxItems=32
|
||||
repeated DeviceClaimConfiguration config = 3;
|
||||
}
|
||||
|
||||
@@ -625,10 +700,10 @@ message DeviceClaimConfiguration {
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:listType=atomic
|
||||
// +k8s:unique=set
|
||||
// +k8s:maxItems=32
|
||||
// +k8s:alpha(since: "1.36")=+k8s:unique=set
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxItems=32
|
||||
repeated string requests = 1;
|
||||
|
||||
optional DeviceConfiguration deviceConfiguration = 2;
|
||||
@@ -644,8 +719,8 @@ message DeviceClaimConfiguration {
|
||||
message DeviceClass {
|
||||
// Standard object metadata
|
||||
// +optional
|
||||
// +k8s:subfield(name)=+k8s:optional
|
||||
// +k8s:subfield(name)=+k8s:format=k8s-long-name
|
||||
// +k8s:alpha(since: "1.36")=+k8s:subfield(name)=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:subfield(name)=+k8s:format=k8s-long-name
|
||||
optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
|
||||
|
||||
// Spec defines what can be allocated and how to configure it.
|
||||
@@ -681,8 +756,8 @@ message DeviceClassSpec {
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +k8s:optional
|
||||
// +k8s:maxItems=32
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxItems=32
|
||||
repeated DeviceSelector selectors = 1;
|
||||
|
||||
// Config defines configuration parameters that apply to each device that is claimed via this class.
|
||||
@@ -693,8 +768,8 @@ message DeviceClassSpec {
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +k8s:optional
|
||||
// +k8s:maxItems=32
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxItems=32
|
||||
repeated DeviceClassConfiguration config = 2;
|
||||
|
||||
// ExtendedResourceName is the extended resource name for the devices of this class.
|
||||
@@ -706,11 +781,11 @@ message DeviceClassSpec {
|
||||
// If two classes are created at the same time, then the name of the class
|
||||
// lexicographically sorted first is picked.
|
||||
//
|
||||
// This is an alpha field.
|
||||
// This is a beta field.
|
||||
// +optional
|
||||
// +featureGate=DRAExtendedResource
|
||||
// +k8s:optional
|
||||
// +k8s:format=k8s-extended-resource-name
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:format=k8s-extended-resource-name
|
||||
optional string extendedResourceName = 4;
|
||||
}
|
||||
|
||||
@@ -722,7 +797,7 @@ message DeviceConfiguration {
|
||||
//
|
||||
// +optional
|
||||
// +oneOf=ConfigurationType
|
||||
// +k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
optional OpaqueDeviceConfiguration opaque = 1;
|
||||
}
|
||||
|
||||
@@ -740,10 +815,10 @@ message DeviceConstraint {
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:listType=atomic
|
||||
// +k8s:unique=set
|
||||
// +k8s:maxItems=32
|
||||
// +k8s:alpha(since: "1.36")=+k8s:unique=set
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxItems=32
|
||||
repeated string requests = 1;
|
||||
|
||||
// MatchAttribute requires that all devices in question have this
|
||||
@@ -757,17 +832,27 @@ message DeviceConstraint {
|
||||
// its specification, but if one device doesn't, then it also will not be
|
||||
// chosen.
|
||||
//
|
||||
// When the DRAListTypeAttributes feature gate is enabled, comparison uses
|
||||
// set semantics(i.e., element order and duplicates are ignored): list-valued attributes
|
||||
// match when the intersection across all devices is non-empty.
|
||||
// Scalar values are treated as singleton sets for backward compatibility.
|
||||
//
|
||||
// Must include the domain qualifier.
|
||||
//
|
||||
// +optional
|
||||
// +oneOf=ConstraintType
|
||||
// +k8s:optional
|
||||
// +k8s:format=k8s-resource-fully-qualified-name
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:format=k8s-resource-fully-qualified-name
|
||||
optional string matchAttribute = 2;
|
||||
|
||||
// DistinctAttribute requires that all devices in question have this
|
||||
// attribute and that its type and value are unique across those devices.
|
||||
//
|
||||
// When the DRAListTypeAttributes feature gate is enabled, comparison uses
|
||||
// set semantics (i.e., element order and duplicates are ignored):
|
||||
// list-valued attributes must be pairwise disjoint across devices.
|
||||
// Scalar values are treated as singleton sets for backward compatibility.
|
||||
//
|
||||
// This acts as the inverse of MatchAttribute.
|
||||
//
|
||||
// This constraint is used to avoid allocating multiple requests to the same device
|
||||
@@ -789,8 +874,8 @@ message DeviceCounterConsumption {
|
||||
// counters defined will be consumed.
|
||||
//
|
||||
// +required
|
||||
// +k8s:required
|
||||
// +k8s:format=k8s-short-name
|
||||
// +k8s:alpha(since: "1.36")=+k8s:required
|
||||
// +k8s:alpha(since: "1.36")=+k8s:format=k8s-short-name
|
||||
optional string counterSet = 1;
|
||||
|
||||
// Counters defines the counters that will be consumed by the device.
|
||||
@@ -798,6 +883,8 @@ message DeviceCounterConsumption {
|
||||
// The maximum number of counters is 32.
|
||||
//
|
||||
// +required
|
||||
// +k8s:alpha(since: "1.36")=+k8s:required
|
||||
// +k8s:alpha(since: "1.36")=+k8s:eachKey=+k8s:format=k8s-short-name
|
||||
map<string, Counter> counters = 2;
|
||||
}
|
||||
|
||||
@@ -827,7 +914,7 @@ message DeviceRequest {
|
||||
//
|
||||
// +optional
|
||||
// +oneOf=deviceRequestType
|
||||
// +k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
optional ExactDeviceRequest exactly = 2;
|
||||
|
||||
// FirstAvailable contains subrequests, of which exactly one will be
|
||||
@@ -848,11 +935,11 @@ message DeviceRequest {
|
||||
// +oneOf=deviceRequestType
|
||||
// +listType=atomic
|
||||
// +featureGate=DRAPrioritizedList
|
||||
// +k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:listType=atomic
|
||||
// +k8s:unique=map
|
||||
// +k8s:listMapKey=name
|
||||
// +k8s:maxItems=8
|
||||
// +k8s:alpha(since: "1.36")=+k8s:unique=map
|
||||
// +k8s:alpha(since: "1.36")=+k8s:listMapKey=name
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxItems=8
|
||||
repeated DeviceSubRequest firstAvailable = 3;
|
||||
}
|
||||
|
||||
@@ -877,8 +964,9 @@ message DeviceRequestAllocationResult {
|
||||
// vendor of the driver. It should use only lower case characters.
|
||||
//
|
||||
// +required
|
||||
// +k8s:format=k8s-long-name-caseless
|
||||
// +k8s:required
|
||||
// +k8s:alpha(since: "1.36")=+k8s:format=k8s-long-name-caseless
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxLength=63
|
||||
// +k8s:alpha(since: "1.36")=+k8s:required
|
||||
optional string driver = 2;
|
||||
|
||||
// This name together with the driver name and the device name field
|
||||
@@ -888,8 +976,8 @@ message DeviceRequestAllocationResult {
|
||||
// DNS sub-domains separated by slashes.
|
||||
//
|
||||
// +required
|
||||
// +k8s:required
|
||||
// +k8s:format=k8s-resource-pool-name
|
||||
// +k8s:alpha(since: "1.36")=+k8s:required
|
||||
// +k8s:alpha(since: "1.36")=+k8s:format=k8s-resource-pool-name
|
||||
optional string pool = 3;
|
||||
|
||||
// Device references one device instance via its name in the driver's
|
||||
@@ -915,38 +1003,39 @@ message DeviceRequestAllocationResult {
|
||||
//
|
||||
// The maximum number of tolerations is 16.
|
||||
//
|
||||
// This is an alpha field and requires enabling the DRADeviceTaints
|
||||
// This is a beta field and requires enabling the DRADeviceTaints
|
||||
// feature gate.
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +featureGate=DRADeviceTaints
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
repeated DeviceToleration tolerations = 6;
|
||||
|
||||
// BindingConditions contains a copy of the BindingConditions
|
||||
// from the corresponding ResourceSlice at the time of allocation.
|
||||
//
|
||||
// This is an alpha field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus
|
||||
// This is a beta field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus
|
||||
// feature gates.
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +featureGate=DRADeviceBindingConditions,DRAResourceClaimDeviceStatus
|
||||
// +k8s:optional
|
||||
// +k8s:maxItems=4
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxItems=4
|
||||
repeated string bindingConditions = 7;
|
||||
|
||||
// BindingFailureConditions contains a copy of the BindingFailureConditions
|
||||
// from the corresponding ResourceSlice at the time of allocation.
|
||||
//
|
||||
// This is an alpha field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus
|
||||
// This is a beta field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus
|
||||
// feature gates.
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +featureGate=DRADeviceBindingConditions,DRAResourceClaimDeviceStatus
|
||||
// +k8s:optional
|
||||
// +k8s:maxItems=4
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxItems=4
|
||||
repeated string bindingFailureConditions = 8;
|
||||
|
||||
// ShareID uniquely identifies an individual allocation share of the device,
|
||||
@@ -956,8 +1045,8 @@ message DeviceRequestAllocationResult {
|
||||
//
|
||||
// +optional
|
||||
// +featureGate=DRAConsumableCapacity
|
||||
// +k8s:optional
|
||||
// +k8s:format=k8s-uuid
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:format=k8s-uuid
|
||||
optional string shareID = 9;
|
||||
|
||||
// ConsumedCapacity tracks the amount of capacity consumed per device as part of the claim request.
|
||||
@@ -1014,8 +1103,8 @@ message DeviceSubRequest {
|
||||
// to reference.
|
||||
//
|
||||
// +required
|
||||
// +k8s:required
|
||||
// +k8s:format=k8s-long-name
|
||||
// +k8s:alpha(since: "1.36")=+k8s:required
|
||||
// +k8s:alpha(since: "1.36")=+k8s:format=k8s-long-name
|
||||
optional string deviceClassName = 2;
|
||||
|
||||
// Selectors define criteria which must be satisfied by a specific
|
||||
@@ -1025,8 +1114,8 @@ message DeviceSubRequest {
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +k8s:optional
|
||||
// +k8s:maxItems=32
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxItems=32
|
||||
repeated DeviceSelector selectors = 3;
|
||||
|
||||
// AllocationMode and its related fields define how devices are allocated
|
||||
@@ -1048,6 +1137,7 @@ message DeviceSubRequest {
|
||||
// requests with unknown modes.
|
||||
//
|
||||
// +optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
optional string allocationMode = 4;
|
||||
|
||||
// Count is used only when the count mode is "ExactCount". Must be greater than zero.
|
||||
@@ -1072,12 +1162,13 @@ message DeviceSubRequest {
|
||||
//
|
||||
// The maximum number of tolerations is 16.
|
||||
//
|
||||
// This is an alpha field and requires enabling the DRADeviceTaints
|
||||
// This is a beta field and requires enabling the DRADeviceTaints
|
||||
// feature gate.
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +featureGate=DRADeviceTaints
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
repeated DeviceToleration tolerations = 6;
|
||||
|
||||
// Capacity define resource requirements against each capacity.
|
||||
@@ -1124,16 +1215,134 @@ message DeviceTaint {
|
||||
// Consumers must treat unknown effects like None.
|
||||
//
|
||||
// +required
|
||||
// +k8s:required
|
||||
// +k8s:alpha(since: "1.36")=+k8s:required
|
||||
optional string effect = 3;
|
||||
|
||||
// TimeAdded represents the time at which the taint was added.
|
||||
// TimeAdded represents the time at which the taint was added or
|
||||
// (only in a DeviceTaintRule) the effect was modified.
|
||||
// Added automatically during create or update if not set.
|
||||
//
|
||||
// In addition, in a DeviceTaintRule a value provided during
|
||||
// an update gets replaced with the current time if the provided
|
||||
// value is the same as the old one and the new effect is different.
|
||||
// Changing the key and/or value while keeping the effect unchanged
|
||||
// is possible and does not update the time stamp because the eviction
|
||||
// which uses it is either already started (NoExecute) or
|
||||
// not started yet (NoEffect, NoSchedule).
|
||||
//
|
||||
// +optional
|
||||
optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4;
|
||||
}
|
||||
|
||||
// DeviceTaintRule adds one taint to all devices which match the selector.
|
||||
// This has the same effect as if the taint was specified directly
|
||||
// in the ResourceSlice by the DRA driver.
|
||||
message DeviceTaintRule {
|
||||
// Standard object metadata
|
||||
// +optional
|
||||
optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
|
||||
|
||||
// Spec specifies the selector and one taint.
|
||||
//
|
||||
// Changing the spec automatically increments the metadata.generation number.
|
||||
// +required
|
||||
optional DeviceTaintRuleSpec spec = 2;
|
||||
|
||||
// Status provides information about what was requested in the spec.
|
||||
//
|
||||
// +optional
|
||||
optional DeviceTaintRuleStatus status = 3;
|
||||
}
|
||||
|
||||
// DeviceTaintRuleList is a collection of DeviceTaintRules.
|
||||
message DeviceTaintRuleList {
|
||||
// Standard list metadata
|
||||
// +optional
|
||||
optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
|
||||
|
||||
// Items is the list of DeviceTaintRules.
|
||||
repeated DeviceTaintRule items = 2;
|
||||
}
|
||||
|
||||
// DeviceTaintRuleSpec specifies the selector and one taint.
|
||||
message DeviceTaintRuleSpec {
|
||||
// DeviceSelector defines which device(s) the taint is applied to.
|
||||
// All selector criteria must be satisfied for a device to
|
||||
// match. The empty selector matches all devices. Without
|
||||
// a selector, no devices are matches.
|
||||
//
|
||||
// +optional
|
||||
optional DeviceTaintSelector deviceSelector = 1;
|
||||
|
||||
// The taint that gets applied to matching devices.
|
||||
//
|
||||
// +required
|
||||
optional DeviceTaint taint = 2;
|
||||
}
|
||||
|
||||
// DeviceTaintRuleStatus provides information about an on-going pod eviction.
|
||||
message DeviceTaintRuleStatus {
|
||||
// Conditions provide information about the state of the DeviceTaintRule
|
||||
// and the cluster at some point in time,
|
||||
// in a machine-readable and human-readable format.
|
||||
//
|
||||
// The following condition is currently defined as part of this API, more may
|
||||
// get added:
|
||||
// - Type: EvictionInProgress
|
||||
// - Status: True if there are currently pods which need to be evicted, False otherwise
|
||||
// (includes the effects which don't cause eviction).
|
||||
// - Reason: not specified, may change
|
||||
// - Message: includes information about number of pending pods and already evicted pods
|
||||
// in a human-readable format, updated periodically, may change
|
||||
//
|
||||
// For `effect: None`, the condition above gets set once for each change to
|
||||
// the spec, with the message containing information about what would happen
|
||||
// if the effect was `NoExecute`. This feedback can be used to decide whether
|
||||
// changing the effect to `NoExecute` will work as intended. It only gets
|
||||
// set once to avoid having to constantly update the status.
|
||||
//
|
||||
// Must have 8 or fewer entries.
|
||||
//
|
||||
// +optional
|
||||
// +listType=map
|
||||
// +listMapKey=type
|
||||
// +patchStrategy=merge
|
||||
// +patchMergeKey=type
|
||||
repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 1;
|
||||
}
|
||||
|
||||
// DeviceTaintSelector defines which device(s) a DeviceTaintRule applies to.
|
||||
// The empty selector matches all devices. Without a selector, no devices
|
||||
// are matched.
|
||||
message DeviceTaintSelector {
|
||||
// If driver is set, only devices from that driver are selected.
|
||||
// This fields corresponds to slice.spec.driver.
|
||||
//
|
||||
// +optional
|
||||
optional string driver = 2;
|
||||
|
||||
// If pool is set, only devices in that pool are selected.
|
||||
//
|
||||
// Also setting the driver name may be useful to avoid
|
||||
// ambiguity when different drivers use the same pool name,
|
||||
// but this is not required because selecting pools from
|
||||
// different drivers may also be useful, for example when
|
||||
// drivers with node-local devices use the node name as
|
||||
// their pool name.
|
||||
//
|
||||
// +optional
|
||||
optional string pool = 3;
|
||||
|
||||
// If device is set, only devices with that name are selected.
|
||||
// This field corresponds to slice.spec.devices[].name.
|
||||
//
|
||||
// Setting also driver and pool may be required to avoid ambiguity,
|
||||
// but is not required.
|
||||
//
|
||||
// +optional
|
||||
optional string device = 4;
|
||||
}
|
||||
|
||||
// The ResourceClaim this DeviceToleration is attached to tolerates any taint that matches
|
||||
// the triple <key,value,effect> using the matching operator <operator>.
|
||||
message DeviceToleration {
|
||||
@@ -1142,8 +1351,8 @@ message DeviceToleration {
|
||||
// Must be a label name.
|
||||
//
|
||||
// +optional
|
||||
// +k8s:optional
|
||||
// +k8s:format=k8s-label-key
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:format=k8s-label-key
|
||||
optional string key = 1;
|
||||
|
||||
// Operator represents a key's relationship to the value.
|
||||
@@ -1153,6 +1362,7 @@ message DeviceToleration {
|
||||
//
|
||||
// +optional
|
||||
// +default="Equal"
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
optional string operator = 2;
|
||||
|
||||
// Value is the taint value the toleration matches to.
|
||||
@@ -1166,6 +1376,7 @@ message DeviceToleration {
|
||||
// When specified, allowed values are NoSchedule and NoExecute.
|
||||
//
|
||||
// +optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
optional string effect = 4;
|
||||
|
||||
// TolerationSeconds represents the period of time the toleration (which must be
|
||||
@@ -1203,8 +1414,8 @@ message ExactDeviceRequest {
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +k8s:optional
|
||||
// +k8s:maxItems=32
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxItems=32
|
||||
repeated DeviceSelector selectors = 2;
|
||||
|
||||
// AllocationMode and its related fields define how devices are allocated
|
||||
@@ -1227,7 +1438,7 @@ message ExactDeviceRequest {
|
||||
// requests with unknown modes.
|
||||
//
|
||||
// +optional
|
||||
// +k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
optional string allocationMode = 3;
|
||||
|
||||
// Count is used only when the count mode is "ExactCount". Must be greater than zero.
|
||||
@@ -1266,12 +1477,13 @@ message ExactDeviceRequest {
|
||||
//
|
||||
// The maximum number of tolerations is 16.
|
||||
//
|
||||
// This is an alpha field and requires enabling the DRADeviceTaints
|
||||
// This is a beta field and requires enabling the DRADeviceTaints
|
||||
// feature gate.
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +featureGate=DRADeviceTaints
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
repeated DeviceToleration tolerations = 6;
|
||||
|
||||
// Capacity define resource requirements against each capacity.
|
||||
@@ -1300,11 +1512,11 @@ message NetworkDeviceData {
|
||||
// the allocated device. This might be the name of a physical or virtual
|
||||
// network interface being configured in the pod.
|
||||
//
|
||||
// Must not be longer than 256 characters.
|
||||
// Must not be longer than 256 bytes.
|
||||
//
|
||||
// +optional
|
||||
// +k8s:optional
|
||||
// +k8s:maxLength=256
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxBytes=256
|
||||
optional string interfaceName = 1;
|
||||
|
||||
// IPs lists the network addresses assigned to the device's network interface.
|
||||
@@ -1315,22 +1527,60 @@ message NetworkDeviceData {
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:listType=atomic
|
||||
// +k8s:unique=set
|
||||
// +k8s:maxItems=16
|
||||
// +k8s:alpha(since: "1.36")=+k8s:unique=set
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxItems=16
|
||||
repeated string ips = 2;
|
||||
|
||||
// HardwareAddress represents the hardware address (e.g. MAC Address) of the device's network interface.
|
||||
//
|
||||
// Must not be longer than 128 characters.
|
||||
// Must not be longer than 128 bytes.
|
||||
//
|
||||
// +optional
|
||||
// +k8s:optional
|
||||
// +k8s:maxLength=128
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxBytes=128
|
||||
optional string hardwareAddress = 3;
|
||||
}
|
||||
|
||||
// NodeAllocatableResourceMapping defines the translation between the DRA device/capacity
|
||||
// units requested to the corresponding quantity of the node allocatable resource.
|
||||
message NodeAllocatableResourceMapping {
|
||||
// CapacityKey references a capacity name defined as a key in the
|
||||
// `spec.devices[*].capacity` map. When this field is set, the value associated with
|
||||
// this key in the `status.allocation.devices.results[*].consumedCapacity` map
|
||||
// (for a specific claim allocation) determines the base quantity for
|
||||
// the node allocatable resource. If `allocationMultiplier` is also set, it is
|
||||
// multiplied with the base quantity.
|
||||
// For example, if `spec.devices[*].capacity` has an entry "dra.example.com/memory": "128Gi",
|
||||
// and this field is set to "dra.example.com/memory", then for a claim allocation
|
||||
// that consumes { "dra.example.com/memory": "4Gi" } the base quantity for the
|
||||
// node allocatable resource mapping will be "4Gi", and `allocationMultiplier` should
|
||||
// be omitted or set to "1".
|
||||
// +optional
|
||||
optional string capacityKey = 1;
|
||||
|
||||
// AllocationMultiplier is used as a multiplier for the allocated device count or the allocated capacity in the claim.
|
||||
// It defaults to 1 if not specified. How the field is used also depends on whether `capacityKey` is set.
|
||||
// 1. If `capacityKey` is NOT set: `allocationMultiplier` multiplies the device count allocated to the claim.
|
||||
// a. A DRA driver representing each CPU core as a device would have
|
||||
// {ResourceName: "cpu", allocationMultiplier: "2"} in its
|
||||
// `nodeAllocatableResourceMappings`. If 4 devices are allocated to the claim,
|
||||
// 4 * 2 CPUs would be considered as allocated and subtracted from the node's capacity.
|
||||
// b. A GPU device that needs additional node memory per GPU allocation would
|
||||
// have {ResourceName: "memory", allocationMultiplier: "2Gi"}. Each allocated
|
||||
// GPU device instance of this type will account for 2Gi of memory.
|
||||
//
|
||||
// 2. If `capacityKey` IS set: `allocationMultiplier` is multiplied by the amount of that capacity consumed.
|
||||
// The final node allocatable resource amount is `consumedCapacity[capacityKey]` * `allocationMultiplier`.
|
||||
// For example, if a Device's capacity "dra.example.com/cores" is consumed,
|
||||
// and each "core" provides 2 "cpu"s, the mapping would be:
|
||||
// {ResourceName: "cpu", capacityKey: "dra.example.com/cores", allocationMultiplier: "2"}.
|
||||
// If a claim consumes 8 "dra.example.com/cores", the CPU footprint is 8 * 2 = 16.
|
||||
// +optional
|
||||
optional .k8s.io.apimachinery.pkg.api.resource.Quantity allocationMultiplier = 2;
|
||||
}
|
||||
|
||||
// OpaqueDeviceConfiguration contains configuration parameters for a driver
|
||||
// in a format defined by the driver vendor.
|
||||
message OpaqueDeviceConfiguration {
|
||||
@@ -1344,8 +1594,9 @@ message OpaqueDeviceConfiguration {
|
||||
// vendor of the driver. It should use only lower case characters.
|
||||
//
|
||||
// +required
|
||||
// +k8s:required
|
||||
// +k8s:format=k8s-long-name-caseless
|
||||
// +k8s:alpha(since: "1.36")=+k8s:required
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxLength=63
|
||||
// +k8s:alpha(since: "1.36")=+k8s:format=k8s-long-name-caseless
|
||||
optional string driver = 1;
|
||||
|
||||
// Parameters can contain arbitrary data. It is the responsibility of
|
||||
@@ -1374,7 +1625,7 @@ message ResourceClaim {
|
||||
|
||||
// Spec describes what is being requested and how to configure it.
|
||||
// The spec is immutable.
|
||||
// +k8s:immutable
|
||||
// +k8s:alpha(since: "1.36")=+k8s:immutable
|
||||
optional ResourceClaimSpec spec = 2;
|
||||
|
||||
// Status describes whether the claim is ready to use and what has been allocated.
|
||||
@@ -1429,8 +1680,8 @@ message ResourceClaimStatus {
|
||||
// Allocation is set once the claim has been allocated successfully.
|
||||
//
|
||||
// +optional
|
||||
// +k8s:optional
|
||||
// +k8s:update=NoModify
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:update=NoModify
|
||||
optional AllocationResult allocation = 1;
|
||||
|
||||
// ReservedFor indicates which entities are currently allowed to use
|
||||
@@ -1458,10 +1709,10 @@ message ResourceClaimStatus {
|
||||
// +listMapKey=uid
|
||||
// +patchStrategy=merge
|
||||
// +patchMergeKey=uid
|
||||
// +k8s:optional
|
||||
// +k8s:listType=map
|
||||
// +k8s:listMapKey=uid
|
||||
// +k8s:maxItems=256
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:listType=map
|
||||
// +k8s:alpha(since: "1.36")=+k8s:listMapKey=uid
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxItems=256
|
||||
repeated ResourceClaimConsumerReference reservedFor = 2;
|
||||
|
||||
// Devices contains the status of each device allocated for this
|
||||
@@ -1469,18 +1720,18 @@ message ResourceClaimStatus {
|
||||
// information. Entries are owned by their respective drivers.
|
||||
//
|
||||
// +optional
|
||||
// +k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +listType=map
|
||||
// +listMapKey=driver
|
||||
// +listMapKey=device
|
||||
// +listMapKey=pool
|
||||
// +listMapKey=shareID
|
||||
// +featureGate=DRAResourceClaimDeviceStatus
|
||||
// +k8s:listType=map
|
||||
// +k8s:listMapKey=driver
|
||||
// +k8s:listMapKey=device
|
||||
// +k8s:listMapKey=pool
|
||||
// +k8s:listMapKey=shareID
|
||||
// +k8s:alpha(since: "1.36")=+k8s:listType=map
|
||||
// +k8s:alpha(since: "1.36")=+k8s:listMapKey=driver
|
||||
// +k8s:alpha(since: "1.36")=+k8s:listMapKey=device
|
||||
// +k8s:alpha(since: "1.36")=+k8s:listMapKey=pool
|
||||
// +k8s:alpha(since: "1.36")=+k8s:listMapKey=shareID
|
||||
repeated AllocatedDeviceStatus devices = 4;
|
||||
}
|
||||
|
||||
@@ -1594,6 +1845,7 @@ message ResourceSlice {
|
||||
// Contains the information published by the driver.
|
||||
//
|
||||
// Changing the spec automatically increments the metadata.generation number.
|
||||
// +required
|
||||
optional ResourceSliceSpec spec = 2;
|
||||
}
|
||||
|
||||
@@ -1668,7 +1920,7 @@ message ResourceSliceSpec {
|
||||
//
|
||||
// +optional
|
||||
// +listType=atomic
|
||||
// +k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +zeroOrOneOf=ResourceSliceType
|
||||
repeated Device devices = 6;
|
||||
|
||||
@@ -1694,14 +1946,14 @@ message ResourceSliceSpec {
|
||||
// The maximum number of counter sets is 8.
|
||||
//
|
||||
// +optional
|
||||
// +k8s:optional
|
||||
// +k8s:alpha(since: "1.36")=+k8s:optional
|
||||
// +listType=atomic
|
||||
// +k8s:listType=atomic
|
||||
// +k8s:unique=map
|
||||
// +k8s:listMapKey=name
|
||||
// +k8s:alpha(since: "1.36")=+k8s:unique=map
|
||||
// +k8s:alpha(since: "1.36")=+k8s:listMapKey=name
|
||||
// +featureGate=DRAPartitionableDevices
|
||||
// +zeroOrOneOf=ResourceSliceType
|
||||
// +k8s:maxItems=8
|
||||
// +k8s:alpha(since: "1.36")=+k8s:maxItems=8
|
||||
repeated CounterSet sharedCounters = 8;
|
||||
}
|
||||
|
||||
|
||||
-108
@@ -1,108 +0,0 @@
|
||||
//go:build kubernetes_protomessage_one_more_release
|
||||
// +build kubernetes_protomessage_one_more_release
|
||||
|
||||
/*
|
||||
Copyright The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// Code generated by go-to-protobuf. DO NOT EDIT.
|
||||
|
||||
package v1beta2
|
||||
|
||||
func (*AllocatedDeviceStatus) ProtoMessage() {}
|
||||
|
||||
func (*AllocationResult) ProtoMessage() {}
|
||||
|
||||
func (*CELDeviceSelector) ProtoMessage() {}
|
||||
|
||||
func (*CapacityRequestPolicy) ProtoMessage() {}
|
||||
|
||||
func (*CapacityRequestPolicyRange) ProtoMessage() {}
|
||||
|
||||
func (*CapacityRequirements) ProtoMessage() {}
|
||||
|
||||
func (*Counter) ProtoMessage() {}
|
||||
|
||||
func (*CounterSet) ProtoMessage() {}
|
||||
|
||||
func (*Device) ProtoMessage() {}
|
||||
|
||||
func (*DeviceAllocationConfiguration) ProtoMessage() {}
|
||||
|
||||
func (*DeviceAllocationResult) ProtoMessage() {}
|
||||
|
||||
func (*DeviceAttribute) ProtoMessage() {}
|
||||
|
||||
func (*DeviceCapacity) ProtoMessage() {}
|
||||
|
||||
func (*DeviceClaim) ProtoMessage() {}
|
||||
|
||||
func (*DeviceClaimConfiguration) ProtoMessage() {}
|
||||
|
||||
func (*DeviceClass) ProtoMessage() {}
|
||||
|
||||
func (*DeviceClassConfiguration) ProtoMessage() {}
|
||||
|
||||
func (*DeviceClassList) ProtoMessage() {}
|
||||
|
||||
func (*DeviceClassSpec) ProtoMessage() {}
|
||||
|
||||
func (*DeviceConfiguration) ProtoMessage() {}
|
||||
|
||||
func (*DeviceConstraint) ProtoMessage() {}
|
||||
|
||||
func (*DeviceCounterConsumption) ProtoMessage() {}
|
||||
|
||||
func (*DeviceRequest) ProtoMessage() {}
|
||||
|
||||
func (*DeviceRequestAllocationResult) ProtoMessage() {}
|
||||
|
||||
func (*DeviceSelector) ProtoMessage() {}
|
||||
|
||||
func (*DeviceSubRequest) ProtoMessage() {}
|
||||
|
||||
func (*DeviceTaint) ProtoMessage() {}
|
||||
|
||||
func (*DeviceToleration) ProtoMessage() {}
|
||||
|
||||
func (*ExactDeviceRequest) ProtoMessage() {}
|
||||
|
||||
func (*NetworkDeviceData) ProtoMessage() {}
|
||||
|
||||
func (*OpaqueDeviceConfiguration) ProtoMessage() {}
|
||||
|
||||
func (*ResourceClaim) ProtoMessage() {}
|
||||
|
||||
func (*ResourceClaimConsumerReference) ProtoMessage() {}
|
||||
|
||||
func (*ResourceClaimList) ProtoMessage() {}
|
||||
|
||||
func (*ResourceClaimSpec) ProtoMessage() {}
|
||||
|
||||
func (*ResourceClaimStatus) ProtoMessage() {}
|
||||
|
||||
func (*ResourceClaimTemplate) ProtoMessage() {}
|
||||
|
||||
func (*ResourceClaimTemplateList) ProtoMessage() {}
|
||||
|
||||
func (*ResourceClaimTemplateSpec) ProtoMessage() {}
|
||||
|
||||
func (*ResourcePool) ProtoMessage() {}
|
||||
|
||||
func (*ResourceSlice) ProtoMessage() {}
|
||||
|
||||
func (*ResourceSliceList) ProtoMessage() {}
|
||||
|
||||
func (*ResourceSliceSpec) ProtoMessage() {}
|
||||
+2
@@ -46,6 +46,8 @@ func addKnownTypes(scheme *runtime.Scheme) error {
|
||||
scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
&DeviceClass{},
|
||||
&DeviceClassList{},
|
||||
&DeviceTaintRule{},
|
||||
&DeviceTaintRuleList{},
|
||||
&ResourceClaim{},
|
||||
&ResourceClaimList{},
|
||||
&ResourceClaimTemplate{},
|
||||
|
||||
+436
-128
File diff suppressed because it is too large
Load Diff
+97
-31
@@ -46,7 +46,7 @@ var map_AllocationResult = map[string]string{
|
||||
"": "AllocationResult contains attributes of an allocated resource.",
|
||||
"devices": "Devices is the result of allocating devices.",
|
||||
"nodeSelector": "NodeSelector defines where the allocated resources are available. If unset, they are available everywhere.",
|
||||
"allocationTimestamp": "AllocationTimestamp stores the time when the resources were allocated. This field is not guaranteed to be set, in which case that time is unknown.\n\nThis is an alpha field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus feature gate.",
|
||||
"allocationTimestamp": "AllocationTimestamp stores the time when the resources were allocated. This field is not guaranteed to be set, in which case that time is unknown.\n\nThis is a beta field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus feature gate.",
|
||||
}
|
||||
|
||||
func (AllocationResult) SwaggerDoc() map[string]string {
|
||||
@@ -55,7 +55,7 @@ func (AllocationResult) SwaggerDoc() map[string]string {
|
||||
|
||||
var map_CELDeviceSelector = map[string]string{
|
||||
"": "CELDeviceSelector contains a CEL expression for selecting a device.",
|
||||
"expression": "Expression is a CEL expression which evaluates a single device. It must evaluate to true when the device under consideration satisfies the desired criteria, and false when it does not. Any other result is an error and causes allocation of devices to abort.\n\nThe expression's input is an object named \"device\", which carries the following properties:\n - driver (string): the name of the driver which defines this device.\n - attributes (map[string]object): the device's attributes, grouped by prefix\n (e.g. device.attributes[\"dra.example.com\"] evaluates to an object with all\n of the attributes which were prefixed by \"dra.example.com\".\n - capacity (map[string]object): the device's capacities, grouped by prefix.\n - allowMultipleAllocations (bool): the allowMultipleAllocations property of the device\n (v1.34+ with the DRAConsumableCapacity feature enabled).\n\nExample: Consider a device with driver=\"dra.example.com\", which exposes two attributes named \"model\" and \"ext.example.com/family\" and which exposes one capacity named \"modules\". This input to this expression would have the following fields:\n\n device.driver\n device.attributes[\"dra.example.com\"].model\n device.attributes[\"ext.example.com\"].family\n device.capacity[\"dra.example.com\"].modules\n\nThe device.driver field can be used to check for a specific driver, either as a high-level precondition (i.e. you only want to consider devices from this driver) or as part of a multi-clause expression that is meant to consider devices from different drivers.\n\nThe value type of each attribute is defined by the device definition, and users who write these expressions must consult the documentation for their specific drivers. The value type of each capacity is Quantity.\n\nIf an unknown prefix is used as a lookup in either device.attributes or device.capacity, an empty map will be returned. Any reference to an unknown field will cause an evaluation error and allocation to abort.\n\nA robust expression should check for the existence of attributes before referencing them.\n\nFor ease of use, the cel.bind() function is enabled, and can be used to simplify expressions that access multiple attributes with the same domain. For example:\n\n cel.bind(dra, device.attributes[\"dra.example.com\"], dra.someBool && dra.anotherBool)\n\nThe length of the expression must be smaller or equal to 10 Ki. The cost of evaluating it is also limited based on the estimated number of logical steps.",
|
||||
"expression": "Expression is a CEL expression which evaluates a single device. It must evaluate to true when the device under consideration satisfies the desired criteria, and false when it does not. Any other result is an error and causes allocation of devices to abort.\n\nThe expression's input is an object named \"device\", which carries the following properties:\n - driver (string): the name of the driver which defines this device.\n - attributes (map[string]object): the device's attributes, grouped by prefix\n (e.g. device.attributes[\"dra.example.com\"] evaluates to an object with all\n of the attributes which were prefixed by \"dra.example.com\".\n - capacity (map[string]object): the device's capacities, grouped by prefix.\n - allowMultipleAllocations (bool): the allowMultipleAllocations property of the device\n (v1.34+ with the DRAConsumableCapacity feature enabled).\n\nExample: Consider a device with driver=\"dra.example.com\", which exposes two attributes named \"model\" and \"ext.example.com/family\" and which exposes one capacity named \"modules\". This input to this expression would have the following fields:\n\n device.driver\n device.attributes[\"dra.example.com\"].model\n device.attributes[\"ext.example.com\"].family\n device.capacity[\"dra.example.com\"].modules\n\nThe device.driver field can be used to check for a specific driver, either as a high-level precondition (i.e. you only want to consider devices from this driver) or as part of a multi-clause expression that is meant to consider devices from different drivers.\n\nThe value type of each attribute is defined by the device definition, and users who write these expressions must consult the documentation for their specific drivers. The value type of each capacity is Quantity.\n\nIf an unknown prefix is used as a lookup in either device.attributes or device.capacity, an empty map will be returned. Any reference to an unknown field will cause an evaluation error and allocation to abort.\n\nA robust expression should check for the existence of attributes before referencing them.\n\nFor ease of use, the cel.bind() function is enabled, and can be used to simplify expressions that access multiple attributes with the same domain. For example:\n\n cel.bind(dra, device.attributes[\"dra.example.com\"], dra.someBool && dra.anotherBool)\n\nWhen the DRAListTypeAttributes feature gate is enabled, the includes() helper is available and it can work for both scalar and list-type attributes. It was introduced to support smooth migration from scalar attributes to list-type attributes while keeping CEL expressions simple. For example:\n\n device.attributes[\"dra.example.com\"].models.includes(\"some-model\")\n\nThe length of the expression must be smaller or equal to 10 Ki. The cost of evaluating it is also limited based on the estimated number of logical steps.",
|
||||
}
|
||||
|
||||
func (CELDeviceSelector) SwaggerDoc() map[string]string {
|
||||
@@ -113,19 +113,20 @@ func (CounterSet) SwaggerDoc() map[string]string {
|
||||
}
|
||||
|
||||
var map_Device = map[string]string{
|
||||
"": "Device represents one individual hardware instance that can be selected based on its attributes. Besides the name, exactly one field must be set.",
|
||||
"name": "Name is unique identifier among all devices managed by the driver in the pool. It must be a DNS label.",
|
||||
"attributes": "Attributes defines the set of attributes for this device. The name of each attribute must be unique in that set.\n\nThe maximum number of attributes and capacities combined is 32.",
|
||||
"capacity": "Capacity defines the set of capacities for this device. The name of each capacity must be unique in that set.\n\nThe maximum number of attributes and capacities combined is 32.",
|
||||
"consumesCounters": "ConsumesCounters defines a list of references to sharedCounters and the set of counters that the device will consume from those counter sets.\n\nThere can only be a single entry per counterSet.\n\nThe maximum number of device counter consumptions per device is 2.",
|
||||
"nodeName": "NodeName identifies the node where the device is available.\n\nMust only be set if Spec.PerDeviceNodeSelection is set to true. At most one of NodeName, NodeSelector and AllNodes can be set.",
|
||||
"nodeSelector": "NodeSelector defines the nodes where the device is available.\n\nMust use exactly one term.\n\nMust only be set if Spec.PerDeviceNodeSelection is set to true. At most one of NodeName, NodeSelector and AllNodes can be set.",
|
||||
"allNodes": "AllNodes indicates that all nodes have access to the device.\n\nMust only be set if Spec.PerDeviceNodeSelection is set to true. At most one of NodeName, NodeSelector and AllNodes can be set.",
|
||||
"taints": "If specified, these are the driver-defined taints.\n\nThe maximum number of taints is 16. If taints are set for any device in a ResourceSlice, then the maximum number of allowed devices per ResourceSlice is 64 instead of 128.\n\nThis is an alpha field and requires enabling the DRADeviceTaints feature gate.",
|
||||
"bindsToNode": "BindsToNode indicates if the usage of an allocation involving this device has to be limited to exactly the node that was chosen when allocating the claim. If set to true, the scheduler will set the ResourceClaim.Status.Allocation.NodeSelector to match the node where the allocation was made.\n\nThis is an alpha field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus feature gates.",
|
||||
"bindingConditions": "BindingConditions defines the conditions for proceeding with binding. All of these conditions must be set in the per-device status conditions with a value of True to proceed with binding the pod to the node while scheduling the pod.\n\nThe maximum number of binding conditions is 4.\n\nThe conditions must be a valid condition type string.\n\nThis is an alpha field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus feature gates.",
|
||||
"bindingFailureConditions": "BindingFailureConditions defines the conditions for binding failure. They may be set in the per-device status conditions. If any is set to \"True\", a binding failure occurred.\n\nThe maximum number of binding failure conditions is 4.\n\nThe conditions must be a valid condition type string.\n\nThis is an alpha field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus feature gates.",
|
||||
"allowMultipleAllocations": "AllowMultipleAllocations marks whether the device is allowed to be allocated to multiple DeviceRequests.\n\nIf AllowMultipleAllocations is set to true, the device can be allocated more than once, and all of its capacity is consumable, regardless of whether the requestPolicy is defined or not.",
|
||||
"": "Device represents one individual hardware instance that can be selected based on its attributes. Besides the name, exactly one field must be set.",
|
||||
"name": "Name is unique identifier among all devices managed by the driver in the pool. It must be a DNS label.",
|
||||
"attributes": "Attributes defines the set of attributes for this device. The name of each attribute must be unique in that set.\n\nThe maximum number of attributes and capacities combined is 32.",
|
||||
"capacity": "Capacity defines the set of capacities for this device. The name of each capacity must be unique in that set.\n\nThe maximum number of attributes and capacities combined is 32.",
|
||||
"consumesCounters": "ConsumesCounters defines a list of references to sharedCounters and the set of counters that the device will consume from those counter sets.\n\nThere can only be a single entry per counterSet.\n\nThe maximum number of device counter consumptions per device is 2.",
|
||||
"nodeName": "NodeName identifies the node where the device is available.\n\nMust only be set if Spec.PerDeviceNodeSelection is set to true. At most one of NodeName, NodeSelector and AllNodes can be set.",
|
||||
"nodeSelector": "NodeSelector defines the nodes where the device is available.\n\nMust use exactly one term.\n\nMust only be set if Spec.PerDeviceNodeSelection is set to true. At most one of NodeName, NodeSelector and AllNodes can be set.",
|
||||
"allNodes": "AllNodes indicates that all nodes have access to the device.\n\nMust only be set if Spec.PerDeviceNodeSelection is set to true. At most one of NodeName, NodeSelector and AllNodes can be set.",
|
||||
"taints": "If specified, these are the driver-defined taints.\n\nThe maximum number of taints is 16. If taints are set for any device in a ResourceSlice, then the maximum number of allowed devices per ResourceSlice is 64 instead of 128.\n\nThis is a beta field and requires enabling the DRADeviceTaints feature gate.",
|
||||
"bindsToNode": "BindsToNode indicates if the usage of an allocation involving this device has to be limited to exactly the node that was chosen when allocating the claim. If set to true, the scheduler will set the ResourceClaim.Status.Allocation.NodeSelector to match the node where the allocation was made.\n\nThis is a beta field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus feature gates.",
|
||||
"bindingConditions": "BindingConditions defines the conditions for proceeding with binding. All of these conditions must be set in the per-device status conditions with a value of True to proceed with binding the pod to the node while scheduling the pod.\n\nThe maximum number of binding conditions is 4.\n\nThe conditions must be a valid condition type string.\n\nThis is a beta field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus feature gates.",
|
||||
"bindingFailureConditions": "BindingFailureConditions defines the conditions for binding failure. They may be set in the per-device status conditions. If any is set to \"True\", a binding failure occurred.\n\nThe maximum number of binding failure conditions is 4.\n\nThe conditions must be a valid condition type string.\n\nThis is a beta field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus feature gates.",
|
||||
"allowMultipleAllocations": "AllowMultipleAllocations marks whether the device is allowed to be allocated to multiple DeviceRequests.\n\nIf AllowMultipleAllocations is set to true, the device can be allocated more than once, and all of its capacity is consumable, regardless of whether the requestPolicy is defined or not.",
|
||||
"nodeAllocatableResourceMappings": "NodeAllocatableResourceMappings defines the mapping of node resources that are managed by the DRA driver exposing this device. This includes resources currently reported in v1.Node `status.allocatable` that are not extended resources (see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#extended-resources). Examples include \"cpu\", \"memory\", \"ephemeral-storage\", and hugepages. In addition to standard requests made through the Pod `spec`, these resources can also be requested through claims and allocated by the DRA driver. For example, a CPU DRA driver might allocate exclusive CPUs or auxiliary node memory dependencies of an accelerator device. The keys of this map are the node-allocatable resource names (e.g., \"cpu\", \"memory\"). Extended resource names are not permitted as keys.",
|
||||
}
|
||||
|
||||
func (Device) SwaggerDoc() map[string]string {
|
||||
@@ -153,11 +154,15 @@ func (DeviceAllocationResult) SwaggerDoc() map[string]string {
|
||||
}
|
||||
|
||||
var map_DeviceAttribute = map[string]string{
|
||||
"": "DeviceAttribute must have exactly one field set.",
|
||||
"int": "IntValue is a number.",
|
||||
"bool": "BoolValue is a true/false value.",
|
||||
"string": "StringValue is a string. Must not be longer than 64 characters.",
|
||||
"version": "VersionValue is a semantic version according to semver.org spec 2.0.0. Must not be longer than 64 characters.",
|
||||
"": "DeviceAttribute must have exactly one field set.",
|
||||
"int": "IntValue is a number.",
|
||||
"bool": "BoolValue is a true/false value.",
|
||||
"string": "StringValue is a string. Must not be longer than 64 characters.",
|
||||
"version": "VersionValue is a semantic version according to semver.org spec 2.0.0. Must not be longer than 64 characters.",
|
||||
"ints": "IntValues is a non-empty list of numbers.\n\nThis is an alpha field and requires enabling the DRAListTypeAttributes feature gate.",
|
||||
"bools": "BoolValues is a non-empty list of true/false values.",
|
||||
"strings": "StringValues is a non-empty list of strings. Each string must not be longer than 64 characters.\n\nThis is an alpha field and requires enabling the DRAListTypeAttributes feature gate.",
|
||||
"versions": "VersionValues is a non-empty list of semantic versions according to semver.org spec 2.0.0. Each version string must not be longer than 64 characters.\n\nThis is an alpha field and requires enabling the DRAListTypeAttributes feature gate.",
|
||||
}
|
||||
|
||||
func (DeviceAttribute) SwaggerDoc() map[string]string {
|
||||
@@ -226,7 +231,7 @@ var map_DeviceClassSpec = map[string]string{
|
||||
"": "DeviceClassSpec is used in a [DeviceClass] to define what can be allocated and how to configure it.",
|
||||
"selectors": "Each selector must be satisfied by a device which is claimed via this class.",
|
||||
"config": "Config defines configuration parameters that apply to each device that is claimed via this class. Some classses may potentially be satisfied by multiple drivers, so each instance of a vendor configuration applies to exactly one driver.\n\nThey are passed to the driver, but are not considered while allocating the claim.",
|
||||
"extendedResourceName": "ExtendedResourceName is the extended resource name for the devices of this class. The devices of this class can be used to satisfy a pod's extended resource requests. It has the same format as the name of a pod's extended resource. It should be unique among all the device classes in a cluster. If two device classes have the same name, then the class created later is picked to satisfy a pod's extended resource requests. If two classes are created at the same time, then the name of the class lexicographically sorted first is picked.\n\nThis is an alpha field.",
|
||||
"extendedResourceName": "ExtendedResourceName is the extended resource name for the devices of this class. The devices of this class can be used to satisfy a pod's extended resource requests. It has the same format as the name of a pod's extended resource. It should be unique among all the device classes in a cluster. If two device classes have the same name, then the class created later is picked to satisfy a pod's extended resource requests. If two classes are created at the same time, then the name of the class lexicographically sorted first is picked.\n\nThis is a beta field.",
|
||||
}
|
||||
|
||||
func (DeviceClassSpec) SwaggerDoc() map[string]string {
|
||||
@@ -245,8 +250,8 @@ func (DeviceConfiguration) SwaggerDoc() map[string]string {
|
||||
var map_DeviceConstraint = map[string]string{
|
||||
"": "DeviceConstraint must have exactly one field set besides Requests.",
|
||||
"requests": "Requests is a list of the one or more requests in this claim which must co-satisfy this constraint. If a request is fulfilled by multiple devices, then all of the devices must satisfy the constraint. If this is not specified, this constraint applies to all requests in this claim.\n\nReferences to subrequests must include the name of the main request and may include the subrequest using the format <main request>[/<subrequest>]. If just the main request is given, the constraint applies to all subrequests.",
|
||||
"matchAttribute": "MatchAttribute requires that all devices in question have this attribute and that its type and value are the same across those devices.\n\nFor example, if you specified \"dra.example.com/numa\" (a hypothetical example!), then only devices in the same NUMA node will be chosen. A device which does not have that attribute will not be chosen. All devices should use a value of the same type for this attribute because that is part of its specification, but if one device doesn't, then it also will not be chosen.\n\nMust include the domain qualifier.",
|
||||
"distinctAttribute": "DistinctAttribute requires that all devices in question have this attribute and that its type and value are unique across those devices.\n\nThis acts as the inverse of MatchAttribute.\n\nThis constraint is used to avoid allocating multiple requests to the same device by ensuring attribute-level differentiation.\n\nThis is useful for scenarios where resource requests must be fulfilled by separate physical devices. For example, a container requests two network interfaces that must be allocated from two different physical NICs.",
|
||||
"matchAttribute": "MatchAttribute requires that all devices in question have this attribute and that its type and value are the same across those devices.\n\nFor example, if you specified \"dra.example.com/numa\" (a hypothetical example!), then only devices in the same NUMA node will be chosen. A device which does not have that attribute will not be chosen. All devices should use a value of the same type for this attribute because that is part of its specification, but if one device doesn't, then it also will not be chosen.\n\nWhen the DRAListTypeAttributes feature gate is enabled, comparison uses set semantics(i.e., element order and duplicates are ignored): list-valued attributes match when the intersection across all devices is non-empty. Scalar values are treated as singleton sets for backward compatibility.\n\nMust include the domain qualifier.",
|
||||
"distinctAttribute": "DistinctAttribute requires that all devices in question have this attribute and that its type and value are unique across those devices.\n\nWhen the DRAListTypeAttributes feature gate is enabled, comparison uses set semantics (i.e., element order and duplicates are ignored): list-valued attributes must be pairwise disjoint across devices. Scalar values are treated as singleton sets for backward compatibility.\n\nThis acts as the inverse of MatchAttribute.\n\nThis constraint is used to avoid allocating multiple requests to the same device by ensuring attribute-level differentiation.\n\nThis is useful for scenarios where resource requests must be fulfilled by separate physical devices. For example, a container requests two network interfaces that must be allocated from two different physical NICs.",
|
||||
}
|
||||
|
||||
func (DeviceConstraint) SwaggerDoc() map[string]string {
|
||||
@@ -281,9 +286,9 @@ var map_DeviceRequestAllocationResult = map[string]string{
|
||||
"pool": "This name together with the driver name and the device name field identify which device was allocated (`<driver name>/<pool name>/<device name>`).\n\nMust not be longer than 253 characters and may contain one or more DNS sub-domains separated by slashes.",
|
||||
"device": "Device references one device instance via its name in the driver's resource pool. It must be a DNS label.",
|
||||
"adminAccess": "AdminAccess indicates that this device was allocated for administrative access. See the corresponding request field for a definition of mode.\n\nThis is an alpha field and requires enabling the DRAAdminAccess feature gate. Admin access is disabled if this field is unset or set to false, otherwise it is enabled.",
|
||||
"tolerations": "A copy of all tolerations specified in the request at the time when the device got allocated.\n\nThe maximum number of tolerations is 16.\n\nThis is an alpha field and requires enabling the DRADeviceTaints feature gate.",
|
||||
"bindingConditions": "BindingConditions contains a copy of the BindingConditions from the corresponding ResourceSlice at the time of allocation.\n\nThis is an alpha field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus feature gates.",
|
||||
"bindingFailureConditions": "BindingFailureConditions contains a copy of the BindingFailureConditions from the corresponding ResourceSlice at the time of allocation.\n\nThis is an alpha field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus feature gates.",
|
||||
"tolerations": "A copy of all tolerations specified in the request at the time when the device got allocated.\n\nThe maximum number of tolerations is 16.\n\nThis is a beta field and requires enabling the DRADeviceTaints feature gate.",
|
||||
"bindingConditions": "BindingConditions contains a copy of the BindingConditions from the corresponding ResourceSlice at the time of allocation.\n\nThis is a beta field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus feature gates.",
|
||||
"bindingFailureConditions": "BindingFailureConditions contains a copy of the BindingFailureConditions from the corresponding ResourceSlice at the time of allocation.\n\nThis is a beta field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus feature gates.",
|
||||
"shareID": "ShareID uniquely identifies an individual allocation share of the device, used when the device supports multiple simultaneous allocations. It serves as an additional map key to differentiate concurrent shares of the same device.",
|
||||
"consumedCapacity": "ConsumedCapacity tracks the amount of capacity consumed per device as part of the claim request. The consumed amount may differ from the requested amount: it is rounded up to the nearest valid value based on the device’s requestPolicy if applicable (i.e., may not be less than the requested amount).\n\nThe total consumed capacity for each device must not exceed the DeviceCapacity's Value.\n\nThis field is populated only for devices that allow multiple allocations. All capacity entries are included, even if the consumed amount is zero.",
|
||||
}
|
||||
@@ -308,7 +313,7 @@ var map_DeviceSubRequest = map[string]string{
|
||||
"selectors": "Selectors define criteria which must be satisfied by a specific device in order for that device to be considered for this subrequest. All selectors must be satisfied for a device to be considered.",
|
||||
"allocationMode": "AllocationMode and its related fields define how devices are allocated to satisfy this subrequest. Supported values are:\n\n- ExactCount: This request is for a specific number of devices.\n This is the default. The exact number is provided in the\n count field.\n\n- All: This subrequest is for all of the matching devices in a pool.\n Allocation will fail if some devices are already allocated,\n unless adminAccess is requested.\n\nIf AllocationMode is not specified, the default mode is ExactCount. If the mode is ExactCount and count is not specified, the default count is one. Any other subrequests must specify this field.\n\nMore modes may get added in the future. Clients must refuse to handle requests with unknown modes.",
|
||||
"count": "Count is used only when the count mode is \"ExactCount\". Must be greater than zero. If AllocationMode is ExactCount and this field is not specified, the default is one.",
|
||||
"tolerations": "If specified, the request's tolerations.\n\nTolerations for NoSchedule are required to allocate a device which has a taint with that effect. The same applies to NoExecute.\n\nIn addition, should any of the allocated devices get tainted with NoExecute after allocation and that effect is not tolerated, then all pods consuming the ResourceClaim get deleted to evict them. The scheduler will not let new pods reserve the claim while it has these tainted devices. Once all pods are evicted, the claim will get deallocated.\n\nThe maximum number of tolerations is 16.\n\nThis is an alpha field and requires enabling the DRADeviceTaints feature gate.",
|
||||
"tolerations": "If specified, the request's tolerations.\n\nTolerations for NoSchedule are required to allocate a device which has a taint with that effect. The same applies to NoExecute.\n\nIn addition, should any of the allocated devices get tainted with NoExecute after allocation and that effect is not tolerated, then all pods consuming the ResourceClaim get deleted to evict them. The scheduler will not let new pods reserve the claim while it has these tainted devices. Once all pods are evicted, the claim will get deallocated.\n\nThe maximum number of tolerations is 16.\n\nThis is a beta field and requires enabling the DRADeviceTaints feature gate.",
|
||||
"capacity": "Capacity define resource requirements against each capacity.\n\nIf this field is unset and the device supports multiple allocations, the default value will be applied to each capacity according to requestPolicy. For the capacity that has no requestPolicy, default is the full capacity value.\n\nApplies to each device allocation. If Count > 1, the request fails if there aren't enough devices that meet the requirements. If AllocationMode is set to All, the request fails if there are devices that otherwise match the request, and have this capacity, with a value >= the requested amount, but which cannot be allocated to this request.",
|
||||
}
|
||||
|
||||
@@ -321,13 +326,64 @@ var map_DeviceTaint = map[string]string{
|
||||
"key": "The taint key to be applied to a device. Must be a label name.",
|
||||
"value": "The taint value corresponding to the taint key. Must be a label value.",
|
||||
"effect": "The effect of the taint on claims that do not tolerate the taint and through such claims on the pods using them.\n\nValid effects are None, NoSchedule and NoExecute. PreferNoSchedule as used for nodes is not valid here. More effects may get added in the future. Consumers must treat unknown effects like None.",
|
||||
"timeAdded": "TimeAdded represents the time at which the taint was added. Added automatically during create or update if not set.",
|
||||
"timeAdded": "TimeAdded represents the time at which the taint was added or (only in a DeviceTaintRule) the effect was modified. Added automatically during create or update if not set.\n\nIn addition, in a DeviceTaintRule a value provided during an update gets replaced with the current time if the provided value is the same as the old one and the new effect is different. Changing the key and/or value while keeping the effect unchanged is possible and does not update the time stamp because the eviction which uses it is either already started (NoExecute) or not started yet (NoEffect, NoSchedule).",
|
||||
}
|
||||
|
||||
func (DeviceTaint) SwaggerDoc() map[string]string {
|
||||
return map_DeviceTaint
|
||||
}
|
||||
|
||||
var map_DeviceTaintRule = map[string]string{
|
||||
"": "DeviceTaintRule adds one taint to all devices which match the selector. This has the same effect as if the taint was specified directly in the ResourceSlice by the DRA driver.",
|
||||
"metadata": "Standard object metadata",
|
||||
"spec": "Spec specifies the selector and one taint.\n\nChanging the spec automatically increments the metadata.generation number.",
|
||||
"status": "Status provides information about what was requested in the spec.",
|
||||
}
|
||||
|
||||
func (DeviceTaintRule) SwaggerDoc() map[string]string {
|
||||
return map_DeviceTaintRule
|
||||
}
|
||||
|
||||
var map_DeviceTaintRuleList = map[string]string{
|
||||
"": "DeviceTaintRuleList is a collection of DeviceTaintRules.",
|
||||
"metadata": "Standard list metadata",
|
||||
"items": "Items is the list of DeviceTaintRules.",
|
||||
}
|
||||
|
||||
func (DeviceTaintRuleList) SwaggerDoc() map[string]string {
|
||||
return map_DeviceTaintRuleList
|
||||
}
|
||||
|
||||
var map_DeviceTaintRuleSpec = map[string]string{
|
||||
"": "DeviceTaintRuleSpec specifies the selector and one taint.",
|
||||
"deviceSelector": "DeviceSelector defines which device(s) the taint is applied to. All selector criteria must be satisfied for a device to match. The empty selector matches all devices. Without a selector, no devices are matches.",
|
||||
"taint": "The taint that gets applied to matching devices.",
|
||||
}
|
||||
|
||||
func (DeviceTaintRuleSpec) SwaggerDoc() map[string]string {
|
||||
return map_DeviceTaintRuleSpec
|
||||
}
|
||||
|
||||
var map_DeviceTaintRuleStatus = map[string]string{
|
||||
"": "DeviceTaintRuleStatus provides information about an on-going pod eviction.",
|
||||
"conditions": "Conditions provide information about the state of the DeviceTaintRule and the cluster at some point in time, in a machine-readable and human-readable format.\n\nThe following condition is currently defined as part of this API, more may get added: - Type: EvictionInProgress - Status: True if there are currently pods which need to be evicted, False otherwise\n (includes the effects which don't cause eviction).\n- Reason: not specified, may change - Message: includes information about number of pending pods and already evicted pods\n in a human-readable format, updated periodically, may change\n\nFor `effect: None`, the condition above gets set once for each change to the spec, with the message containing information about what would happen if the effect was `NoExecute`. This feedback can be used to decide whether changing the effect to `NoExecute` will work as intended. It only gets set once to avoid having to constantly update the status.\n\nMust have 8 or fewer entries.",
|
||||
}
|
||||
|
||||
func (DeviceTaintRuleStatus) SwaggerDoc() map[string]string {
|
||||
return map_DeviceTaintRuleStatus
|
||||
}
|
||||
|
||||
var map_DeviceTaintSelector = map[string]string{
|
||||
"": "DeviceTaintSelector defines which device(s) a DeviceTaintRule applies to. The empty selector matches all devices. Without a selector, no devices are matched.",
|
||||
"driver": "If driver is set, only devices from that driver are selected. This fields corresponds to slice.spec.driver.",
|
||||
"pool": "If pool is set, only devices in that pool are selected.\n\nAlso setting the driver name may be useful to avoid ambiguity when different drivers use the same pool name, but this is not required because selecting pools from different drivers may also be useful, for example when drivers with node-local devices use the node name as their pool name.",
|
||||
"device": "If device is set, only devices with that name are selected. This field corresponds to slice.spec.devices[].name.\n\nSetting also driver and pool may be required to avoid ambiguity, but is not required.",
|
||||
}
|
||||
|
||||
func (DeviceTaintSelector) SwaggerDoc() map[string]string {
|
||||
return map_DeviceTaintSelector
|
||||
}
|
||||
|
||||
var map_DeviceToleration = map[string]string{
|
||||
"": "The ResourceClaim this DeviceToleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.",
|
||||
"key": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. Must be a label name.",
|
||||
@@ -348,7 +404,7 @@ var map_ExactDeviceRequest = map[string]string{
|
||||
"allocationMode": "AllocationMode and its related fields define how devices are allocated to satisfy this request. Supported values are:\n\n- ExactCount: This request is for a specific number of devices.\n This is the default. The exact number is provided in the\n count field.\n\n- All: This request is for all of the matching devices in a pool.\n At least one device must exist on the node for the allocation to succeed.\n Allocation will fail if some devices are already allocated,\n unless adminAccess is requested.\n\nIf AllocationMode is not specified, the default mode is ExactCount. If the mode is ExactCount and count is not specified, the default count is one. Any other requests must specify this field.\n\nMore modes may get added in the future. Clients must refuse to handle requests with unknown modes.",
|
||||
"count": "Count is used only when the count mode is \"ExactCount\". Must be greater than zero. If AllocationMode is ExactCount and this field is not specified, the default is one.",
|
||||
"adminAccess": "AdminAccess indicates that this is a claim for administrative access to the device(s). Claims with AdminAccess are expected to be used for monitoring or other management services for a device. They ignore all ordinary claims to the device with respect to access modes and any resource allocations.\n\nThis is an alpha field and requires enabling the DRAAdminAccess feature gate. Admin access is disabled if this field is unset or set to false, otherwise it is enabled.",
|
||||
"tolerations": "If specified, the request's tolerations.\n\nTolerations for NoSchedule are required to allocate a device which has a taint with that effect. The same applies to NoExecute.\n\nIn addition, should any of the allocated devices get tainted with NoExecute after allocation and that effect is not tolerated, then all pods consuming the ResourceClaim get deleted to evict them. The scheduler will not let new pods reserve the claim while it has these tainted devices. Once all pods are evicted, the claim will get deallocated.\n\nThe maximum number of tolerations is 16.\n\nThis is an alpha field and requires enabling the DRADeviceTaints feature gate.",
|
||||
"tolerations": "If specified, the request's tolerations.\n\nTolerations for NoSchedule are required to allocate a device which has a taint with that effect. The same applies to NoExecute.\n\nIn addition, should any of the allocated devices get tainted with NoExecute after allocation and that effect is not tolerated, then all pods consuming the ResourceClaim get deleted to evict them. The scheduler will not let new pods reserve the claim while it has these tainted devices. Once all pods are evicted, the claim will get deallocated.\n\nThe maximum number of tolerations is 16.\n\nThis is a beta field and requires enabling the DRADeviceTaints feature gate.",
|
||||
"capacity": "Capacity define resource requirements against each capacity.\n\nIf this field is unset and the device supports multiple allocations, the default value will be applied to each capacity according to requestPolicy. For the capacity that has no requestPolicy, default is the full capacity value.\n\nApplies to each device allocation. If Count > 1, the request fails if there aren't enough devices that meet the requirements. If AllocationMode is set to All, the request fails if there are devices that otherwise match the request, and have this capacity, with a value >= the requested amount, but which cannot be allocated to this request.",
|
||||
}
|
||||
|
||||
@@ -358,15 +414,25 @@ func (ExactDeviceRequest) SwaggerDoc() map[string]string {
|
||||
|
||||
var map_NetworkDeviceData = map[string]string{
|
||||
"": "NetworkDeviceData provides network-related details for the allocated device. This information may be filled by drivers or other components to configure or identify the device within a network context.",
|
||||
"interfaceName": "InterfaceName specifies the name of the network interface associated with the allocated device. This might be the name of a physical or virtual network interface being configured in the pod.\n\nMust not be longer than 256 characters.",
|
||||
"interfaceName": "InterfaceName specifies the name of the network interface associated with the allocated device. This might be the name of a physical or virtual network interface being configured in the pod.\n\nMust not be longer than 256 bytes.",
|
||||
"ips": "IPs lists the network addresses assigned to the device's network interface. This can include both IPv4 and IPv6 addresses. The IPs are in the CIDR notation, which includes both the address and the associated subnet mask. e.g.: \"192.0.2.5/24\" for IPv4 and \"2001:db8::5/64\" for IPv6.",
|
||||
"hardwareAddress": "HardwareAddress represents the hardware address (e.g. MAC Address) of the device's network interface.\n\nMust not be longer than 128 characters.",
|
||||
"hardwareAddress": "HardwareAddress represents the hardware address (e.g. MAC Address) of the device's network interface.\n\nMust not be longer than 128 bytes.",
|
||||
}
|
||||
|
||||
func (NetworkDeviceData) SwaggerDoc() map[string]string {
|
||||
return map_NetworkDeviceData
|
||||
}
|
||||
|
||||
var map_NodeAllocatableResourceMapping = map[string]string{
|
||||
"": "NodeAllocatableResourceMapping defines the translation between the DRA device/capacity units requested to the corresponding quantity of the node allocatable resource.",
|
||||
"capacityKey": "CapacityKey references a capacity name defined as a key in the `spec.devices[*].capacity` map. When this field is set, the value associated with this key in the `status.allocation.devices.results[*].consumedCapacity` map (for a specific claim allocation) determines the base quantity for the node allocatable resource. If `allocationMultiplier` is also set, it is multiplied with the base quantity. For example, if `spec.devices[*].capacity` has an entry \"dra.example.com/memory\": \"128Gi\", and this field is set to \"dra.example.com/memory\", then for a claim allocation that consumes { \"dra.example.com/memory\": \"4Gi\" } the base quantity for the node allocatable resource mapping will be \"4Gi\", and `allocationMultiplier` should be omitted or set to \"1\".",
|
||||
"allocationMultiplier": "AllocationMultiplier is used as a multiplier for the allocated device count or the allocated capacity in the claim. It defaults to 1 if not specified. How the field is used also depends on whether `capacityKey` is set. 1. If `capacityKey` is NOT set: `allocationMultiplier` multiplies the device count allocated to the claim.\n\t a. A DRA driver representing each CPU core as a device would have\n {ResourceName: \"cpu\", allocationMultiplier: \"2\"} in its\n `nodeAllocatableResourceMappings`. If 4 devices are allocated to the claim,\n\t\t 4 * 2 CPUs would be considered as allocated and subtracted from the node's capacity.\n b. A GPU device that needs additional node memory per GPU allocation would\n have {ResourceName: \"memory\", allocationMultiplier: \"2Gi\"}. Each allocated\n\t\t GPU device instance of this type will account for 2Gi of memory.\n\n2. If `capacityKey` IS set: `allocationMultiplier` is multiplied by the amount of that capacity consumed.\n\t The final node allocatable resource amount is `consumedCapacity[capacityKey]` * `allocationMultiplier`.\n For example, if a Device's capacity \"dra.example.com/cores\" is consumed,\n and each \"core\" provides 2 \"cpu\"s, the mapping would be:\n {ResourceName: \"cpu\", capacityKey: \"dra.example.com/cores\", allocationMultiplier: \"2\"}.\n If a claim consumes 8 \"dra.example.com/cores\", the CPU footprint is 8 * 2 = 16.",
|
||||
}
|
||||
|
||||
func (NodeAllocatableResourceMapping) SwaggerDoc() map[string]string {
|
||||
return map_NodeAllocatableResourceMapping
|
||||
}
|
||||
|
||||
var map_OpaqueDeviceConfiguration = map[string]string{
|
||||
"": "OpaqueDeviceConfiguration contains configuration parameters for a driver in a format defined by the driver vendor.",
|
||||
"driver": "Driver is used to determine which kubelet plugin needs to be passed these configuration parameters.\n\nAn admission policy provided by the driver developer could use this to decide whether it needs to validate them.\n\nMust be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver. It should use only lower case characters.",
|
||||
|
||||
+190
@@ -302,6 +302,13 @@ func (in *Device) DeepCopyInto(out *Device) {
|
||||
*out = new(bool)
|
||||
**out = **in
|
||||
}
|
||||
if in.NodeAllocatableResourceMappings != nil {
|
||||
in, out := &in.NodeAllocatableResourceMappings, &out.NodeAllocatableResourceMappings
|
||||
*out = make(map[corev1.ResourceName]NodeAllocatableResourceMapping, len(*in))
|
||||
for key, val := range *in {
|
||||
(*out)[key] = *val.DeepCopy()
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
@@ -390,6 +397,26 @@ func (in *DeviceAttribute) DeepCopyInto(out *DeviceAttribute) {
|
||||
*out = new(string)
|
||||
**out = **in
|
||||
}
|
||||
if in.IntValues != nil {
|
||||
in, out := &in.IntValues, &out.IntValues
|
||||
*out = make([]int64, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
if in.BoolValues != nil {
|
||||
in, out := &in.BoolValues, &out.BoolValues
|
||||
*out = make([]bool, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
if in.StringValues != nil {
|
||||
in, out := &in.StringValues, &out.StringValues
|
||||
*out = make([]string, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
if in.VersionValues != nil {
|
||||
in, out := &in.VersionValues, &out.VersionValues
|
||||
*out = make([]string, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
@@ -825,6 +852,143 @@ func (in *DeviceTaint) DeepCopy() *DeviceTaint {
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *DeviceTaintRule) DeepCopyInto(out *DeviceTaintRule) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||
in.Spec.DeepCopyInto(&out.Spec)
|
||||
in.Status.DeepCopyInto(&out.Status)
|
||||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceTaintRule.
|
||||
func (in *DeviceTaintRule) DeepCopy() *DeviceTaintRule {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(DeviceTaintRule)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *DeviceTaintRule) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *DeviceTaintRuleList) DeepCopyInto(out *DeviceTaintRuleList) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]DeviceTaintRule, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceTaintRuleList.
|
||||
func (in *DeviceTaintRuleList) DeepCopy() *DeviceTaintRuleList {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(DeviceTaintRuleList)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *DeviceTaintRuleList) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *DeviceTaintRuleSpec) DeepCopyInto(out *DeviceTaintRuleSpec) {
|
||||
*out = *in
|
||||
if in.DeviceSelector != nil {
|
||||
in, out := &in.DeviceSelector, &out.DeviceSelector
|
||||
*out = new(DeviceTaintSelector)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
in.Taint.DeepCopyInto(&out.Taint)
|
||||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceTaintRuleSpec.
|
||||
func (in *DeviceTaintRuleSpec) DeepCopy() *DeviceTaintRuleSpec {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(DeviceTaintRuleSpec)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *DeviceTaintRuleStatus) DeepCopyInto(out *DeviceTaintRuleStatus) {
|
||||
*out = *in
|
||||
if in.Conditions != nil {
|
||||
in, out := &in.Conditions, &out.Conditions
|
||||
*out = make([]v1.Condition, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceTaintRuleStatus.
|
||||
func (in *DeviceTaintRuleStatus) DeepCopy() *DeviceTaintRuleStatus {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(DeviceTaintRuleStatus)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *DeviceTaintSelector) DeepCopyInto(out *DeviceTaintSelector) {
|
||||
*out = *in
|
||||
if in.Driver != nil {
|
||||
in, out := &in.Driver, &out.Driver
|
||||
*out = new(string)
|
||||
**out = **in
|
||||
}
|
||||
if in.Pool != nil {
|
||||
in, out := &in.Pool, &out.Pool
|
||||
*out = new(string)
|
||||
**out = **in
|
||||
}
|
||||
if in.Device != nil {
|
||||
in, out := &in.Device, &out.Device
|
||||
*out = new(string)
|
||||
**out = **in
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceTaintSelector.
|
||||
func (in *DeviceTaintSelector) DeepCopy() *DeviceTaintSelector {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(DeviceTaintSelector)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *DeviceToleration) DeepCopyInto(out *DeviceToleration) {
|
||||
*out = *in
|
||||
@@ -907,6 +1071,32 @@ func (in *NetworkDeviceData) DeepCopy() *NetworkDeviceData {
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *NodeAllocatableResourceMapping) DeepCopyInto(out *NodeAllocatableResourceMapping) {
|
||||
*out = *in
|
||||
if in.CapacityKey != nil {
|
||||
in, out := &in.CapacityKey, &out.CapacityKey
|
||||
*out = new(QualifiedName)
|
||||
**out = **in
|
||||
}
|
||||
if in.AllocationMultiplier != nil {
|
||||
in, out := &in.AllocationMultiplier, &out.AllocationMultiplier
|
||||
x := (*in).DeepCopy()
|
||||
*out = &x
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeAllocatableResourceMapping.
|
||||
func (in *NodeAllocatableResourceMapping) DeepCopy() *NodeAllocatableResourceMapping {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(NodeAllocatableResourceMapping)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *OpaqueDeviceConfiguration) DeepCopyInto(out *OpaqueDeviceConfiguration) {
|
||||
*out = *in
|
||||
|
||||
+30
@@ -156,6 +156,31 @@ func (in DeviceTaint) OpenAPIModelName() string {
|
||||
return "io.k8s.api.resource.v1beta2.DeviceTaint"
|
||||
}
|
||||
|
||||
// OpenAPIModelName returns the OpenAPI model name for this type.
|
||||
func (in DeviceTaintRule) OpenAPIModelName() string {
|
||||
return "io.k8s.api.resource.v1beta2.DeviceTaintRule"
|
||||
}
|
||||
|
||||
// OpenAPIModelName returns the OpenAPI model name for this type.
|
||||
func (in DeviceTaintRuleList) OpenAPIModelName() string {
|
||||
return "io.k8s.api.resource.v1beta2.DeviceTaintRuleList"
|
||||
}
|
||||
|
||||
// OpenAPIModelName returns the OpenAPI model name for this type.
|
||||
func (in DeviceTaintRuleSpec) OpenAPIModelName() string {
|
||||
return "io.k8s.api.resource.v1beta2.DeviceTaintRuleSpec"
|
||||
}
|
||||
|
||||
// OpenAPIModelName returns the OpenAPI model name for this type.
|
||||
func (in DeviceTaintRuleStatus) OpenAPIModelName() string {
|
||||
return "io.k8s.api.resource.v1beta2.DeviceTaintRuleStatus"
|
||||
}
|
||||
|
||||
// OpenAPIModelName returns the OpenAPI model name for this type.
|
||||
func (in DeviceTaintSelector) OpenAPIModelName() string {
|
||||
return "io.k8s.api.resource.v1beta2.DeviceTaintSelector"
|
||||
}
|
||||
|
||||
// OpenAPIModelName returns the OpenAPI model name for this type.
|
||||
func (in DeviceToleration) OpenAPIModelName() string {
|
||||
return "io.k8s.api.resource.v1beta2.DeviceToleration"
|
||||
@@ -171,6 +196,11 @@ func (in NetworkDeviceData) OpenAPIModelName() string {
|
||||
return "io.k8s.api.resource.v1beta2.NetworkDeviceData"
|
||||
}
|
||||
|
||||
// OpenAPIModelName returns the OpenAPI model name for this type.
|
||||
func (in NodeAllocatableResourceMapping) OpenAPIModelName() string {
|
||||
return "io.k8s.api.resource.v1beta2.NodeAllocatableResourceMapping"
|
||||
}
|
||||
|
||||
// OpenAPIModelName returns the OpenAPI model name for this type.
|
||||
func (in OpaqueDeviceConfiguration) OpenAPIModelName() string {
|
||||
return "io.k8s.api.resource.v1beta2.OpaqueDeviceConfiguration"
|
||||
|
||||
+36
@@ -57,6 +57,42 @@ func (in *DeviceClassList) APILifecycleRemoved() (major, minor int) {
|
||||
return 1, 39
|
||||
}
|
||||
|
||||
// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
|
||||
// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
|
||||
func (in *DeviceTaintRule) APILifecycleIntroduced() (major, minor int) {
|
||||
return 1, 36
|
||||
}
|
||||
|
||||
// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
|
||||
// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
|
||||
func (in *DeviceTaintRule) APILifecycleDeprecated() (major, minor int) {
|
||||
return 1, 39
|
||||
}
|
||||
|
||||
// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
|
||||
// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
|
||||
func (in *DeviceTaintRule) APILifecycleRemoved() (major, minor int) {
|
||||
return 1, 42
|
||||
}
|
||||
|
||||
// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
|
||||
// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
|
||||
func (in *DeviceTaintRuleList) APILifecycleIntroduced() (major, minor int) {
|
||||
return 1, 36
|
||||
}
|
||||
|
||||
// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
|
||||
// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
|
||||
func (in *DeviceTaintRuleList) APILifecycleDeprecated() (major, minor int) {
|
||||
return 1, 39
|
||||
}
|
||||
|
||||
// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
|
||||
// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
|
||||
func (in *DeviceTaintRuleList) APILifecycleRemoved() (major, minor int) {
|
||||
return 1, 42
|
||||
}
|
||||
|
||||
// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
|
||||
// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
|
||||
func (in *ResourceClaim) APILifecycleIntroduced() (major, minor int) {
|
||||
|
||||
Reference in New Issue
Block a user