DRA API: bump storage version to v1beta2

This avoids the overhead for the more complex conversion to v1beta1 and might
make it a bit more realistic to get rid of the v1beta1 eventually.

The expected GVK must be set explicitly because when emulating 1.33,
v1beta1 is the default although the fixed storage version is v1beta2.
This commit is contained in:
Patrick Ohly
2025-07-09 15:45:20 +02:00
parent 24de875ceb
commit b768c1d1d5
6 changed files with 33 additions and 23 deletions

View File

@@ -8,7 +8,7 @@
"name": "deviceclasses",
"namespaced": false,
"singularName": "deviceclass",
"storageVersionHash": "OgEE055Fbnc=",
"storageVersionHash": "weQRMT6DeYM=",
"verbs": [
"create",
"delete",
@@ -25,7 +25,7 @@
"name": "resourceclaims",
"namespaced": true,
"singularName": "resourceclaim",
"storageVersionHash": "RnQSwRxMnsw=",
"storageVersionHash": "EJAWH5WrAYg=",
"verbs": [
"create",
"delete",
@@ -53,7 +53,7 @@
"name": "resourceclaimtemplates",
"namespaced": true,
"singularName": "resourceclaimtemplate",
"storageVersionHash": "F6aZtQPvFlU=",
"storageVersionHash": "24m0okHrUtk=",
"verbs": [
"create",
"delete",
@@ -70,7 +70,7 @@
"name": "resourceslices",
"namespaced": false,
"singularName": "resourceslice",
"storageVersionHash": "7r9IQQZblMY=",
"storageVersionHash": "z6Bc9vgk6yE=",
"verbs": [
"create",
"delete",

View File

@@ -8,7 +8,7 @@
"name": "deviceclasses",
"namespaced": false,
"singularName": "deviceclass",
"storageVersionHash": "OgEE055Fbnc=",
"storageVersionHash": "weQRMT6DeYM=",
"verbs": [
"create",
"delete",
@@ -25,7 +25,7 @@
"name": "resourceclaims",
"namespaced": true,
"singularName": "resourceclaim",
"storageVersionHash": "RnQSwRxMnsw=",
"storageVersionHash": "EJAWH5WrAYg=",
"verbs": [
"create",
"delete",
@@ -53,7 +53,7 @@
"name": "resourceclaimtemplates",
"namespaced": true,
"singularName": "resourceclaimtemplate",
"storageVersionHash": "F6aZtQPvFlU=",
"storageVersionHash": "24m0okHrUtk=",
"verbs": [
"create",
"delete",
@@ -70,7 +70,7 @@
"name": "resourceslices",
"namespaced": false,
"singularName": "resourceslice",
"storageVersionHash": "7r9IQQZblMY=",
"storageVersionHash": "z6Bc9vgk6yE=",
"verbs": [
"create",
"delete",

View File

@@ -8,7 +8,7 @@
"name": "deviceclasses",
"namespaced": false,
"singularName": "deviceclass",
"storageVersionHash": "OgEE055Fbnc=",
"storageVersionHash": "weQRMT6DeYM=",
"verbs": [
"create",
"delete",
@@ -25,7 +25,7 @@
"name": "resourceclaims",
"namespaced": true,
"singularName": "resourceclaim",
"storageVersionHash": "RnQSwRxMnsw=",
"storageVersionHash": "EJAWH5WrAYg=",
"verbs": [
"create",
"delete",
@@ -53,7 +53,7 @@
"name": "resourceclaimtemplates",
"namespaced": true,
"singularName": "resourceclaimtemplate",
"storageVersionHash": "F6aZtQPvFlU=",
"storageVersionHash": "24m0okHrUtk=",
"verbs": [
"create",
"delete",
@@ -70,7 +70,7 @@
"name": "resourceslices",
"namespaced": false,
"singularName": "resourceslice",
"storageVersionHash": "7r9IQQZblMY=",
"storageVersionHash": "z6Bc9vgk6yE=",
"verbs": [
"create",
"delete",

View File

@@ -40,7 +40,6 @@ func Install(scheme *runtime.Scheme) {
utilruntime.Must(v1beta1.AddToScheme(scheme))
utilruntime.Must(v1beta2.AddToScheme(scheme))
utilruntime.Must(v1.AddToScheme(scheme))
// TODO(https://github.com/kubernetes/kubernetes/issues/129889) We should
// change the serialization version to v1beta2 for 1.34.
utilruntime.Must(scheme.SetVersionPriority(v1beta1.SchemeGroupVersion, v1beta2.SchemeGroupVersion, v1.SchemeGroupVersion, v1alpha3.SchemeGroupVersion))
// TODO (https://github.com/kubernetes/kubernetes/issues/133131): put v1 first in 1.35
utilruntime.Must(scheme.SetVersionPriority(v1beta2.SchemeGroupVersion, v1.SchemeGroupVersion, v1beta1.SchemeGroupVersion, v1alpha3.SchemeGroupVersion))
}

View File

@@ -70,6 +70,10 @@ var GVRToStorageVersionHash = map[string]string{
"rbac.authorization.k8s.io/v1/clusterroles": "bYE5ZWDrJ44=",
"rbac.authorization.k8s.io/v1/rolebindings": "eGsCzGH6b1g=",
"rbac.authorization.k8s.io/v1/roles": "7FuwZcIIItM=",
"resource.k8s.io/v1/deviceclasses": "weQRMT6DeYM=",
"resource.k8s.io/v1/resourceclaims": "EJAWH5WrAYg=",
"resource.k8s.io/v1/resourceclaimtemplates": "24m0okHrUtk=",
"resource.k8s.io/v1/resourceslices": "z6Bc9vgk6yE=",
"scheduling.k8s.io/v1/priorityclasses": "1QwjyaZjj3Y=",
"storage.k8s.io/v1/csidrivers": "hL6j/rwBV5w=",
"storage.k8s.io/v1/csinodes": "Pe62DkZtjuo=",

View File

@@ -597,55 +597,62 @@ func GetEtcdStorageDataForNamespaceServedAt(namespace string, v string, isEmulat
gvr("resource.k8s.io", "v1beta1", "deviceclasses"): {
Stub: `{"metadata": {"name": "class2name"}}`,
ExpectedEtcdPath: "/registry/deviceclasses/class2name",
ExpectedGVK: gvkP("resource.k8s.io", "v1beta2", "DeviceClass"),
IntroducedVersion: "1.32",
RemovedVersion: "1.38",
},
gvr("resource.k8s.io", "v1beta1", "resourceclaims"): {
Stub: `{"metadata": {"name": "claim2name"}, "spec": {"devices": {"requests": [{"name": "req-0", "deviceClassName": "example-class", "allocationMode": "ExactCount", "count": 1}]}}}`,
ExpectedEtcdPath: "/registry/resourceclaims/" + namespace + "/claim2name",
ExpectedGVK: gvkP("resource.k8s.io", "v1beta2", "ResourceClaim"),
IntroducedVersion: "1.32",
RemovedVersion: "1.38",
},
gvr("resource.k8s.io", "v1beta1", "resourceclaimtemplates"): {
Stub: `{"metadata": {"name": "claimtemplate2name"}, "spec": {"spec": {"devices": {"requests": [{"name": "req-0", "deviceClassName": "example-class", "allocationMode": "ExactCount", "count": 1}]}}}}`,
ExpectedEtcdPath: "/registry/resourceclaimtemplates/" + namespace + "/claimtemplate2name",
ExpectedGVK: gvkP("resource.k8s.io", "v1beta2", "ResourceClaimTemplate"),
IntroducedVersion: "1.32",
RemovedVersion: "1.38",
},
gvr("resource.k8s.io", "v1beta1", "resourceslices"): {
Stub: `{"metadata": {"name": "node2slice"}, "spec": {"nodeName": "worker1", "driver": "dra.example.com", "pool": {"name": "worker1", "resourceSliceCount": 1}}}`,
ExpectedEtcdPath: "/registry/resourceslices/node2slice",
ExpectedGVK: gvkP("resource.k8s.io", "v1beta2", "ResourceSlice"),
IntroducedVersion: "1.32",
RemovedVersion: "1.38",
},
// --
// k8s.io/kubernetes/pkg/apis/resource/v1beta2
//
// The expected GVK must be set explicitly because when emulating 1.33,
// v1beta1 is the default although the actual storage version is v1beta2.
gvr("resource.k8s.io", "v1beta2", "deviceclasses"): {
Stub: `{"metadata": {"name": "class3name"}}`,
ExpectedEtcdPath: "/registry/deviceclasses/class3name",
ExpectedGVK: gvkP("resource.k8s.io", "v1beta1", "DeviceClass"),
ExpectedGVK: gvkP("resource.k8s.io", "v1beta2", "DeviceClass"),
IntroducedVersion: "1.33",
RemovedVersion: "1.39",
},
gvr("resource.k8s.io", "v1beta2", "resourceclaims"): {
Stub: `{"metadata": {"name": "claim3name"}, "spec": {"devices": {"requests": [{"name": "req-0", "exactly": {"deviceClassName": "example-class", "allocationMode": "ExactCount", "count": 1}}]}}}`,
ExpectedEtcdPath: "/registry/resourceclaims/" + namespace + "/claim3name",
ExpectedGVK: gvkP("resource.k8s.io", "v1beta1", "ResourceClaim"),
ExpectedGVK: gvkP("resource.k8s.io", "v1beta2", "ResourceClaim"),
IntroducedVersion: "1.33",
RemovedVersion: "1.39",
},
gvr("resource.k8s.io", "v1beta2", "resourceclaimtemplates"): {
Stub: `{"metadata": {"name": "claimtemplate3name"}, "spec": {"spec": {"devices": {"requests": [{"name": "req-0", "exactly": {"deviceClassName": "example-class", "allocationMode": "ExactCount", "count": 1}}]}}}}`,
ExpectedEtcdPath: "/registry/resourceclaimtemplates/" + namespace + "/claimtemplate3name",
ExpectedGVK: gvkP("resource.k8s.io", "v1beta1", "ResourceClaimTemplate"),
ExpectedGVK: gvkP("resource.k8s.io", "v1beta2", "ResourceClaimTemplate"),
IntroducedVersion: "1.33",
RemovedVersion: "1.39",
},
gvr("resource.k8s.io", "v1beta2", "resourceslices"): {
Stub: `{"metadata": {"name": "node3slice"}, "spec": {"nodeName": "worker1", "driver": "dra.example.com", "pool": {"name": "worker1", "resourceSliceCount": 1}}}`,
ExpectedEtcdPath: "/registry/resourceslices/node3slice",
ExpectedGVK: gvkP("resource.k8s.io", "v1beta1", "ResourceSlice"),
ExpectedGVK: gvkP("resource.k8s.io", "v1beta2", "ResourceSlice"),
IntroducedVersion: "1.33",
RemovedVersion: "1.39",
},
@@ -655,25 +662,25 @@ func GetEtcdStorageDataForNamespaceServedAt(namespace string, v string, isEmulat
gvr("resource.k8s.io", "v1", "deviceclasses"): {
Stub: `{"metadata": {"name": "class4name"}}`,
ExpectedEtcdPath: "/registry/deviceclasses/class4name",
ExpectedGVK: gvkP("resource.k8s.io", "v1beta1", "DeviceClass"),
ExpectedGVK: gvkP("resource.k8s.io", "v1beta2", "DeviceClass"),
IntroducedVersion: "1.34",
},
gvr("resource.k8s.io", "v1", "resourceclaims"): {
Stub: `{"metadata": {"name": "claim4name"}, "spec": {"devices": {"requests": [{"name": "req-0", "exactly": {"deviceClassName": "example-class", "allocationMode": "ExactCount", "count": 1}}]}}}`,
ExpectedEtcdPath: "/registry/resourceclaims/" + namespace + "/claim4name",
ExpectedGVK: gvkP("resource.k8s.io", "v1beta1", "ResourceClaim"),
ExpectedGVK: gvkP("resource.k8s.io", "v1beta2", "ResourceClaim"),
IntroducedVersion: "1.34",
},
gvr("resource.k8s.io", "v1", "resourceclaimtemplates"): {
Stub: `{"metadata": {"name": "claimtemplate4name"}, "spec": {"spec": {"devices": {"requests": [{"name": "req-0", "exactly": {"deviceClassName": "example-class", "allocationMode": "ExactCount", "count": 1}}]}}}}`,
ExpectedEtcdPath: "/registry/resourceclaimtemplates/" + namespace + "/claimtemplate4name",
ExpectedGVK: gvkP("resource.k8s.io", "v1beta1", "ResourceClaimTemplate"),
ExpectedGVK: gvkP("resource.k8s.io", "v1beta2", "ResourceClaimTemplate"),
IntroducedVersion: "1.34",
},
gvr("resource.k8s.io", "v1", "resourceslices"): {
Stub: `{"metadata": {"name": "node4slice"}, "spec": {"nodeName": "worker1", "driver": "dra.example.com", "pool": {"name": "worker1", "resourceSliceCount": 1}}}`,
ExpectedEtcdPath: "/registry/resourceslices/node4slice",
ExpectedGVK: gvkP("resource.k8s.io", "v1beta1", "ResourceSlice"),
ExpectedGVK: gvkP("resource.k8s.io", "v1beta2", "ResourceSlice"),
IntroducedVersion: "1.34",
},
// --