mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 21:47:07 +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.DryRun: {Default: true, PreRelease: featuregate.GA},
|
||||||
genericfeatures.ServerSideApply: {Default: true, PreRelease: featuregate.GA},
|
genericfeatures.ServerSideApply: {Default: true, PreRelease: featuregate.GA},
|
||||||
genericfeatures.APIPriorityAndFairness: {Default: true, PreRelease: featuregate.Beta},
|
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.CustomResourceValidationExpressions: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
genericfeatures.OpenAPIV3: {Default: false, PreRelease: featuregate.Alpha},
|
genericfeatures.OpenAPIV3: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
genericfeatures.ServerSideFieldValidation: {Default: false, PreRelease: featuregate.Alpha},
|
genericfeatures.ServerSideFieldValidation: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
|
@ -151,6 +151,7 @@ const (
|
|||||||
// owner: @jiahuif
|
// owner: @jiahuif
|
||||||
// kep: http://kep.k8s.io/2887
|
// kep: http://kep.k8s.io/2887
|
||||||
// alpha: v1.23
|
// alpha: v1.23
|
||||||
|
// beta: v1.24
|
||||||
//
|
//
|
||||||
// Enables populating "enum" field of OpenAPI schemas
|
// Enables populating "enum" field of OpenAPI schemas
|
||||||
// in the spec returned from kube-apiserver.
|
// 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},
|
EfficientWatchResumption: {Default: true, PreRelease: featuregate.GA, LockToDefault: true},
|
||||||
APIServerIdentity: {Default: false, PreRelease: featuregate.Alpha},
|
APIServerIdentity: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
APIServerTracing: {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},
|
CustomResourceValidationExpressions: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
OpenAPIV3: {Default: false, PreRelease: featuregate.Alpha},
|
OpenAPIV3: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
ServerSideFieldValidation: {Default: false, PreRelease: featuregate.Alpha},
|
ServerSideFieldValidation: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
|
@ -17,9 +17,13 @@ limitations under the License.
|
|||||||
package openapi
|
package openapi
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"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/common"
|
||||||
"k8s.io/kube-openapi/pkg/validation/spec"
|
"k8s.io/kube-openapi/pkg/validation/spec"
|
||||||
)
|
)
|
||||||
@ -91,16 +95,44 @@ var getOpenAPIDefs common.GetOpenAPIDefinitions = func(ref common.ReferenceCallb
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestGetOpenAPIDefinitionsWithoutDisabledFeatures(t *testing.T) {
|
func TestGetOpenAPIDefinitionsWithoutDisabledFeatures(t *testing.T) {
|
||||||
defs := GetOpenAPIDefinitionsWithoutDisabledFeatures(getOpenAPIDefs)(func(path string) spec.Ref {
|
for _, tc := range []struct {
|
||||||
return spec.Ref{}
|
enabled bool
|
||||||
})
|
shouldHaveEnum bool
|
||||||
def := defs["k8s.io/api/apps/v1.DeploymentCondition"]
|
}{
|
||||||
for _, prop := range def.Schema.Properties {
|
{
|
||||||
if strings.Contains(prop.Description, "enum") {
|
enabled: true,
|
||||||
t.Errorf("enum in description: %s", prop.Description)
|
shouldHaveEnum: true,
|
||||||
}
|
},
|
||||||
if len(prop.Enum) != 0 {
|
{
|
||||||
t.Errorf("unexpected enum: %v", prop.Enum)
|
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