From 37ac9aa060319c864fe5511467cfa2d201ae509e Mon Sep 17 00:00:00 2001 From: PiotrProkop Date: Wed, 16 Oct 2024 12:44:31 +0200 Subject: [PATCH] topologymanager: promote TopologyManagerPolicyOptions feature to GA * Promote TopologyManagerPolicyOptions feature to GA * Promote PreferClosestNUMANodes TopologyManagerPolicyOption to stable Signed-off-by: PiotrProkop --- pkg/features/versioned_kube_features.go | 1 + .../cm/topologymanager/policy_options.go | 5 ++- .../cm/topologymanager/policy_options_test.go | 44 ++++++++++++++++--- .../test_data/versioned_feature_list.yaml | 4 ++ 4 files changed, 45 insertions(+), 9 deletions(-) diff --git a/pkg/features/versioned_kube_features.go b/pkg/features/versioned_kube_features.go index 24f9438fa5d..c4f4c915376 100644 --- a/pkg/features/versioned_kube_features.go +++ b/pkg/features/versioned_kube_features.go @@ -708,6 +708,7 @@ var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate TopologyManagerPolicyOptions: { {Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha}, {Version: version.MustParse("1.28"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA}, }, TranslateStreamCloseWebsocketRequests: { diff --git a/pkg/kubelet/cm/topologymanager/policy_options.go b/pkg/kubelet/cm/topologymanager/policy_options.go index 2ea86d2fd3b..43eb9d886eb 100644 --- a/pkg/kubelet/cm/topologymanager/policy_options.go +++ b/pkg/kubelet/cm/topologymanager/policy_options.go @@ -34,10 +34,11 @@ const ( var ( alphaOptions = sets.New[string]() betaOptions = sets.New[string]( - PreferClosestNUMANodes, MaxAllowableNUMANodes, ) - stableOptions = sets.New[string]() + stableOptions = sets.New[string]( + PreferClosestNUMANodes, + ) ) func CheckPolicyOptionAvailable(option string) error { diff --git a/pkg/kubelet/cm/topologymanager/policy_options_test.go b/pkg/kubelet/cm/topologymanager/policy_options_test.go index 4876f6af7b7..840f4e8a4ce 100644 --- a/pkg/kubelet/cm/topologymanager/policy_options_test.go +++ b/pkg/kubelet/cm/topologymanager/policy_options_test.go @@ -47,9 +47,7 @@ func TestNewTopologyManagerOptions(t *testing.T) { expectedOptions PolicyOptions }{ { - description: "return TopologyManagerOptions with PreferClosestNUMA set to true", - featureGate: pkgfeatures.TopologyManagerPolicyBetaOptions, - featureGateEnable: true, + description: "return TopologyManagerOptions with PreferClosestNUMA set to true", expectedOptions: PolicyOptions{ PreferClosestNUMA: true, MaxAllowableNUMANodes: 8, @@ -74,8 +72,7 @@ func TestNewTopologyManagerOptions(t *testing.T) { description: "fail to set option when TopologyManagerPolicyBetaOptions feature gate is not set", featureGate: pkgfeatures.TopologyManagerPolicyBetaOptions, policyOptions: map[string]string{ - PreferClosestNUMANodes: "true", - MaxAllowableNUMANodes: "8", + MaxAllowableNUMANodes: "8", }, expectedErr: fmt.Errorf("Topology Manager Policy Beta-level Options not enabled,"), }, @@ -87,7 +84,6 @@ func TestNewTopologyManagerOptions(t *testing.T) { }, { description: "fail to parse options with error PreferClosestNUMANodes", - featureGate: pkgfeatures.TopologyManagerPolicyAlphaOptions, featureGateEnable: true, policyOptions: map[string]string{ PreferClosestNUMANodes: "not a boolean", @@ -177,6 +173,10 @@ func TestPolicyDefaultsAvailable(t *testing.T) { option: PreferClosestNUMANodes, expectedAvailable: true, }, + { + option: MaxAllowableNUMANodes, + expectedAvailable: true, + }, } for _, testCase := range testCases { t.Run(testCase.option, func(t *testing.T) { @@ -206,7 +206,7 @@ func TestPolicyOptionsAvailable(t *testing.T) { { option: PreferClosestNUMANodes, featureGate: pkgfeatures.TopologyManagerPolicyBetaOptions, - featureGateEnable: true, + featureGateEnable: false, expectedAvailable: true, }, { @@ -215,10 +215,40 @@ func TestPolicyOptionsAvailable(t *testing.T) { featureGateEnable: false, expectedAvailable: true, }, + { + option: fancyAlphaOption, + featureGate: pkgfeatures.TopologyManagerPolicyAlphaOptions, + featureGateEnable: true, + expectedAvailable: true, + }, + { + option: fancyAlphaOption, + featureGate: pkgfeatures.TopologyManagerPolicyAlphaOptions, + featureGateEnable: false, + expectedAvailable: false, + }, + { + option: fancyBetaOption, + featureGate: pkgfeatures.TopologyManagerPolicyBetaOptions, + featureGateEnable: true, + expectedAvailable: true, + }, + { + option: fancyBetaOption, + featureGate: pkgfeatures.TopologyManagerPolicyBetaOptions, + featureGateEnable: false, + expectedAvailable: false, + }, } + betaOptions.Insert(fancyBetaOption) + alphaOptions.Insert(fancyAlphaOption) for _, testCase := range testCases { t.Run(testCase.option, func(t *testing.T) { featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, testCase.featureGate, testCase.featureGateEnable) + defer func() { + // reset feature flag + featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, testCase.featureGate, !testCase.featureGateEnable) + }() err := CheckPolicyOptionAvailable(testCase.option) isEnabled := (err == nil) if isEnabled != testCase.expectedAvailable { diff --git a/test/featuregates_linter/test_data/versioned_feature_list.yaml b/test/featuregates_linter/test_data/versioned_feature_list.yaml index b247156a595..99e848880da 100644 --- a/test/featuregates_linter/test_data/versioned_feature_list.yaml +++ b/test/featuregates_linter/test_data/versioned_feature_list.yaml @@ -1234,6 +1234,10 @@ lockToDefault: false preRelease: Beta version: "1.28" + - default: true + lockToDefault: false + preRelease: GA + version: "1.32" - name: TranslateStreamCloseWebsocketRequests versionedSpecs: - default: false