mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
Merge pull request #108898 from jiahuif-forks/feature/openapi-enums/to-beta
Graduate OpenAPI Enums to beta
This commit is contained in:
commit
8f12e4a44b
@ -979,7 +979,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS
|
||||
genericfeatures.DryRun: {Default: true, PreRelease: featuregate.GA},
|
||||
genericfeatures.ServerSideApply: {Default: true, PreRelease: featuregate.GA},
|
||||
genericfeatures.APIPriorityAndFairness: {Default: true, PreRelease: featuregate.Beta},
|
||||
genericfeatures.OpenAPIEnums: {Default: false, PreRelease: featuregate.Alpha},
|
||||
genericfeatures.OpenAPIEnums: {Default: true, PreRelease: featuregate.Beta},
|
||||
genericfeatures.CustomResourceValidationExpressions: {Default: false, PreRelease: featuregate.Alpha},
|
||||
genericfeatures.OpenAPIV3: {Default: false, PreRelease: featuregate.Alpha},
|
||||
genericfeatures.ServerSideFieldValidation: {Default: false, PreRelease: featuregate.Alpha},
|
||||
|
@ -151,6 +151,7 @@ const (
|
||||
// owner: @jiahuif
|
||||
// kep: http://kep.k8s.io/2887
|
||||
// alpha: v1.23
|
||||
// beta: v1.24
|
||||
//
|
||||
// Enables populating "enum" field of OpenAPI schemas
|
||||
// in the spec returned from kube-apiserver.
|
||||
@ -201,7 +202,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS
|
||||
EfficientWatchResumption: {Default: true, PreRelease: featuregate.GA, LockToDefault: true},
|
||||
APIServerIdentity: {Default: false, PreRelease: featuregate.Alpha},
|
||||
APIServerTracing: {Default: false, PreRelease: featuregate.Alpha},
|
||||
OpenAPIEnums: {Default: false, PreRelease: featuregate.Alpha},
|
||||
OpenAPIEnums: {Default: true, PreRelease: featuregate.Beta},
|
||||
CustomResourceValidationExpressions: {Default: false, PreRelease: featuregate.Alpha},
|
||||
OpenAPIV3: {Default: false, PreRelease: featuregate.Alpha},
|
||||
ServerSideFieldValidation: {Default: false, PreRelease: featuregate.Alpha},
|
||||
|
@ -17,9 +17,13 @@ limitations under the License.
|
||||
package openapi
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"k8s.io/apiserver/pkg/features"
|
||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||
featuregatetesting "k8s.io/component-base/featuregate/testing"
|
||||
"k8s.io/kube-openapi/pkg/common"
|
||||
"k8s.io/kube-openapi/pkg/validation/spec"
|
||||
)
|
||||
@ -91,16 +95,44 @@ var getOpenAPIDefs common.GetOpenAPIDefinitions = func(ref common.ReferenceCallb
|
||||
}
|
||||
|
||||
func TestGetOpenAPIDefinitionsWithoutDisabledFeatures(t *testing.T) {
|
||||
defs := GetOpenAPIDefinitionsWithoutDisabledFeatures(getOpenAPIDefs)(func(path string) spec.Ref {
|
||||
return spec.Ref{}
|
||||
})
|
||||
def := defs["k8s.io/api/apps/v1.DeploymentCondition"]
|
||||
for _, prop := range def.Schema.Properties {
|
||||
if strings.Contains(prop.Description, "enum") {
|
||||
t.Errorf("enum in description: %s", prop.Description)
|
||||
}
|
||||
if len(prop.Enum) != 0 {
|
||||
t.Errorf("unexpected enum: %v", prop.Enum)
|
||||
}
|
||||
for _, tc := range []struct {
|
||||
enabled bool
|
||||
shouldHaveEnum bool
|
||||
}{
|
||||
{
|
||||
enabled: true,
|
||||
shouldHaveEnum: true,
|
||||
},
|
||||
{
|
||||
enabled: false,
|
||||
shouldHaveEnum: false,
|
||||
},
|
||||
} {
|
||||
t.Run(fmt.Sprintf("enabled=%v", tc.enabled), func(t *testing.T) {
|
||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.OpenAPIEnums, tc.enabled)()
|
||||
defs := GetOpenAPIDefinitionsWithoutDisabledFeatures(getOpenAPIDefs)(func(path string) spec.Ref {
|
||||
return spec.Ref{}
|
||||
})
|
||||
def := defs["k8s.io/api/apps/v1.DeploymentCondition"]
|
||||
enumAppeared := false
|
||||
for _, prop := range def.Schema.Properties {
|
||||
if strings.Contains(prop.Description, "enum") {
|
||||
enumAppeared = true
|
||||
if !tc.shouldHaveEnum {
|
||||
t.Errorf("enum appeared, description: %s", prop.Description)
|
||||
}
|
||||
}
|
||||
if len(prop.Enum) != 0 {
|
||||
enumAppeared = true
|
||||
if !tc.shouldHaveEnum {
|
||||
t.Errorf("enum appeared, enum: %v", prop.Enum)
|
||||
}
|
||||
}
|
||||
}
|
||||
if !enumAppeared && tc.shouldHaveEnum {
|
||||
t.Errorf("enum did not appear")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user