From f205e3dd596afb796fe6d5ea2122407233e0d587 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Sat, 29 Feb 2020 17:34:26 -0500 Subject: [PATCH] Use only v1 CRD resources in e2e tests --- .../test/integration/fixtures/resources.go | 54 +++++-------------- test/e2e/auth/BUILD | 2 +- test/e2e/auth/audit.go | 8 +-- 3 files changed, 19 insertions(+), 45 deletions(-) diff --git a/staging/src/k8s.io/apiextensions-apiserver/test/integration/fixtures/resources.go b/staging/src/k8s.io/apiextensions-apiserver/test/integration/fixtures/resources.go index 120dc5b9701..4bfe23f9854 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/test/integration/fixtures/resources.go +++ b/staging/src/k8s.io/apiextensions-apiserver/test/integration/fixtures/resources.go @@ -351,6 +351,11 @@ func CreateNewCustomResourceDefinition(crd *apiextensionsv1beta1.CustomResourceD return nil, err } + v1CRD, err := apiExtensionsClient.ApiextensionsV1().CustomResourceDefinitions().Get(context.TODO(), crd.Name, metav1.GetOptions{}) + if err != nil { + return nil, err + } + // This is only for a test. We need the watch cache to have a resource version that works for the test. // When new REST storage is created, the storage cacher for the CR starts asynchronously. // REST API operations return like list use the RV of etcd, but the storage cacher's reflector's list @@ -362,7 +367,7 @@ func CreateNewCustomResourceDefinition(crd *apiextensionsv1beta1.CustomResourceD // This way all the tests that are checking for watches don't have to worry about RV too old problems because crazy things *could* happen // before like the created RV could be too old to watch. err = wait.PollImmediate(500*time.Millisecond, 30*time.Second, func() (bool, error) { - return isWatchCachePrimed(crd, dynamicClientSet) + return isWatchCachePrimed(v1CRD, dynamicClientSet) }) if err != nil { return nil, err @@ -379,15 +384,11 @@ func CreateNewV1CustomResourceDefinitionWatchUnsafe(v1CRD *apiextensionsv1.Custo if err != nil { return nil, err } - crd, err := apiExtensionsClient.ApiextensionsV1beta1().CustomResourceDefinitions().Get(context.TODO(), v1CRD.Name, metav1.GetOptions{}) - if err != nil { - return nil, err - } // wait until all resources appears in discovery - for _, version := range servedVersions(crd) { + for _, version := range servedV1Versions(v1CRD) { err := wait.PollImmediate(500*time.Millisecond, 30*time.Second, func() (bool, error) { - return existsInDiscovery(crd, apiExtensionsClient, version) + return existsInDiscoveryV1(v1CRD, apiExtensionsClient, version) }) if err != nil { return nil, err @@ -403,10 +404,6 @@ func CreateNewV1CustomResourceDefinition(v1CRD *apiextensionsv1.CustomResourceDe if err != nil { return nil, err } - crd, err := apiExtensionsClient.ApiextensionsV1beta1().CustomResourceDefinitions().Get(context.TODO(), v1CRD.Name, metav1.GetOptions{}) - if err != nil { - return nil, err - } // This is only for a test. We need the watch cache to have a resource version that works for the test. // When new REST storage is created, the storage cacher for the CR starts asynchronously. @@ -419,7 +416,7 @@ func CreateNewV1CustomResourceDefinition(v1CRD *apiextensionsv1.CustomResourceDe // This way all the tests that are checking for watches don't have to worry about RV too old problems because crazy things *could* happen // before like the created RV could be too old to watch. err = wait.PollImmediate(500*time.Millisecond, 30*time.Second, func() (bool, error) { - return isWatchCachePrimed(crd, dynamicClientSet) + return isWatchCachePrimed(v1CRD, dynamicClientSet) }) if err != nil { return nil, err @@ -427,22 +424,22 @@ func CreateNewV1CustomResourceDefinition(v1CRD *apiextensionsv1.CustomResourceDe return v1CRD, nil } -func resourceClientForVersion(crd *apiextensionsv1beta1.CustomResourceDefinition, dynamicClientSet dynamic.Interface, namespace, version string) dynamic.ResourceInterface { +func resourceClientForVersion(crd *apiextensionsv1.CustomResourceDefinition, dynamicClientSet dynamic.Interface, namespace, version string) dynamic.ResourceInterface { gvr := schema.GroupVersionResource{Group: crd.Spec.Group, Version: version, Resource: crd.Spec.Names.Plural} - if crd.Spec.Scope != apiextensionsv1beta1.ClusterScoped { + if crd.Spec.Scope != apiextensionsv1.ClusterScoped { return dynamicClientSet.Resource(gvr).Namespace(namespace) } return dynamicClientSet.Resource(gvr) } // isWatchCachePrimed returns true if the watch is primed for an specified version of CRD watch -func isWatchCachePrimed(crd *apiextensionsv1beta1.CustomResourceDefinition, dynamicClientSet dynamic.Interface) (bool, error) { +func isWatchCachePrimed(crd *apiextensionsv1.CustomResourceDefinition, dynamicClientSet dynamic.Interface) (bool, error) { ns := "" - if crd.Spec.Scope != apiextensionsv1beta1.ClusterScoped { + if crd.Spec.Scope != apiextensionsv1.ClusterScoped { ns = "aval" } - versions := servedVersions(crd) + versions := servedV1Versions(crd) if len(versions) == 0 { return true, nil } @@ -539,29 +536,6 @@ func DeleteV1CustomResourceDefinition(crd *apiextensionsv1.CustomResourceDefinit return nil } -// DeleteCustomResourceDefinitions deletes all CRD matching the provided deleteListOpts and waits until all the CRDs disappear from discovery. -func DeleteCustomResourceDefinitions(deleteListOpts metav1.ListOptions, apiExtensionsClient clientset.Interface) error { - list, err := apiExtensionsClient.ApiextensionsV1beta1().CustomResourceDefinitions().List(context.TODO(), deleteListOpts) - if err != nil { - return err - } - if err = apiExtensionsClient.ApiextensionsV1beta1().CustomResourceDefinitions().DeleteCollection(context.TODO(), nil, deleteListOpts); err != nil { - return err - } - for _, crd := range list.Items { - for _, version := range servedVersions(&crd) { - err := wait.PollImmediate(500*time.Millisecond, 30*time.Second, func() (bool, error) { - exists, err := existsInDiscovery(&crd, apiExtensionsClient, version) - return !exists, err - }) - if err != nil { - return err - } - } - } - return nil -} - // DeleteV1CustomResourceDefinitions deletes all CRD matching the provided deleteListOpts and waits until all the CRDs disappear from discovery. func DeleteV1CustomResourceDefinitions(deleteListOpts metav1.ListOptions, apiExtensionsClient clientset.Interface) error { list, err := apiExtensionsClient.ApiextensionsV1().CustomResourceDefinitions().List(context.TODO(), deleteListOpts) diff --git a/test/e2e/auth/BUILD b/test/e2e/auth/BUILD index 786e2404e99..daa7616719e 100644 --- a/test/e2e/auth/BUILD +++ b/test/e2e/auth/BUILD @@ -29,7 +29,7 @@ go_library( "//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/api/policy/v1beta1:go_default_library", "//staging/src/k8s.io/api/rbac/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/v1:go_default_library", "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset:go_default_library", "//staging/src/k8s.io/apiextensions-apiserver/test/integration/fixtures:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", diff --git a/test/e2e/auth/audit.go b/test/e2e/auth/audit.go index 00dd5289ffe..9700a0e4f4a 100644 --- a/test/e2e/auth/audit.go +++ b/test/e2e/auth/audit.go @@ -25,7 +25,7 @@ import ( appsv1 "k8s.io/api/apps/v1" v1 "k8s.io/api/core/v1" - apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" apiextensionclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" "k8s.io/apiextensions-apiserver/test/integration/fixtures" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -50,7 +50,7 @@ var ( watchTestTimeout int64 = 1 auditTestUser = "kubecfg" - crd = fixtures.NewRandomNameCustomResourceDefinition(apiextensionsv1beta1.ClusterScoped) + crd = fixtures.NewRandomNameV1CustomResourceDefinition(apiextensionsv1.ClusterScoped) crdName = strings.SplitN(crd.Name, ".", 2)[0] crdNamespace = strings.SplitN(crd.Name, ".", 2)[1] @@ -600,9 +600,9 @@ var _ = SIGDescribe("Advanced Audit [DisabledForLargeClusters][Flaky]", func() { apiExtensionClient, err := apiextensionclientset.NewForConfig(config) framework.ExpectNoError(err, "failed to initialize apiExtensionClient") - crd, err = fixtures.CreateNewCustomResourceDefinition(crd, apiExtensionClient, f.DynamicClient) + crd, err = fixtures.CreateNewV1CustomResourceDefinition(crd, apiExtensionClient, f.DynamicClient) framework.ExpectNoError(err, "failed to create custom resource definition") - err = fixtures.DeleteCustomResourceDefinition(crd, apiExtensionClient) + err = fixtures.DeleteV1CustomResourceDefinition(crd, apiExtensionClient) framework.ExpectNoError(err, "failed to delete custom resource definition") expectEvents(f, []utils.AuditEvent{