Commit Graph

215 Commits

Author SHA1 Message Date
Lalit Chauhan
13c801305a Migrate ResourceSlice map key validation to declarative validation
This commit migrates the validation of map keys for CounterSet.Counters and
DeviceCounterConsumption.Counters in the ResourceSlice API from handwritten
validation to declarative validation using +k8s:eachKey=+k8s:format=k8s-short-name.

This simplifies the handwritten validation logic and leverages the shared
declarative validation machinery.
2026-01-07 17:53:45 +00:00
yongruilin
016e821718 run codegen 2026-01-06 20:18:06 +00:00
Lalit Chauhan
630a2a7c35 Add origins for the union validtions errors 2025-12-18 19:07:47 +00:00
Lalit Chauhan
79b414dc8f Add k8s:optional on Device.Basic 2025-11-19 19:51:32 +00:00
Morten Torkildsen
93fc7422ee DRA: Update validation for Partitionable Devices 2025-11-06 21:13:33 +00:00
Morten Torkildsen
ef3f6a2507 Run make update 2025-11-06 21:13:33 +00:00
Morten Torkildsen
e73fd4204d DRA: Update types for Partitionable Devices 2025-11-06 21:13:32 +00:00
yongruilin
47fb373c31 run update-codegen.sh 2025-11-06 00:54:52 +00:00
Lalit Chauhan
0aea256ef9 revert of 8f0a6583ca 2025-11-05 00:13:26 +00:00
Kubernetes Prow Robot
c1a6a3ca71 Merge pull request #134152 from pohly/dra-device-taints-1.35
DRA: device taints: new ResourceSlice API, new features
2025-11-04 15:32:07 -08:00
Aaron Prindle
0631a66d52 address feedback - refactor validateSlice and validateSet to use validateItems 2025-11-04 04:15:56 +00:00
Aaron Prindle
39ad8278e2 feat: update DRA to short-circuit on maxSize checks, add a declarative validation test related to this case 2025-11-03 21:16:45 +00:00
Patrick Ohly
75c9186792 generated files 2025-10-31 18:11:18 +01:00
Patrick Ohly
e4dda7b282 DRA device taints: fix DeviceTaintRule + missing slice case
When the ResourceSlice no longer exists, the ResourceSlice tracker didn't and
couldn't report the tainted devices even if they are allocated and in use. The
controller must keep track of DeviceTaintRules itself and handle this scenario.

In this scenario it is impossible to evaluation CEL expressions because the
necessary device attributes aren't available. We could:
- Copy them in the allocation result: too large, big change.
- Limit usage of CEL expressions to rules with no eviction: inconsistent.
- Remove the fields which cannot be supported well.

The last option is chosen.

The tracker is now no longer needed by the eviction controller. Reading
directly from the informer means that we cannot assume that pointers are
consistent. We have to track ResourceSlices by their name, not their pointer.
2025-10-31 18:11:18 +01:00
Patrick Ohly
fee14ffca2 DRA API: device taints 1.35
This raises the number of allowed taints per device to 16 by lowering
the number of allowed devices to 64 per ResourceSlice if (and only if!)
taints are used.

"effect: None" and DeviceTaintRule status with conditions get added
to support giving feedback to admins.

