@@ -374,25 +374,24 @@ fields on the `ResourceSlice`.
374
374
375
375
1. The `Device` field is a list of named `DeviceMixin`s. These define
376
376
attributes and capacities that can be used to extend what is defined
377
- explicitly in a new device type called `CompositeDevice ` (introduced
377
+ explicitly in `BasicDevice ` (introduced
378
378
in more detail below). Mixins cannot be allocated directly,
379
379
but can only be referenced by composite devices.
380
380
381
381
1. The `DeviceCapacityConsumption` field defines a list of named
382
382
` DeviceCapacityConsumptionMixin` s. These define capacities that can be
383
- used to extend the capacity consumption defined explicitly in a
384
- ` CompositeDevice ` . The capacity pool is not specified in the
383
+ used to extend the capacity consumption defined explicitly in fields under
384
+ ` BasicDevice ` . The capacity pool is not specified in the
385
385
` DeviceCapacityConsumptionMixin` , but rather provided when the mixin
386
386
is referenced from the device.
387
387
388
- 1. Introduce a new device type called `CompositeDevice` which has the same
389
- fields as a `BasicDevice`, plus two more. The first is a field called
388
+ 1. Introduce a couple of new fields added under `BasicDevice`. The first is a field called
390
389
` Includes` and lists the device mixins for the device, while the second is
391
390
called `ConsumesCapacity` and defines the capacity the device will draw
392
391
from the capacity pools.
393
392
394
393
1. The `Includes` field serves to reference a set of `DeviceMixin`s that a
395
- ` CompositeDevice ` can reference to extend the set of attributes,
394
+ ` BasicDevice ` can reference to extend the set of attributes,
396
395
capacities it defines explicitly.
397
396
398
397
1. The `ConsumesCapacity` field defines the capacities the device
@@ -401,7 +400,7 @@ fields on the `ResourceSlice`.
401
400
to capacity pools in the same `ResourceSlice` is supported.
402
401
403
402
1. Add a new field `PerDeviceNodeSelection` to the `ResourceSliceSpec` and the
404
- fields `NodeName`, `NodeSelector` and `AllNodes` on the `CompositeDevice `.
403
+ fields `NodeName`, `NodeSelector` and `AllNodes` on the `Device `.
405
404
406
405
1. The `PerDeviceNodeSelection` field is of type boolean and is mutually
407
406
exclusive with the existing node selection fields in the `ResourceSliceSpec`
@@ -613,16 +612,7 @@ type Device struct {
613
612
// +optional
614
613
// +oneOf=deviceType
615
614
Basic *BasicDevice
616
-
617
- // Composite defines one composite device instance.
618
- //
619
- // +optional
620
- // +oneOf=deviceType
621
- Composite *CompositeDevice
622
- }
623
-
624
- // CompositeDevice defines one device instance.
625
- type CompositeDevice struct {
615
+
626
616
// Includes defines the set of device mixins that this device includes.
627
617
//
628
618
// The propertes of each included mixin are applied to this device in
@@ -2905,9 +2895,17 @@ drivers that they provide to customers.
2905
2895
2906
2896
# ## Version Skew Strategy
2907
2897
2908
- All of the API extensions proposed in this KEP are embedded under a new
2909
- ` CompositeDevice` type which is a one-of inside of the existing `Device`
2910
- type. Since all API extensions are embedded in this way, there is no risk for
2898
+ All of the API extensions proposed in this KEP are embedded under the
2899
+ ` BasicDevice` type which is a one-of inside of the existing `Device`
2900
+ type. The new function will be offered through the newly added fields under `BasicDevice`.
2901
+ The kube-scheduler is expected to match the kube-apiserver minor version,
2902
+ but may be up to one minor version older (to allow live upgrades).
2903
+ In the release it's been added, the feature will be disabled by default and not recognized by other components.
2904
+ Whoever enabled the feature manually would take the risk of component like kube-scheduler being old and not recognize
2905
+ the fields. After one releases, it should work perfectly.
2906
+
2907
+
2908
+ Since all API extensions are embedded in this way, there is no risk for
2911
2909
version skew downgrades because these devices will never have existed in older
2912
2910
clusters. For upgrades, we will need to be sure not to directly extend this new
2913
2911
device type with new fields, but rather introduce a new one-of if more /
0 commit comments