Merge pull request #81872 from sttts/sttts-crd-defaulting-beta

apiextension: promote CRD defaulting to beta
This commit is contained in:
Kubernetes Prow Robot 2019-08-26 16:43:06 -07:00 committed by GitHub
commit 45b0b78446
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 35 additions and 20 deletions

View File

@ -565,7 +565,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS
apiextensionsfeatures.CustomResourceSubresources: {Default: true, PreRelease: featuregate.Beta},
apiextensionsfeatures.CustomResourceWebhookConversion: {Default: true, PreRelease: featuregate.Beta},
apiextensionsfeatures.CustomResourcePublishOpenAPI: {Default: true, PreRelease: featuregate.Beta},
apiextensionsfeatures.CustomResourceDefaulting: {Default: false, PreRelease: featuregate.Alpha},
apiextensionsfeatures.CustomResourceDefaulting: {Default: true, PreRelease: featuregate.Beta},
// features that enable backwards compatibility but are scheduled to be removed
// ...

View File

@ -78,11 +78,12 @@ func TestValidateCustomResourceDefinition(t *testing.T) {
},
}
tests := []struct {
name string
resource *apiextensions.CustomResourceDefinition
requestGV schema.GroupVersion
errors []validationMatch
enabledFeatures []featuregate.Feature
name string
resource *apiextensions.CustomResourceDefinition
requestGV schema.GroupVersion
errors []validationMatch
enabledFeatures []featuregate.Feature
disabledFeatures []featuregate.Feature
}{
{
name: "invalid types allowed via v1beta1",
@ -1599,7 +1600,8 @@ func TestValidateCustomResourceDefinition(t *testing.T) {
StoredVersions: []string{"version"},
},
},
requestGV: apiextensionsv1beta1.SchemeGroupVersion,
requestGV: apiextensionsv1beta1.SchemeGroupVersion,
disabledFeatures: []featuregate.Feature{features.CustomResourceDefaulting},
errors: []validationMatch{
forbidden("spec", "validation", "openAPIV3Schema", "properties[a]", "default"), // disabled feature-gate
},
@ -4086,6 +4088,10 @@ func TestValidateCustomResourceDefinition(t *testing.T) {
for _, gate := range tc.enabledFeatures {
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, gate, true)()
}
for _, gate := range tc.disabledFeatures {
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, gate, false)()
}
// duplicate defaulting behaviour
if tc.resource.Spec.Conversion != nil && tc.resource.Spec.Conversion.Strategy == apiextensions.WebhookConverter && len(tc.resource.Spec.Conversion.ConversionReviewVersions) == 0 {
tc.resource.Spec.Conversion.ConversionReviewVersions = []string{"v1beta1"}
@ -4119,12 +4125,13 @@ func TestValidateCustomResourceDefinition(t *testing.T) {
func TestValidateCustomResourceDefinitionUpdate(t *testing.T) {
tests := []struct {
name string
old *apiextensions.CustomResourceDefinition
resource *apiextensions.CustomResourceDefinition
requestGV schema.GroupVersion
errors []validationMatch
enabledFeatures []featuregate.Feature
name string
old *apiextensions.CustomResourceDefinition
resource *apiextensions.CustomResourceDefinition
requestGV schema.GroupVersion
errors []validationMatch
enabledFeatures []featuregate.Feature
disabledFeatures []featuregate.Feature
}{
{
name: "invalid type updates allowed via v1beta1",
@ -5903,8 +5910,9 @@ func TestValidateCustomResourceDefinitionUpdate(t *testing.T) {
StoredVersions: []string{"version"},
},
},
requestGV: apiextensionsv1beta1.SchemeGroupVersion,
errors: []validationMatch{},
requestGV: apiextensionsv1beta1.SchemeGroupVersion,
errors: []validationMatch{},
disabledFeatures: []featuregate.Feature{features.CustomResourceDefaulting},
},
{
name: "ratcheting validation of defaults with disabled feature gate via v1",
@ -5990,8 +5998,9 @@ func TestValidateCustomResourceDefinitionUpdate(t *testing.T) {
StoredVersions: []string{"version"},
},
},
requestGV: apiextensionsv1.SchemeGroupVersion,
errors: []validationMatch{},
requestGV: apiextensionsv1.SchemeGroupVersion,
errors: []validationMatch{},
disabledFeatures: []featuregate.Feature{features.CustomResourceDefaulting},
},
{
name: "ratcheting validation of defaults with disabled feature gate via v1, non-structural, no defaults before",
@ -6074,6 +6083,7 @@ func TestValidateCustomResourceDefinitionUpdate(t *testing.T) {
errors: []validationMatch{
forbidden("spec", "validation", "openAPIV3Schema", "properties[a]", "default"),
},
disabledFeatures: []featuregate.Feature{features.CustomResourceDefaulting},
},
{
name: "ratcheting validation of defaults with disabled feature gate via v1, unpruned => unpruned",
@ -6174,8 +6184,9 @@ func TestValidateCustomResourceDefinitionUpdate(t *testing.T) {
StoredVersions: []string{"version"},
},
},
requestGV: apiextensionsv1.SchemeGroupVersion,
errors: []validationMatch{},
requestGV: apiextensionsv1.SchemeGroupVersion,
errors: []validationMatch{},
disabledFeatures: []featuregate.Feature{features.CustomResourceDefaulting},
},
{
name: "ratcheting validation of defaults with disabled feature gate via v1, pruned => unpruned",
@ -6280,6 +6291,7 @@ func TestValidateCustomResourceDefinitionUpdate(t *testing.T) {
errors: []validationMatch{
invalid("spec", "validation", "openAPIV3Schema", "properties[b]", "default"),
},
disabledFeatures: []featuregate.Feature{features.CustomResourceDefaulting},
},
{
name: "add default with enabled feature gate, structural schema, without pruning",
@ -6355,6 +6367,9 @@ func TestValidateCustomResourceDefinitionUpdate(t *testing.T) {
for _, gate := range tc.enabledFeatures {
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, gate, true)()
}
for _, gate := range tc.disabledFeatures {
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, gate, false)()
}
errs := ValidateCustomResourceDefinitionUpdate(tc.resource, tc.old, tc.requestGV)
seenErrs := make([]bool, len(errs))

View File

@ -73,5 +73,5 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS
CustomResourceSubresources: {Default: true, PreRelease: featuregate.Beta},
CustomResourceWebhookConversion: {Default: true, PreRelease: featuregate.Beta},
CustomResourcePublishOpenAPI: {Default: true, PreRelease: featuregate.Beta},
CustomResourceDefaulting: {Default: false, PreRelease: featuregate.Alpha},
CustomResourceDefaulting: {Default: true, PreRelease: featuregate.Beta},
}