Instead of merely adding the new effect value, this also changes validation of
the enum so that unknown values are valid if they were already stored. This
will simplify adding new effects in the future because validation won't fail
for them after a downgrade. Consumers must treat them like this new None
effect, i.e. ignore them.
2025-10-31 18:11:18 +01:00
yongruilin
d80ac77d98 feat(dra): add k8s:optional for all DV migrated optional fields 2025-10-30 23:31:01 +00:00
yongruilin
2713803c78 feat(dra): migrate NetworkDeviceData.IPs maxItems to declarative validation 2025-10-30 07:14:06 +00:00
yongruilin
0d6d2aa6a5 feat(dra): migrate DeviceAllocationConfiguration.Requests maxItems to declarative validation 2025-10-30 07:14:06 +00:00
yongruilin
a553ac0e92 feat(dra): migrate DeviceAllocationConfiguration.Requests uniqueness to declarative validation 2025-10-30 07:06:35 +00:00
yongruilin
a4e8b54dee test(validation): add case for handling duplicate request names in ResourceClaim status update 2025-10-30 07:06:35 +00:00
yongruilin
9bbf28e2f4 feat(dra): migrate NetworkDeviceData.IPs uniqueness to declarative validation 2025-10-30 07:06:35 +00:00
Lalit Chauhan
37ba7bb454 Address feedbacks 2025-10-29 04:41:10 +00:00
Lalit Chauhan
ec8c2246b2 Use k8s-resource-fully-qualified-name format to validate MatchAttribute 2025-10-29 04:41:07 +00:00
Lalit Chauhan
8f0a6583ca Use eachKey DV in DRA resources. 2025-10-28 20:09:09 +00:00
Kubernetes Prow Robot
bdcff90855 Merge pull request #134805 from aaron-prindle/dv-deviceclaim-subfield
feat: add subfield +k8s:format=k8s-long-name validation for DeviceClass ObjeMeta.Name field
2025-10-28 12:10:03 -07:00
Kubernetes Prow Robot
ffdfc17ebc Merge pull request #134824 from lalitc375/union
use union member DV in the DRA
2025-10-27 10:29:35 -07:00
Lalit Chauhan
8a6b3caaa0 use union member DV in the DRA 2025-10-24 23:04:48 +00:00
Aaron Prindle
97f9819f7e address feedback 2025-10-24 21:21:49 +00:00
Kubernetes Prow Robot
8de3b303e0 Merge pull request #134807 from yongruilin/master_maxlength
Add k8s:maxLength tag and use it on NetworkDeviceData fields
2025-10-24 12:15:41 -07:00
yongruilin
78796239cf feat(validation): add k8s:optional tag to InterfaceName and HardwareAddress in NetworkDeviceData across all versions 2025-10-23 21:04:02 +00:00
Aaron Prindle
9ba536c2e4 feat: add subfield +k8s:format=k8s-long-name validation for DeviceClass ObjeMeta.Name field 2025-10-23 16:42:58 +00:00
Lalit Chauhan
2061ec2be9 Enable DV for resourceslice 2025-10-22 22:48:25 +00:00
yongruilin
833c026435 feat(dra): add k8s:maxLength tag on HardwareAddress in NetworkDeviceData 2025-10-22 22:42:32 +00:00
yongruilin
6fa8cb4a99 feat(dra): add k8s:maxLength on NetworkData.InterfaceName 2025-10-22 22:41:07 +00:00
yongruilin
2b4495f66a feat(dra): add k8s:optional on AllocatedDeviceStatus.NetworkData 2025-10-22 22:38:47 +00:00
Kubernetes Prow Robot
6c8a609fd0 Merge pull request #134555 from aaron-prindle/dv-enum-migration
feat: add +k8s:enum declarative validation to ResourceClaim DeviceTolerationOperator and DeviceTaintEffect
2025-10-21 15:54:37 -07:00
Lalit Chauhan
229b33c440 Address feedbacks 2025-10-21 18:09:10 +00:00
Lalit Chauhan
95c42b9951 Fix rebase issues 2025-10-21 18:09:10 +00:00
Lalit Chauhan
cf96486aed Add format validator for DeviceClass.ExtendedResourceName 2025-10-21 18:09:10 +00:00
Aaron Prindle
2e0319181d address feedback 2025-10-21 00:27:25 +00:00
yongruilin
a817e2b923 test(validation): Mark bindingConditions and bindingFailureConditions errors as covered by declarative 2025-10-20 23:38:48 +00:00
yongruilin
2a116e29ce feat(dra): Add maxItems tag on DeviceRequestAllocationResul.BindingFailureConditions field 2025-10-20 23:35:09 +00:00
yongruilin
ab08274be1 feat(dra): Add maxItems tag on DeviceRequestAllocationResul.BindingConditions field 2025-10-20 23:34:00 +00:00
Aaron Prindle
47e9686b4d feat(validation-gen): add +k8s:format=k8s-long-name-caseless declarative validation for DeviceRequestAllocationResult.Driver 2025-10-19 23:55:16 +00:00
Aaron Prindle
0cf9102763 feat: add +k8s:enum declarative validation to ResourceClaim DeviceTolerationOperator and DeviceTaintEffect 2025-10-19 22:36:15 +00:00
Lalit Chauhan
2072acb3ba Add listType=map and listMapekeys on ResourceClaimStatus.Devices 2025-10-17 22:48:52 +00:00
Kubernetes Prow Robot
2158dd67e9 Merge pull request #134630 from lalitc375/k8s-enum
feat: add enum validation for AllocationConfigSource
2025-10-17 15:40:51 -07:00
Lalit Chauhan
1f803aa314 Use DV for long name validation of spec.devices.requests[%d].firstAvailable[%d].deviceClassName 2025-10-17 19:15:34 +00:00
Aaron Prindle
2fd727bf92 address feedback - comment on declarative defaulting gap w/ DV 2025-10-16 22:47:22 +00:00
Aaron Prindle
9d83f71cde fix validation_test.go to use path normalization 2025-10-16 17:40:19 +00:00