41 Commits

Author SHA1 Message Date
Kevin Hannon
0c949f1da7 remove alpha comments for GA or beta DRA fields
Kubernetes-commit: 159eb4cd7719a1c5de2c332e811a2b598ee1a4d2
2026-01-22 17:03:40 -05:00
Morten Torkildsen
99c4257e63 Run make update
Kubernetes-commit: ef3f6a250754318d7d9d94a518acccd676a47fca
2025-11-06 16:04:19 +00:00
Patrick Ohly
c94930065a generated files
Kubernetes-commit: 75c9186792811a5b4bc38a5171283e2f58a718a0
2025-10-28 21:20:34 +01:00
Dan Bokete
1d528010ef Deprecate caseless driver name validation and enforce lowercase warnings
- Deprecate IsDNS1123SubdomainCaseless to avoid caseless validation issues.
- Warn when ResourceSlice driver names contain uppercase characters.
- Clarify driver names must be DNS subdomains and use only lowercase letters.
- Update tests, staging code, and OpenAPI spec to reflect the changes.

Kubernetes-commit: b40b67b9cfff1fdd6a1177372bdb545c5d2b6bbb
2025-09-21 15:35:37 +01:00
Henrik Schmidt
422ded29ea ./hack/update-codegen.sh
Kubernetes-commit: 5e66bb69720189d83099e850e21cbedc667cdec7
2025-09-10 21:57:45 +02:00
Henrik Schmidt
ffe150e4a6 ./hack/update-codegen.sh
Kubernetes-commit: 1ba96db35b5baca16adc6d8ee08361190a7d997f
2025-08-29 16:44:49 +02:00
Sunyanan Choochotkaew
81902fe0fc KEP-5075: generated codes from make update
Signed-off-by: Sunyanan Choochotkaew <sunyanan.choochotkaew1@ibm.com>

Kubernetes-commit: 59bba927178174041c5e72f60432e70c5db210bf
2025-07-30 09:26:52 +09:00
yliao
3b7d818a7f extended resource backed by DRA: codegen
Kubernetes-commit: 3068b60b830fb77694300c2274144de13a220481
2025-07-17 16:45:05 +00:00
Kobayashi,Daisuke
9999d6448a KEP-5007 DRA Device Binding Conditions: Run make update
Kubernetes-commit: ac81b829e4a1a26e11b5eb058b754b3fc621b0aa
2025-07-29 11:34:03 +00:00
Patrick Ohly
14fa3d1f20 DRA API: s/v1beta2/v1/ and generated files
Kubernetes-commit: 4e592f6c145bb322786aa77ff2d25d8fe370b893
2025-07-03 13:29:02 +02:00
Patrick Ohly
dce90c45af DRA API: verbatim copy v1beta2 -> v1
Kubernetes-commit: 1f2f433f76dbc28d1fd6602f96e6dd871893601b
2025-07-03 12:11:01 +02:00
Alvaro Aleman
3d73750dfc Re-generate applyconfigurations
Kubernetes-commit: 7d5ab75627716d57f8937a7eb0f453f420cb766d
2025-06-27 14:30:38 -04:00
Alvaro Aleman
97456eac24 Re-Generate applyconfigs
Kubernetes-commit: a5d42f5693973c11ca911863a0fd6cc2f2a0b4a6
2025-05-28 17:35:29 -04:00
Patrick Ohly
d267bacbd5 DRA API: remove obsolete types from v1alpha3
The v1alpha3 version is still needed for DeviceTaintRule, but the rest of the
types and most structs became obsolete in v1.32 when we introduced v1beta1 and
bumped the storage version to v1beta1.

Removing them now simplifies adding new features because new fields don't need
to be added to these obsolete types. This could have been done already in 1.33,
but wasn't to minimize disrupting on-going work.

Kubernetes-commit: 10de6780cf6b24d5115e508606334b81d6634ba6
2025-05-28 12:03:25 +02:00
Morten Torkildsen
dba34c781e Run make update
Kubernetes-commit: e761be47a45b97574499069ea198d879e7050e51
2025-03-26 14:52:36 +00:00
Cici Huang
379ed45313 Auto gen
Kubernetes-commit: ea2f8881093b01f27807ee4fa4e6ca2b88a7bc71
2025-03-18 07:16:21 +00:00
Patrick Ohly
71c858c5f4 DRA: generated files for device taints API
Kubernetes-commit: 99dbd85c45f77a4fd719ff9271128e8a4ed46082
2025-03-07 14:59:08 +01:00
Morten Torkildsen
2143ace7a7 Run make update
Kubernetes-commit: 68040a31736cc9f33763e87fc4ebea27cf447743
2025-02-28 19:28:26 +00:00
Lionel Jouin
bfbe175263 [KEP-4817] make update
Signed-off-by: Lionel Jouin <lionel.jouin@est.tech>

