mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-07 11:13:48 +00:00
Remove use of CustomResourceDefaulting feature gate
This commit is contained in:
parent
ff94f33a6b
commit
46e622216d
@ -40,7 +40,6 @@ go_test(
|
|||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/fuzzer:go_default_library",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/fuzzer:go_default_library",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1:go_default_library",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/features:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/api/apitesting/fuzzer:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/api/apitesting/fuzzer:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
@ -48,9 +47,6 @@ go_test(
|
|||||||
"//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/json:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/json:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
|
||||||
"//staging/src/k8s.io/component-base/featuregate:go_default_library",
|
|
||||||
"//staging/src/k8s.io/component-base/featuregate/testing:go_default_library",
|
|
||||||
"//vendor/k8s.io/utils/pointer:go_default_library",
|
"//vendor/k8s.io/utils/pointer:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -25,7 +25,6 @@ import (
|
|||||||
apiextensionsfuzzer "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/fuzzer"
|
apiextensionsfuzzer "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/fuzzer"
|
||||||
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||||
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
|
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
|
||||||
"k8s.io/apiextensions-apiserver/pkg/features"
|
|
||||||
"k8s.io/apimachinery/pkg/api/apitesting/fuzzer"
|
"k8s.io/apimachinery/pkg/api/apitesting/fuzzer"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
@ -33,9 +32,6 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/runtime/serializer"
|
"k8s.io/apimachinery/pkg/runtime/serializer"
|
||||||
"k8s.io/apimachinery/pkg/util/json"
|
"k8s.io/apimachinery/pkg/util/json"
|
||||||
"k8s.io/apimachinery/pkg/util/validation/field"
|
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
|
||||||
"k8s.io/component-base/featuregate"
|
|
||||||
featuregatetesting "k8s.io/component-base/featuregate/testing"
|
|
||||||
"k8s.io/utils/pointer"
|
"k8s.io/utils/pointer"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -82,8 +78,6 @@ func TestValidateCustomResourceDefinition(t *testing.T) {
|
|||||||
resource *apiextensions.CustomResourceDefinition
|
resource *apiextensions.CustomResourceDefinition
|
||||||
requestGV schema.GroupVersion
|
requestGV schema.GroupVersion
|
||||||
errors []validationMatch
|
errors []validationMatch
|
||||||
enabledFeatures []featuregate.Feature
|
|
||||||
disabledFeatures []featuregate.Feature
|
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "invalid types allowed via v1beta1",
|
name: "invalid types allowed via v1beta1",
|
||||||
@ -1645,7 +1639,6 @@ func TestValidateCustomResourceDefinition(t *testing.T) {
|
|||||||
StoredVersions: []string{"version"},
|
StoredVersions: []string{"version"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
enabledFeatures: []featuregate.Feature{features.CustomResourceDefaulting},
|
|
||||||
requestGV: apiextensionsv1beta1.SchemeGroupVersion,
|
requestGV: apiextensionsv1beta1.SchemeGroupVersion,
|
||||||
errors: []validationMatch{
|
errors: []validationMatch{
|
||||||
forbidden("spec", "validation", "openAPIV3Schema", "properties[a]", "default"), // disallowed via v1beta1
|
forbidden("spec", "validation", "openAPIV3Schema", "properties[a]", "default"), // disallowed via v1beta1
|
||||||
@ -1683,7 +1676,6 @@ func TestValidateCustomResourceDefinition(t *testing.T) {
|
|||||||
StoredVersions: []string{"version"},
|
StoredVersions: []string{"version"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
enabledFeatures: []featuregate.Feature{features.CustomResourceDefaulting},
|
|
||||||
requestGV: apiextensionsv1.SchemeGroupVersion,
|
requestGV: apiextensionsv1.SchemeGroupVersion,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -1937,7 +1929,6 @@ func TestValidateCustomResourceDefinition(t *testing.T) {
|
|||||||
required("spec", "validation", "openAPIV3Schema", "properties[a]", "type"),
|
required("spec", "validation", "openAPIV3Schema", "properties[a]", "type"),
|
||||||
required("spec", "validation", "openAPIV3Schema", "type"),
|
required("spec", "validation", "openAPIV3Schema", "type"),
|
||||||
},
|
},
|
||||||
enabledFeatures: []featuregate.Feature{features.CustomResourceDefaulting},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "defaults with enabled feature gate, structural schema",
|
name: "defaults with enabled feature gate, structural schema",
|
||||||
@ -1972,7 +1963,6 @@ func TestValidateCustomResourceDefinition(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
errors: []validationMatch{},
|
errors: []validationMatch{},
|
||||||
enabledFeatures: []featuregate.Feature{features.CustomResourceDefaulting},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "defaults in value validation with enabled feature gate, structural schema",
|
name: "defaults in value validation with enabled feature gate, structural schema",
|
||||||
@ -2029,7 +2019,6 @@ func TestValidateCustomResourceDefinition(t *testing.T) {
|
|||||||
forbidden("spec", "validation", "openAPIV3Schema", "properties[a]", "anyOf[0]", "default"),
|
forbidden("spec", "validation", "openAPIV3Schema", "properties[a]", "anyOf[0]", "default"),
|
||||||
forbidden("spec", "validation", "openAPIV3Schema", "properties[a]", "oneOf[0]", "default"),
|
forbidden("spec", "validation", "openAPIV3Schema", "properties[a]", "oneOf[0]", "default"),
|
||||||
},
|
},
|
||||||
enabledFeatures: []featuregate.Feature{features.CustomResourceDefaulting},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "invalid defaults with enabled feature gate, structural schema",
|
name: "invalid defaults with enabled feature gate, structural schema",
|
||||||
@ -2203,8 +2192,6 @@ func TestValidateCustomResourceDefinition(t *testing.T) {
|
|||||||
invalid("spec", "validation", "openAPIV3Schema", "properties[e]", "properties[preserveUnknownFields]", "default"),
|
invalid("spec", "validation", "openAPIV3Schema", "properties[e]", "properties[preserveUnknownFields]", "default"),
|
||||||
invalid("spec", "validation", "openAPIV3Schema", "properties[e]", "properties[nestedProperties]", "default"),
|
invalid("spec", "validation", "openAPIV3Schema", "properties[e]", "properties[nestedProperties]", "default"),
|
||||||
},
|
},
|
||||||
|
|
||||||
enabledFeatures: []featuregate.Feature{features.CustomResourceDefaulting},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "additionalProperties at resource root",
|
name: "additionalProperties at resource root",
|
||||||
@ -2254,7 +2241,6 @@ func TestValidateCustomResourceDefinition(t *testing.T) {
|
|||||||
required("spec", "validation", "openAPIV3Schema", "properties[embedded1]", "properties"),
|
required("spec", "validation", "openAPIV3Schema", "properties[embedded1]", "properties"),
|
||||||
forbidden("spec", "validation", "openAPIV3Schema", "properties[embedded2]", "additionalProperties"),
|
forbidden("spec", "validation", "openAPIV3Schema", "properties[embedded2]", "additionalProperties"),
|
||||||
},
|
},
|
||||||
enabledFeatures: []featuregate.Feature{features.CustomResourceDefaulting},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
// TODO: remove in a follow-up. This blocks is here for easy review.
|
// TODO: remove in a follow-up. This blocks is here for easy review.
|
||||||
@ -2448,7 +2434,6 @@ func TestValidateCustomResourceDefinition(t *testing.T) {
|
|||||||
// Invalid value: wrongly typed
|
// Invalid value: wrongly typed
|
||||||
invalid("spec", "versions[3]", "schema", "openAPIV3Schema", "properties[embedded]", "properties[metadata]", "properties[name]", "default"),
|
invalid("spec", "versions[3]", "schema", "openAPIV3Schema", "properties[embedded]", "properties[metadata]", "properties[name]", "default"),
|
||||||
},
|
},
|
||||||
enabledFeatures: []featuregate.Feature{features.CustomResourceDefaulting},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "default inside additionalSchema",
|
name: "default inside additionalSchema",
|
||||||
@ -2509,7 +2494,6 @@ func TestValidateCustomResourceDefinition(t *testing.T) {
|
|||||||
// Forbidden: must not be set inside additionalProperties applying to object metadata
|
// Forbidden: must not be set inside additionalProperties applying to object metadata
|
||||||
forbidden("spec", "validation", "openAPIV3Schema", "properties[embedded]", "properties[metadata]", "properties[annotations]", "additionalProperties", "default"),
|
forbidden("spec", "validation", "openAPIV3Schema", "properties[embedded]", "properties[metadata]", "properties[annotations]", "additionalProperties", "default"),
|
||||||
},
|
},
|
||||||
enabledFeatures: []featuregate.Feature{features.CustomResourceDefaulting},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "top-level metadata default",
|
name: "top-level metadata default",
|
||||||
@ -2555,7 +2539,6 @@ func TestValidateCustomResourceDefinition(t *testing.T) {
|
|||||||
errors: []validationMatch{
|
errors: []validationMatch{
|
||||||
forbidden("spec", "validation", "openAPIV3Schema", "properties[metadata]", "default"),
|
forbidden("spec", "validation", "openAPIV3Schema", "properties[metadata]", "default"),
|
||||||
},
|
},
|
||||||
enabledFeatures: []featuregate.Feature{features.CustomResourceDefaulting},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "embedded metadata defaults",
|
name: "embedded metadata defaults",
|
||||||
@ -3937,7 +3920,6 @@ func TestValidateCustomResourceDefinition(t *testing.T) {
|
|||||||
required("spec", "validation", "openAPIV3Schema", "properties[spanning-defaults-with-missing-typemeta]", "default", "embedded", "apiVersion"),
|
required("spec", "validation", "openAPIV3Schema", "properties[spanning-defaults-with-missing-typemeta]", "default", "embedded", "apiVersion"),
|
||||||
required("spec", "validation", "openAPIV3Schema", "properties[spanning-defaults-with-missing-typemeta]", "default", "embedded", "kind"),
|
required("spec", "validation", "openAPIV3Schema", "properties[spanning-defaults-with-missing-typemeta]", "default", "embedded", "kind"),
|
||||||
},
|
},
|
||||||
enabledFeatures: []featuregate.Feature{features.CustomResourceDefaulting},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "contradicting meta field types",
|
name: "contradicting meta field types",
|
||||||
@ -4086,18 +4068,11 @@ func TestValidateCustomResourceDefinition(t *testing.T) {
|
|||||||
invalid("spec", "validation", "openAPIV3Schema", "properties[nested]", "properties[invalid]", "properties[kind]", "type"),
|
invalid("spec", "validation", "openAPIV3Schema", "properties[nested]", "properties[invalid]", "properties[kind]", "type"),
|
||||||
invalid("spec", "validation", "openAPIV3Schema", "properties[nested]", "properties[invalid]", "properties[metadata]", "type"),
|
invalid("spec", "validation", "openAPIV3Schema", "properties[nested]", "properties[invalid]", "properties[metadata]", "type"),
|
||||||
},
|
},
|
||||||
enabledFeatures: []featuregate.Feature{features.CustomResourceDefaulting},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tc := range tests {
|
for _, tc := range tests {
|
||||||
t.Run(tc.name, func(t *testing.T) {
|
t.Run(tc.name, func(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
|
// duplicate defaulting behaviour
|
||||||
if tc.resource.Spec.Conversion != nil && tc.resource.Spec.Conversion.Strategy == apiextensions.WebhookConverter && len(tc.resource.Spec.Conversion.ConversionReviewVersions) == 0 {
|
if tc.resource.Spec.Conversion != nil && tc.resource.Spec.Conversion.Strategy == apiextensions.WebhookConverter && len(tc.resource.Spec.Conversion.ConversionReviewVersions) == 0 {
|
||||||
@ -4137,8 +4112,6 @@ func TestValidateCustomResourceDefinitionUpdate(t *testing.T) {
|
|||||||
resource *apiextensions.CustomResourceDefinition
|
resource *apiextensions.CustomResourceDefinition
|
||||||
requestGV schema.GroupVersion
|
requestGV schema.GroupVersion
|
||||||
errors []validationMatch
|
errors []validationMatch
|
||||||
enabledFeatures []featuregate.Feature
|
|
||||||
disabledFeatures []featuregate.Feature
|
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "invalid type updates allowed via v1beta1",
|
name: "invalid type updates allowed via v1beta1",
|
||||||
@ -5882,7 +5855,6 @@ func TestValidateCustomResourceDefinitionUpdate(t *testing.T) {
|
|||||||
},
|
},
|
||||||
requestGV: apiextensionsv1beta1.SchemeGroupVersion,
|
requestGV: apiextensionsv1beta1.SchemeGroupVersion,
|
||||||
errors: []validationMatch{forbidden("spec.validation.openAPIV3Schema.properties[a].default")},
|
errors: []validationMatch{forbidden("spec.validation.openAPIV3Schema.properties[a].default")},
|
||||||
enabledFeatures: []featuregate.Feature{features.CustomResourceDefaulting},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "setting defaults with enabled feature gate via v1",
|
name: "setting defaults with enabled feature gate via v1",
|
||||||
@ -5965,7 +5937,6 @@ func TestValidateCustomResourceDefinitionUpdate(t *testing.T) {
|
|||||||
},
|
},
|
||||||
requestGV: apiextensionsv1.SchemeGroupVersion,
|
requestGV: apiextensionsv1.SchemeGroupVersion,
|
||||||
errors: []validationMatch{},
|
errors: []validationMatch{},
|
||||||
enabledFeatures: []featuregate.Feature{features.CustomResourceDefaulting},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "add default with enabled feature gate, structural schema, without pruning",
|
name: "add default with enabled feature gate, structural schema, without pruning",
|
||||||
@ -6032,19 +6003,11 @@ func TestValidateCustomResourceDefinitionUpdate(t *testing.T) {
|
|||||||
errors: []validationMatch{
|
errors: []validationMatch{
|
||||||
invalid("spec", "preserveUnknownFields"),
|
invalid("spec", "preserveUnknownFields"),
|
||||||
},
|
},
|
||||||
enabledFeatures: []featuregate.Feature{features.CustomResourceDefaulting},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tc := range tests {
|
for _, tc := range tests {
|
||||||
t.Run(tc.name, func(t *testing.T) {
|
t.Run(tc.name, func(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)
|
errs := ValidateCustomResourceDefinitionUpdate(tc.resource, tc.old, tc.requestGV)
|
||||||
seenErrs := make([]bool, len(errs))
|
seenErrs := make([]bool, len(errs))
|
||||||
|
|
||||||
|
@ -35,7 +35,6 @@ go_test(
|
|||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset:go_default_library",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset:go_default_library",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme:go_default_library",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme:go_default_library",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/cmd/server/options:go_default_library",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/cmd/server/options:go_default_library",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/features:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/test/integration/fixtures:go_default_library",
|
"//staging/src/k8s.io/apiextensions-apiserver/test/integration/fixtures:go_default_library",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/test/integration/storage:go_default_library",
|
"//staging/src/k8s.io/apiextensions-apiserver/test/integration/storage:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
||||||
|
@ -12,7 +12,6 @@ go_test(
|
|||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset:go_default_library",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset:go_default_library",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/cmd/server/options:go_default_library",
|
"//staging/src/k8s.io/apiextensions-apiserver/pkg/cmd/server/options:go_default_library",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/pkg/features:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/test/integration/fixtures:go_default_library",
|
"//staging/src/k8s.io/apiextensions-apiserver/test/integration/fixtures:go_default_library",
|
||||||
"//staging/src/k8s.io/apiextensions-apiserver/test/integration/storage:go_default_library",
|
"//staging/src/k8s.io/apiextensions-apiserver/test/integration/storage:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
||||||
@ -25,9 +24,7 @@ go_test(
|
|||||||
"//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/storage/etcd3:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/storage/etcd3:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/dynamic:go_default_library",
|
"//staging/src/k8s.io/client-go/dynamic:go_default_library",
|
||||||
"//staging/src/k8s.io/component-base/featuregate/testing:go_default_library",
|
|
||||||
"//vendor/github.com/google/go-cmp/cmp:go_default_library",
|
"//vendor/github.com/google/go-cmp/cmp:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -38,15 +38,12 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/util/uuid"
|
"k8s.io/apimachinery/pkg/util/uuid"
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
etcd3watcher "k8s.io/apiserver/pkg/storage/etcd3"
|
etcd3watcher "k8s.io/apiserver/pkg/storage/etcd3"
|
||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
|
||||||
"k8s.io/client-go/dynamic"
|
"k8s.io/client-go/dynamic"
|
||||||
featuregatetesting "k8s.io/component-base/featuregate/testing"
|
|
||||||
|
|
||||||
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||||
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
|
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
|
||||||
"k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
|
"k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
|
||||||
serveroptions "k8s.io/apiextensions-apiserver/pkg/cmd/server/options"
|
serveroptions "k8s.io/apiextensions-apiserver/pkg/cmd/server/options"
|
||||||
apiextensionsfeatures "k8s.io/apiextensions-apiserver/pkg/features"
|
|
||||||
"k8s.io/apiextensions-apiserver/test/integration/fixtures"
|
"k8s.io/apiextensions-apiserver/test/integration/fixtures"
|
||||||
"k8s.io/apiextensions-apiserver/test/integration/storage"
|
"k8s.io/apiextensions-apiserver/test/integration/storage"
|
||||||
)
|
)
|
||||||
@ -58,17 +55,13 @@ func checks(checkers ...Checker) []Checker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestWebhookConverterWithWatchCache(t *testing.T) {
|
func TestWebhookConverterWithWatchCache(t *testing.T) {
|
||||||
testWebhookConverter(t, false, true)
|
testWebhookConverter(t, true)
|
||||||
}
|
}
|
||||||
func TestWebhookConverterWithoutWatchCache(t *testing.T) {
|
func TestWebhookConverterWithoutWatchCache(t *testing.T) {
|
||||||
testWebhookConverter(t, false, false)
|
testWebhookConverter(t, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestWebhookConverterWithDefaulting(t *testing.T) {
|
func testWebhookConverter(t *testing.T, watchCache bool) {
|
||||||
testWebhookConverter(t, true, true)
|
|
||||||
}
|
|
||||||
|
|
||||||
func testWebhookConverter(t *testing.T, defaulting, watchCache bool) {
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
group string
|
group string
|
||||||
handler http.Handler
|
handler http.Handler
|
||||||
@ -167,11 +160,6 @@ func testWebhookConverter(t *testing.T, defaulting, watchCache bool) {
|
|||||||
etcd3watcher.TestOnlySetFatalOnDecodeError(false)
|
etcd3watcher.TestOnlySetFatalOnDecodeError(false)
|
||||||
defer etcd3watcher.TestOnlySetFatalOnDecodeError(true)
|
defer etcd3watcher.TestOnlySetFatalOnDecodeError(true)
|
||||||
|
|
||||||
// enable necessary features
|
|
||||||
if defaulting {
|
|
||||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, apiextensionsfeatures.CustomResourceDefaulting, true)()
|
|
||||||
}
|
|
||||||
|
|
||||||
tearDown, config, options, err := fixtures.StartDefaultServer(t, fmt.Sprintf("--watch-cache=%v", watchCache))
|
tearDown, config, options, err := fixtures.StartDefaultServer(t, fmt.Sprintf("--watch-cache=%v", watchCache))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
@ -192,12 +180,6 @@ func testWebhookConverter(t *testing.T, defaulting, watchCache bool) {
|
|||||||
|
|
||||||
crd := multiVersionFixture.DeepCopy()
|
crd := multiVersionFixture.DeepCopy()
|
||||||
|
|
||||||
if !defaulting {
|
|
||||||
for i := range crd.Spec.Versions {
|
|
||||||
delete(crd.Spec.Versions[i].Schema.OpenAPIV3Schema.Properties, "defaults")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
RESTOptionsGetter := serveroptions.NewCRDRESTOptionsGetter(*options.RecommendedOptions.Etcd)
|
RESTOptionsGetter := serveroptions.NewCRDRESTOptionsGetter(*options.RecommendedOptions.Etcd)
|
||||||
restOptions, err := RESTOptionsGetter.GetRESTOptions(schema.GroupResource{Group: crd.Spec.Group, Resource: crd.Spec.Names.Plural})
|
restOptions, err := RESTOptionsGetter.GetRESTOptions(schema.GroupResource{Group: crd.Spec.Group, Resource: crd.Spec.Names.Plural})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -32,14 +32,11 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/util/json"
|
"k8s.io/apimachinery/pkg/util/json"
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
"k8s.io/apimachinery/pkg/watch"
|
"k8s.io/apimachinery/pkg/watch"
|
||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
|
||||||
"k8s.io/client-go/dynamic"
|
"k8s.io/client-go/dynamic"
|
||||||
utilfeaturetesting "k8s.io/component-base/featuregate/testing"
|
|
||||||
|
|
||||||
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||||
"k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
|
"k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
|
||||||
serveroptions "k8s.io/apiextensions-apiserver/pkg/cmd/server/options"
|
serveroptions "k8s.io/apiextensions-apiserver/pkg/cmd/server/options"
|
||||||
"k8s.io/apiextensions-apiserver/pkg/features"
|
|
||||||
"k8s.io/apiextensions-apiserver/test/integration/fixtures"
|
"k8s.io/apiextensions-apiserver/test/integration/fixtures"
|
||||||
"k8s.io/apiextensions-apiserver/test/integration/storage"
|
"k8s.io/apiextensions-apiserver/test/integration/storage"
|
||||||
)
|
)
|
||||||
@ -167,8 +164,6 @@ func TestCustomResourceDefaultingWithoutWatchCache(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func testDefaulting(t *testing.T, watchCache bool) {
|
func testDefaulting(t *testing.T, watchCache bool) {
|
||||||
defer utilfeaturetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.CustomResourceDefaulting, true)()
|
|
||||||
|
|
||||||
tearDownFn, apiExtensionClient, dynamicClient, err := fixtures.StartDefaultServerWithClients(t, fmt.Sprintf("--watch-cache=%v", watchCache))
|
tearDownFn, apiExtensionClient, dynamicClient, err := fixtures.StartDefaultServerWithClients(t, fmt.Sprintf("--watch-cache=%v", watchCache))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
@ -572,8 +567,6 @@ metadata:
|
|||||||
`
|
`
|
||||||
|
|
||||||
func TestCustomResourceDefaultingOfMetaFields(t *testing.T) {
|
func TestCustomResourceDefaultingOfMetaFields(t *testing.T) {
|
||||||
defer utilfeaturetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.CustomResourceDefaulting, true)()
|
|
||||||
|
|
||||||
tearDown, config, options, err := fixtures.StartDefaultServer(t)
|
tearDown, config, options, err := fixtures.StartDefaultServer(t)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
|
@ -32,7 +32,6 @@ import (
|
|||||||
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
|
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
|
||||||
"k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
|
"k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
|
||||||
serveroptions "k8s.io/apiextensions-apiserver/pkg/cmd/server/options"
|
serveroptions "k8s.io/apiextensions-apiserver/pkg/cmd/server/options"
|
||||||
"k8s.io/apiextensions-apiserver/pkg/features"
|
|
||||||
"k8s.io/apiextensions-apiserver/test/integration/fixtures"
|
"k8s.io/apiextensions-apiserver/test/integration/fixtures"
|
||||||
"k8s.io/apimachinery/pkg/api/errors"
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
@ -41,9 +40,7 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/util/diff"
|
"k8s.io/apimachinery/pkg/util/diff"
|
||||||
"k8s.io/apimachinery/pkg/util/json"
|
"k8s.io/apimachinery/pkg/util/json"
|
||||||
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
|
||||||
"k8s.io/client-go/dynamic"
|
"k8s.io/client-go/dynamic"
|
||||||
featuregatetesting "k8s.io/component-base/featuregate/testing"
|
|
||||||
"k8s.io/utils/pointer"
|
"k8s.io/utils/pointer"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -431,8 +428,6 @@ invalidDefaults: {}
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestEmbeddedResources(t *testing.T) {
|
func TestEmbeddedResources(t *testing.T) {
|
||||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.CustomResourceDefaulting, true)()
|
|
||||||
|
|
||||||
tearDownFn, apiExtensionClient, dynamicClient, err := fixtures.StartDefaultServerWithClients(t)
|
tearDownFn, apiExtensionClient, dynamicClient, err := fixtures.StartDefaultServerWithClients(t)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
|
Loading…
Reference in New Issue
Block a user