From 91a4bf232df8b4719081e49b41010691c297f686 Mon Sep 17 00:00:00 2001 From: Joe Betz Date: Tue, 10 Sep 2024 12:34:36 -0400 Subject: [PATCH 1/2] Promote RetryGenerateName to GA Kubernetes-commit: e3cae09e63d72edef9cf841979418291acc31b17 --- pkg/features/kube_features.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index 5ec3bf659..80bd51173 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -189,6 +189,7 @@ const ( // owner: @jpbetz // alpha: v1.30 // beta: v1.31 + // ga: v1.32 // Resource create requests using generateName are retried automatically by the apiserver // if the generated name conflicts with an existing resource name, up to a maximum number of 7 retries. RetryGenerateName featuregate.Feature = "RetryGenerateName" @@ -300,6 +301,11 @@ var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, }, + RetryGenerateName: { + {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.32"), Default: true, LockToDefault: true, PreRelease: featuregate.GA}, + }, } // defaultKubernetesFeatureGates consists of all known Kubernetes-specific feature keys. @@ -337,8 +343,6 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS ResilientWatchCacheInitialization: {Default: true, PreRelease: featuregate.Beta}, - RetryGenerateName: {Default: true, PreRelease: featuregate.Beta}, - SeparateCacheWatchRPC: {Default: true, PreRelease: featuregate.Beta}, StorageVersionAPI: {Default: false, PreRelease: featuregate.Alpha}, From a84f81807f3a6c1e7bd4c5d31f1b9e40f1f70095 Mon Sep 17 00:00:00 2001 From: Joe Betz Date: Thu, 19 Sep 2024 11:34:59 -0400 Subject: [PATCH 2/2] Preserve testing of RetryGenerateName feature disablement Kubernetes-commit: 0d14bac9a606cd49e6c346c1220ebdbf1b18fa09 --- pkg/registry/generic/registry/store_test.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkg/registry/generic/registry/store_test.go b/pkg/registry/generic/registry/store_test.go index 7ef854499..e11cf8d3d 100644 --- a/pkg/registry/generic/registry/store_test.go +++ b/pkg/registry/generic/registry/store_test.go @@ -45,6 +45,7 @@ import ( "k8s.io/apimachinery/pkg/selection" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/validation/field" + "k8s.io/apimachinery/pkg/util/version" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/apiserver/pkg/apis/example" examplev1 "k8s.io/apiserver/pkg/apis/example/v1" @@ -447,6 +448,8 @@ func TestStoreCreateWithRetryNameGenerate(t *testing.T) { } func TestStoreCreateWithRetryNameGenerateFeatureDisabled(t *testing.T) { + // Preserve testing of disabled RetryGenerateName feature gate since it can still be disabled when emulation version is set. + featuregatetesting.SetFeatureGateEmulationVersionDuringTest(t, utilfeature.DefaultFeatureGate, version.MustParse("1.31")) featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.RetryGenerateName, false) namedObj := func(id int) *example.Pod { return &example.Pod{ @@ -2981,6 +2984,8 @@ func (p *predictableNameGenerator) GenerateName(base string) string { } func TestStoreCreateGenerateNameConflict(t *testing.T) { + // Preserve testing of disabled RetryGenerateName feature gate since it can still be disabled when emulation version is set. + featuregatetesting.SetFeatureGateEmulationVersionDuringTest(t, utilfeature.DefaultFeatureGate, version.MustParse("1.31")) featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.RetryGenerateName, false) // podA will be stored with name foo12345