Kubernetes-commit: d28b50e0a04a4c5bbf494a423ad7851f0393467c
2024-11-07 10:36:09 +01:00
Patrick Ohly
4e05c623ae DRA API: rename DeviceCapacity.Quantity to DeviceCapacity.Value
Based on review
feedback (https://github.com/kubernetes/kubernetes/pull/127511#discussion_r1823521172).

Kubernetes-commit: 30f52826560129839922e1756730b02f184f0ef9
2024-10-31 21:30:28 +01:00
Patrick Ohly
f65974c297 DRA API: use DeviceCapacity struct instead of plain Quantity
This enables a future extension where capacity of a single device gets consumed
by different claims. The semantic without any additional fields is the same as
before: a capacity cannot be split up and is only an attribute of a device.

Because its semantically the same as before, two-way conversion to v1alpha3 is
possible.

Kubernetes-commit: 81fd64256c9cfca47385997e06a694bf98bfb799
2024-09-26 16:56:48 +02:00
Patrick Ohly
98e4506ad9 DRA API: generated files
Kubernetes-commit: 0ee52b23cd56aa4a8e33cc366c2d150286ad041e
2024-09-26 12:07:39 +02:00
Patrick Ohly
d32193115c DRA API: AdminAccess in DeviceRequestAllocationResult
Drivers need to know that because admin access may also grant additional
permissions. The allocator needs to ignore such results when determining which
devices are considered as allocated.

In both cases it is conceptually cleaner to not rely on the content of the
ClaimSpec.

Kubernetes-commit: f3fef01e79a75ebc4c327afb7d05d6fd350e08fa
2024-09-04 08:03:22 +02:00
Patrick Ohly
d366fa7737 DRA: remove "classic DRA"
This removes the DRAControlPlaneController feature gate, the fields controlled
by it (claim.spec.controller, claim.status.deallocationRequested,
claim.status.allocation.controller, class.spec.suitableNodes), the
PodSchedulingContext type, and all code related to the feature.

The feature gets removed because there is no path towards beta and GA and DRA
with "structured parameters" should be able to replace it.

Kubernetes-commit: f84eb5ecf894fa0fc4e0d05da52ef51d4cd723d9
2024-10-11 16:08:54 +02:00
Joe Betz
2b735405b2 generate
Kubernetes-commit: 2595aa13098355414a558b2d97c58d505ca7b6c2
2024-09-03 14:25:56 -04:00
Stephen Kitt
d7a6826d37 Run codegen
Signed-off-by: Stephen Kitt <skitt@redhat.com>

Kubernetes-commit: 689d6ef7a3a44405909f6007b3a91eff458b95a2
2024-08-29 18:16:41 +02:00
Patrick Ohly
a7db3ade62 DRA: new API for 1.31
This is a complete revamp of the original API. Some of the key
differences:
- refocused on structured parameters and allocating devices
- support for constraints across devices
- support for allocating "all" or a fixed amount
  of similar devices in a single request
- no class for ResourceClaims, instead individual
  device requests are associated with a mandatory
  DeviceClass

For the sake of simplicity, optional basic types (ints, strings) where the null
value is the default are represented as values in the API types. This makes Go
code simpler because it doesn't have to check for nil (consumers) and values
can be set directly (producers). The effect is that in protobuf, these fields
always get encoded because `opt` only has an effect for pointers.

The roundtrip test data for v1.29.0 and v1.30.0 changes because of the new
"request" field. This is considered acceptable because the entire `claims`
field in the pod spec is still alpha.

The implementation is complete enough to bring up the apiserver.
Adapting other components follows.

Kubernetes-commit: 91d7882e867da25ae8014f679db32b20e35e89b4
2024-06-18 17:47:29 +02:00
Patrick Ohly
e0bc24e153 DRA: remove "sharable" from claim allocation result
Now all claims are shareable up to the limit imposed by the size of the
"reserverFor" array.

This is one of the agreed simplifications for 1.31.

Kubernetes-commit: 8a629b9f150c1042e2918043e6012a4f22742b19
2024-06-13 18:43:17 +02:00
Patrick Ohly
a7f430b8bb DRA: remove immediate allocation
As agreed in https://github.com/kubernetes/enhancements/pull/4709, immediate
allocation is one of those features which can be removed because it makes no
sense for structured parameters and the justification for classic DRA is weak.

Kubernetes-commit: de5742ae83c8d77268a7caf5f3b1f418c4a13a84
2024-06-13 17:25:39 +02:00
Patrick Ohly
91ff2f6ea5 DRA: bump API v1alpha2 -> v1alpha3
This is in preparation for revamping the resource.k8s.io completely. Because
there will be no support for transitioning from v1alpha2 to v1alpha3, the
roundtrip test data for that API in 1.29 and 1.30 gets removed.

Repeating the version in the import name of the API packages is not really
required. It was done for a while to support simpler grepping for usage of
alpha APIs, but there are better ways for that now. So during this transition,
"resourceapi" gets used instead of "resourcev1alpha3" and the version gets
dropped from informer and lister imports. The advantage is that the next bump
to v1beta1 will affect fewer source code lines.

Only source code where the version really matters (like API registration)
retains the versioned import.

Kubernetes-commit: b51d68bb87ba4fa47eb760f8a5e0baf9cf7f5b53
2024-06-14 12:40:48 +02:00
Stephen Kitt
6a88f2da38 Run codegen
Signed-off-by: Stephen Kitt <skitt@redhat.com>

Kubernetes-commit: c982ce1891eacd1bff135e9010df4fc17e3dbb23
2024-05-27 11:00:27 +02:00
Stephen Kitt
233a06528f Run codegen
Signed-off-by: Stephen Kitt <skitt@redhat.com>

Kubernetes-commit: 55ea0a55358de787353c9c9c38280d483456475a
2024-05-27 10:55:47 +02:00
Patrick Ohly
650f39267a dra api: NodeResourceModel -> ResourceModel
When renaming NodeResourceSlice to ResourceSlice, the embedded
[Node]ResourceModel also should have been renamed.

Kubernetes-commit: a0add8d2c7578cd9f94fc302d6212f9f7d16175b
2024-03-14 14:08:17 +01:00
Patrick Ohly
fee411cff2 dra api: rename NodeResourceSlice -> ResourceSlice
While currently those objects only get published by the kubelet for node-local
resources, this could change once we also support network-attached
resources. Dropping the "Node" prefix enables such a future extension.

The NodeName in ResourceSlice and StructuredResourceHandle then becomes
optional. The kubelet still needs to provide one and it must match its own node
name, otherwise it doesn't have permission to access ResourceSlice objects.

Kubernetes-commit: 0b6a0d686a060b5d5ff92cea931aacd4eba85adb
2024-03-07 10:14:11 +01:00
Patrick Ohly
4c32855540 dra api: implement semver attribute value type
This adds support for semantic version comparison to the CEL support in the
"named resources" structured parameter model. For example, it can be used to
check that an instance supports a certain API level.

To minimize the risk, the new "semver" type is only defined in the CEL
environment for DRA expressions, not in the base library. See
https://github.com/kubernetes/kubernetes/pull/123664 for a PR which
adds it to the base library.

Validation of semver strings is done with the regular expression from
semver.org. The actual evaluation at runtime then uses semver/v4.

Kubernetes-commit: 42ee56f093133402ed860d4c5f54b049041386c9
2024-03-04 09:13:19 +01:00
Patrick Ohly
95cf817801 dra: add "named resources" structured parameter model
Like the current device plugin interface, a DRA driver using this model
announces a list of resource instances. In contrast to device plugins, this
list is made available to the scheduler together with attributes that can be
used to select suitable instances when they are not all alike.

Because this is the first structured parameter model, some checks that
previously were not possible, in particular "is one structured parameter field
set", now gets enabled. Adding another structured parameter model will be
similar.

The applyconfigs code generator assumes that all types in an API are defined in
a single package. If it wasn't for that, it would be possible to place the
"named resources" types in separate packages, which makes their names in the Go
code more natural and provides an indication of their stability level because
the package name could include a version.

Kubernetes-commit: d4d5ade7f5be047472f8d9572c7f01f142951a2d
2024-02-23 15:22:02 +01:00
Patrick Ohly
c3231901f2 dra api: add structured parameters
NodeResourceSlice will be used by kubelet to publish resource information on
behalf of DRA drivers on the node. NodeName and DriverName in
NodeResourceSlice must be immutable. This simplifies tracking the different
objects because what they are for cannot change after creation.

The new field in ResourceClass tells scheduler and autoscaler that they are
expected to handle allocation.

ResourceClaimParameters and ResourceClassParameters are new types for telling
in-tree components how to handle claims.

Kubernetes-commit: 39bbcedbcae84bf716923b3f9464968ca70b42e7
2024-02-14 14:38:42 +01:00
Kevin Klues
ff60d1bd90 Update generated code for resource.k8s.io/v1alpha2
Signed-off-by: Kevin Klues <kklues@nvidia.com>

Kubernetes-commit: 452f345c472a206b148bbe7e4e27f772841dc363
2023-03-07 11:35:08 +00:00
Patrick Ohly
76262aa83e api: generated files for PodSchedulingContext
Kubernetes-commit: 2b8a4e809710f1b5eb3846a2964431a0266f287e
2023-03-13 23:16:18 +01:00
Patrick Ohly
324f43b974 api: resource.k8s.io v1alpha1 -> v1alpha2
For Kubernetes 1.27, we intend to make some breaking API changes:
- rename PodScheduling -> PodSchedulingHints (https://github.com/kubernetes/kubernetes/issues/114283)
- extend ResourceClaimStatus (https://github.com/kubernetes/enhancements/pull/3802)

We need to switch from v1alpha1 to v1alpha2 for that.

Kubernetes-commit: 29941b8d3e7928244f48b05bf5bd453221fe7a9d
2023-03-06 12:43:58 +01:00
Patrick Ohly
522eaa15ef api: generated files
Kubernetes-commit: 9683c60c05491a9e9cafd3419c150caf7355bf49
2022-11-10 20:22:42 +01:00