Merge pull request #121734 from Peac36/fix/121613
add test for the registered feature gates
This commit is contained in:
		@@ -53,4 +53,19 @@ if [[ -n "${missing_defers}" ]]; then
 | 
			
		||||
  rc=1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# ensure all generic features are added in alphabetic order
 | 
			
		||||
lines=$(git grep 'genericfeatures[.].*:' -- pkg/features/kube_features.go)
 | 
			
		||||
sorted_lines=$(echo "$lines" | sort -f)
 | 
			
		||||
if [[ "$lines" != "$sorted_lines" ]]; then
 | 
			
		||||
  echo "Generic features in pkg/features/kube_features.go not sorted" >&2
 | 
			
		||||
  echo >&2
 | 
			
		||||
  echo "Expected:" >&2
 | 
			
		||||
  echo "$sorted_lines" >&2
 | 
			
		||||
  echo >&2
 | 
			
		||||
  echo "Got:" >&2
 | 
			
		||||
  echo "$lines" >&2
 | 
			
		||||
  rc=1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
exit $rc
 | 
			
		||||
 
 | 
			
		||||
@@ -1157,28 +1157,46 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS
 | 
			
		||||
 | 
			
		||||
	genericfeatures.APIResponseCompression: {Default: true, PreRelease: featuregate.Beta},
 | 
			
		||||
 | 
			
		||||
	genericfeatures.APIServerIdentity: {Default: true, PreRelease: featuregate.Beta},
 | 
			
		||||
 | 
			
		||||
	genericfeatures.APIServerTracing: {Default: true, PreRelease: featuregate.Beta},
 | 
			
		||||
 | 
			
		||||
	genericfeatures.ConsistentListFromCache: {Default: false, PreRelease: featuregate.Alpha},
 | 
			
		||||
 | 
			
		||||
	genericfeatures.CustomResourceValidationExpressions: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.31
 | 
			
		||||
 | 
			
		||||
	genericfeatures.EfficientWatchResumption: {Default: true, PreRelease: featuregate.GA, LockToDefault: true},
 | 
			
		||||
 | 
			
		||||
	genericfeatures.KMSv1: {Default: false, PreRelease: featuregate.Deprecated},
 | 
			
		||||
 | 
			
		||||
	genericfeatures.KMSv2: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.31
 | 
			
		||||
 | 
			
		||||
	genericfeatures.KMSv2KDF: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.31
 | 
			
		||||
 | 
			
		||||
	genericfeatures.ValidatingAdmissionPolicy: {Default: false, PreRelease: featuregate.Beta},
 | 
			
		||||
 | 
			
		||||
	genericfeatures.CustomResourceValidationExpressions: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.31
 | 
			
		||||
 | 
			
		||||
	genericfeatures.OpenAPIEnums: {Default: true, PreRelease: featuregate.Beta},
 | 
			
		||||
 | 
			
		||||
	genericfeatures.RemainingItemCount: {Default: true, PreRelease: featuregate.GA, LockToDefault: true},
 | 
			
		||||
 | 
			
		||||
	genericfeatures.ServerSideApply: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.29
 | 
			
		||||
 | 
			
		||||
	genericfeatures.ServerSideFieldValidation: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.29
 | 
			
		||||
 | 
			
		||||
	genericfeatures.StorageVersionAPI: {Default: false, PreRelease: featuregate.Alpha},
 | 
			
		||||
 | 
			
		||||
	genericfeatures.StorageVersionHash: {Default: true, PreRelease: featuregate.Beta},
 | 
			
		||||
 | 
			
		||||
	genericfeatures.StructuredAuthenticationConfiguration: {Default: false, PreRelease: featuregate.Alpha},
 | 
			
		||||
 | 
			
		||||
	genericfeatures.StructuredAuthorizationConfiguration: {Default: false, PreRelease: featuregate.Alpha},
 | 
			
		||||
 | 
			
		||||
	genericfeatures.UnauthenticatedHTTP2DOSMitigation: {Default: true, PreRelease: featuregate.Beta},
 | 
			
		||||
 | 
			
		||||
	genericfeatures.ValidatingAdmissionPolicy: {Default: false, PreRelease: featuregate.Beta},
 | 
			
		||||
 | 
			
		||||
	genericfeatures.WatchBookmark: {Default: true, PreRelease: featuregate.GA, LockToDefault: true},
 | 
			
		||||
 | 
			
		||||
	genericfeatures.WatchList: {Default: false, PreRelease: featuregate.Alpha},
 | 
			
		||||
 | 
			
		||||
	genericfeatures.ZeroLimitedNominalConcurrencyShares: {Default: false, PreRelease: featuregate.Beta},
 | 
			
		||||
 | 
			
		||||
	// inherited features from apiextensions-apiserver, relisted here to get a conflict if it is changed
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										38
									
								
								pkg/features/kube_features_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								pkg/features/kube_features_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
/*
 | 
			
		||||
Copyright 2024 The Kubernetes Authors.
 | 
			
		||||
 | 
			
		||||
Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
you may not use this file except in compliance with the License.
 | 
			
		||||
You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
    http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
See the License for the specific language governing permissions and
 | 
			
		||||
limitations under the License.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
package features
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	utilfeature "k8s.io/apiserver/pkg/util/feature"
 | 
			
		||||
	"testing"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestKubeFeatures(t *testing.T) {
 | 
			
		||||
	features := utilfeature.DefaultFeatureGate.DeepCopy().GetAll()
 | 
			
		||||
 | 
			
		||||
	for i := range features {
 | 
			
		||||
		featureName := string(i)
 | 
			
		||||
 | 
			
		||||
		if featureName == "AllAlpha" || featureName == "AllBeta" {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if _, ok := defaultKubernetesFeatureGates[i]; !ok {
 | 
			
		||||
			t.Errorf("The feature gate %q is not registered", featureName)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user