Switch to v1 for admission and CRDs for all api-machinery e2e tests

This commit is contained in:
Joe Betz 2019-08-22 01:59:31 -07:00
parent d4958c0bee
commit 363d1fec08
4 changed files with 72 additions and 37 deletions

View File

@ -43,6 +43,38 @@ const (
noxuInstanceNum int64 = 9223372036854775807
)
// NewRandomNameV1CustomResourceDefinition generates a CRD with random name to avoid name conflict in e2e tests
func NewRandomNameV1CustomResourceDefinition(scope apiextensionsv1.ResourceScope) *apiextensionsv1.CustomResourceDefinition {
// ensure the singular doesn't end in an s for now
gName := names.SimpleNameGenerator.GenerateName("foo") + "a"
return &apiextensionsv1.CustomResourceDefinition{
ObjectMeta: metav1.ObjectMeta{Name: gName + "s.mygroup.example.com"},
Spec: apiextensionsv1.CustomResourceDefinitionSpec{
Group: "mygroup.example.com",
Versions: []apiextensionsv1.CustomResourceDefinitionVersion{
{
Name: "v1beta1",
Served: true,
Storage: true,
Schema: &apiextensionsv1.CustomResourceValidation{
OpenAPIV3Schema: &apiextensionsv1.JSONSchemaProps{
XPreserveUnknownFields: pointer.BoolPtr(true),
Type: "object",
},
},
},
},
Names: apiextensionsv1.CustomResourceDefinitionNames{
Plural: gName + "s",
Singular: gName,
Kind: gName,
ListKind: gName + "List",
},
Scope: scope,
},
}
}
// NewRandomNameCustomResourceDefinition generates a CRD with random name to avoid name conflict in e2e tests
func NewRandomNameCustomResourceDefinition(scope apiextensionsv1beta1.ResourceScope) *apiextensionsv1beta1.CustomResourceDefinition {
// ensure the singular doesn't end in an s for now

View File

@ -42,7 +42,6 @@ go_library(
"//staging/src/k8s.io/api/scheduling/v1:go_default_library",
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions: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/apiserver/validation:go_default_library",
"//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset:go_default_library",
"//staging/src/k8s.io/apiextensions-apiserver/test/integration:go_default_library",

View File

@ -19,7 +19,7 @@ package apimachinery
import (
"github.com/onsi/ginkgo"
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
"k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
"k8s.io/apiextensions-apiserver/test/integration/fixtures"
"k8s.io/apimachinery/pkg/api/equality"
@ -52,14 +52,14 @@ var _ = SIGDescribe("CustomResourceDefinition resources", func() {
apiExtensionClient, err := clientset.NewForConfig(config)
framework.ExpectNoError(err, "initializing apiExtensionClient")
randomDefinition := fixtures.NewRandomNameCustomResourceDefinition(v1beta1.ClusterScoped)
randomDefinition := fixtures.NewRandomNameV1CustomResourceDefinition(v1.ClusterScoped)
// Create CRD and waits for the resource to be recognized and available.
randomDefinition, err = fixtures.CreateNewCustomResourceDefinition(randomDefinition, apiExtensionClient, f.DynamicClient)
randomDefinition, err = fixtures.CreateNewV1CustomResourceDefinition(randomDefinition, apiExtensionClient, f.DynamicClient)
framework.ExpectNoError(err, "creating CustomResourceDefinition")
defer func() {
err = fixtures.DeleteCustomResourceDefinition(randomDefinition, apiExtensionClient)
err = fixtures.DeleteV1CustomResourceDefinition(randomDefinition, apiExtensionClient)
framework.ExpectNoError(err, "deleting CustomResourceDefinition")
}()
})
@ -80,30 +80,30 @@ var _ = SIGDescribe("CustomResourceDefinition resources", func() {
testUUID := string(uuid.NewUUID())
// Create CRD and wait for the resource to be recognized and available.
crds := make([]*v1beta1.CustomResourceDefinition, testListSize)
crds := make([]*v1.CustomResourceDefinition, testListSize)
for i := 0; i < testListSize; i++ {
crd := fixtures.NewRandomNameCustomResourceDefinition(v1beta1.ClusterScoped)
crd := fixtures.NewRandomNameV1CustomResourceDefinition(v1.ClusterScoped)
crd.Labels = map[string]string{"e2e-list-test-uuid": testUUID}
crd, err = fixtures.CreateNewCustomResourceDefinition(crd, apiExtensionClient, f.DynamicClient)
crd, err = fixtures.CreateNewV1CustomResourceDefinition(crd, apiExtensionClient, f.DynamicClient)
framework.ExpectNoError(err, "creating CustomResourceDefinition")
crds[i] = crd
}
// Create a crd w/o the label to ensure the label selector matching works correctly
crd := fixtures.NewRandomNameCustomResourceDefinition(v1beta1.ClusterScoped)
crd, err = fixtures.CreateNewCustomResourceDefinition(crd, apiExtensionClient, f.DynamicClient)
crd := fixtures.NewRandomNameV1CustomResourceDefinition(v1.ClusterScoped)
crd, err = fixtures.CreateNewV1CustomResourceDefinition(crd, apiExtensionClient, f.DynamicClient)
framework.ExpectNoError(err, "creating CustomResourceDefinition")
defer func() {
err = fixtures.DeleteCustomResourceDefinition(crd, apiExtensionClient)
err = fixtures.DeleteV1CustomResourceDefinition(crd, apiExtensionClient)
framework.ExpectNoError(err, "deleting CustomResourceDefinition")
}()
selectorListOpts := metav1.ListOptions{LabelSelector: "e2e-list-test-uuid=" + testUUID}
list, err := apiExtensionClient.ApiextensionsV1beta1().CustomResourceDefinitions().List(selectorListOpts)
list, err := apiExtensionClient.ApiextensionsV1().CustomResourceDefinitions().List(selectorListOpts)
framework.ExpectNoError(err, "listing CustomResourceDefinitions")
framework.ExpectEqual(len(list.Items), testListSize)
for _, actual := range list.Items {
var expected *v1beta1.CustomResourceDefinition
var expected *v1.CustomResourceDefinition
for _, e := range crds {
if e.Name == actual.Name && e.Namespace == actual.Namespace {
expected = e
@ -119,7 +119,7 @@ var _ = SIGDescribe("CustomResourceDefinition resources", func() {
// Use delete collection to remove the CRDs
err = fixtures.DeleteCustomResourceDefinitions(selectorListOpts, apiExtensionClient)
framework.ExpectNoError(err, "deleting CustomResourceDefinitions")
_, err = apiExtensionClient.ApiextensionsV1beta1().CustomResourceDefinitions().Get(crd.Name, metav1.GetOptions{})
_, err = apiExtensionClient.ApiextensionsV1().CustomResourceDefinitions().Get(crd.Name, metav1.GetOptions{})
framework.ExpectNoError(err, "getting remaining CustomResourceDefinition")
})
@ -135,20 +135,20 @@ var _ = SIGDescribe("CustomResourceDefinition resources", func() {
framework.ExpectNoError(err, "initializing apiExtensionClient")
dynamicClient, err := dynamic.NewForConfig(config)
framework.ExpectNoError(err, "initializing dynamic client")
gvr := v1beta1.SchemeGroupVersion.WithResource("customresourcedefinitions")
gvr := v1.SchemeGroupVersion.WithResource("customresourcedefinitions")
resourceClient := dynamicClient.Resource(gvr)
// Create CRD and waits for the resource to be recognized and available.
crd := fixtures.NewRandomNameCustomResourceDefinition(v1beta1.ClusterScoped)
crd, err = fixtures.CreateNewCustomResourceDefinition(crd, apiExtensionClient, f.DynamicClient)
crd := fixtures.NewRandomNameV1CustomResourceDefinition(v1.ClusterScoped)
crd, err = fixtures.CreateNewV1CustomResourceDefinition(crd, apiExtensionClient, f.DynamicClient)
framework.ExpectNoError(err, "creating CustomResourceDefinition")
defer func() {
err = fixtures.DeleteCustomResourceDefinition(crd, apiExtensionClient)
err = fixtures.DeleteV1CustomResourceDefinition(crd, apiExtensionClient)
framework.ExpectNoError(err, "deleting CustomResourceDefinition")
}()
var updated *v1beta1.CustomResourceDefinition
updateCondition := v1beta1.CustomResourceDefinitionCondition{Message: "updated"}
var updated *v1.CustomResourceDefinition
updateCondition := v1.CustomResourceDefinitionCondition{Message: "updated"}
err = retry.RetryOnConflict(retry.DefaultRetry, func() error {
// Use dynamic client to read the status sub-resource since typed client does not expose it.
u, err := resourceClient.Get(crd.GetName(), metav1.GetOptions{}, "status")
@ -158,14 +158,14 @@ var _ = SIGDescribe("CustomResourceDefinition resources", func() {
e2elog.Failf("Expected CustomResourceDefinition Spec to match status sub-resource Spec, but got:\n%s", diff.ObjectReflectDiff(status.Spec, crd.Spec))
}
status.Status.Conditions = append(status.Status.Conditions, updateCondition)
updated, err = apiExtensionClient.ApiextensionsV1beta1().CustomResourceDefinitions().UpdateStatus(status)
updated, err = apiExtensionClient.ApiextensionsV1().CustomResourceDefinitions().UpdateStatus(status)
return err
})
framework.ExpectNoError(err, "updating CustomResourceDefinition status")
expectCondition(updated.Status.Conditions, updateCondition)
patchCondition := v1beta1.CustomResourceDefinitionCondition{Message: "patched"}
patched, err := apiExtensionClient.ApiextensionsV1beta1().CustomResourceDefinitions().Patch(
patchCondition := v1.CustomResourceDefinitionCondition{Message: "patched"}
patched, err := apiExtensionClient.ApiextensionsV1().CustomResourceDefinitions().Patch(
crd.GetName(),
types.JSONPatchType,
[]byte(`[{"op": "add", "path": "/status/conditions", "value": [{"message": "patched"}]}]`),
@ -177,14 +177,14 @@ var _ = SIGDescribe("CustomResourceDefinition resources", func() {
})
})
func unstructuredToCRD(obj *unstructured.Unstructured) *v1beta1.CustomResourceDefinition {
crd := new(v1beta1.CustomResourceDefinition)
func unstructuredToCRD(obj *unstructured.Unstructured) *v1.CustomResourceDefinition {
crd := new(v1.CustomResourceDefinition)
err := runtime.DefaultUnstructuredConverter.FromUnstructured(obj.Object, crd)
framework.ExpectNoError(err, "converting unstructured to CustomResourceDefinition")
return crd
}
func expectCondition(conditions []v1beta1.CustomResourceDefinitionCondition, expected v1beta1.CustomResourceDefinitionCondition) {
func expectCondition(conditions []v1.CustomResourceDefinitionCondition, expected v1.CustomResourceDefinitionCondition) {
for _, c := range conditions {
if equality.Semantic.DeepEqual(c, expected) {
return

View File

@ -25,7 +25,7 @@ import (
batchv1 "k8s.io/api/batch/v1"
batchv1beta1 "k8s.io/api/batch/v1beta1"
"k8s.io/api/core/v1"
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apiextensionsclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
apiextensionstestserver "k8s.io/apiextensions-apiserver/test/integration/fixtures"
"k8s.io/apimachinery/pkg/api/errors"
@ -876,23 +876,25 @@ var _ = SIGDescribe("Garbage collector", func() {
// Create a random custom resource definition and ensure it's available for
// use.
definition := apiextensionstestserver.NewRandomNameCustomResourceDefinition(apiextensionsv1beta1.ClusterScoped)
definition := apiextensionstestserver.NewRandomNameV1CustomResourceDefinition(apiextensionsv1.ClusterScoped)
defer func() {
err = apiextensionstestserver.DeleteCustomResourceDefinition(definition, apiExtensionClient)
err = apiextensionstestserver.DeleteV1CustomResourceDefinition(definition, apiExtensionClient)
if err != nil && !errors.IsNotFound(err) {
e2elog.Failf("failed to delete CustomResourceDefinition: %v", err)
}
}()
definition, err = apiextensionstestserver.CreateNewCustomResourceDefinition(definition, apiExtensionClient, f.DynamicClient)
definition, err = apiextensionstestserver.CreateNewV1CustomResourceDefinition(definition, apiExtensionClient, f.DynamicClient)
if err != nil {
e2elog.Failf("failed to create CustomResourceDefinition: %v", err)
}
framework.ExpectEqual(len(definition.Spec.Versions), 1, "custom resource definition should have one version")
version := definition.Spec.Versions[0]
// Get a client for the custom resource.
gvr := schema.GroupVersionResource{Group: definition.Spec.Group, Version: definition.Spec.Version, Resource: definition.Spec.Names.Plural}
gvr := schema.GroupVersionResource{Group: definition.Spec.Group, Version: version.Name, Resource: definition.Spec.Names.Plural}
resourceClient := f.DynamicClient.Resource(gvr)
apiVersion := definition.Spec.Group + "/" + definition.Spec.Version
apiVersion := definition.Spec.Group + "/" + version.Name
// Create a custom owner resource.
ownerName := names.SimpleNameGenerator.GenerateName("owner")
@ -977,23 +979,25 @@ var _ = SIGDescribe("Garbage collector", func() {
// Create a random custom resource definition and ensure it's available for
// use.
definition := apiextensionstestserver.NewRandomNameCustomResourceDefinition(apiextensionsv1beta1.ClusterScoped)
definition := apiextensionstestserver.NewRandomNameV1CustomResourceDefinition(apiextensionsv1.ClusterScoped)
defer func() {
err = apiextensionstestserver.DeleteCustomResourceDefinition(definition, apiExtensionClient)
err = apiextensionstestserver.DeleteV1CustomResourceDefinition(definition, apiExtensionClient)
if err != nil && !errors.IsNotFound(err) {
e2elog.Failf("failed to delete CustomResourceDefinition: %v", err)
}
}()
definition, err = apiextensionstestserver.CreateNewCustomResourceDefinition(definition, apiExtensionClient, f.DynamicClient)
definition, err = apiextensionstestserver.CreateNewV1CustomResourceDefinition(definition, apiExtensionClient, f.DynamicClient)
if err != nil {
e2elog.Failf("failed to create CustomResourceDefinition: %v", err)
}
framework.ExpectEqual(len(definition.Spec.Versions), 1, "custom resource definition should have one version")
version := definition.Spec.Versions[0]
// Get a client for the custom resource.
gvr := schema.GroupVersionResource{Group: definition.Spec.Group, Version: definition.Spec.Version, Resource: definition.Spec.Names.Plural}
gvr := schema.GroupVersionResource{Group: definition.Spec.Group, Version: version.Name, Resource: definition.Spec.Names.Plural}
resourceClient := f.DynamicClient.Resource(gvr)
apiVersion := definition.Spec.Group + "/" + definition.Spec.Version
apiVersion := definition.Spec.Group + "/" + version.Name
// Create a custom owner resource.
ownerName := names.SimpleNameGenerator.GenerateName("owner")