From 7ee8f867d927c30eafbf62019d94b2ebca4f4f26 Mon Sep 17 00:00:00 2001 From: Maciej Szulik Date: Fri, 9 Sep 2016 13:38:32 +0200 Subject: [PATCH] Provide an e2e skip helper checking for available resource. --- test/e2e/framework/util.go | 16 ++++++++++++++++ test/e2e/scheduledjob.go | 7 +------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/test/e2e/framework/util.go b/test/e2e/framework/util.go index 2a7d4c1be2..92501a06e6 100644 --- a/test/e2e/framework/util.go +++ b/test/e2e/framework/util.go @@ -433,6 +433,22 @@ func SkipUnlessFederated(c *client.Client) { } } +func SkipIfMissingResource(clientPool dynamic.ClientPool, gvr unversioned.GroupVersionResource, namespace string) { + dynamicClient, err := clientPool.ClientForGroupVersion(gvr.GroupVersion()) + if err != nil { + Failf("Unexpected error getting dynamic client for %v: %v", gvr.GroupVersion(), err) + } + apiResource := unversioned.APIResource{Name: gvr.Resource, Namespaced: true} + _, err = dynamicClient.Resource(&apiResource, namespace).List(&v1.ListOptions{}) + if err != nil { + // not all resources support list, so we ignore those + if apierrs.IsMethodNotSupported(err) || apierrs.IsNotFound(err) || apierrs.IsForbidden(err) { + Skipf("Could not find %s resource, skipping test: %#v", gvr, err) + } + Failf("Unexpected error getting %v: %v", gvr, err) + } +} + // ProvidersWithSSH are those providers where each node is accessible with SSH var ProvidersWithSSH = []string{"gce", "gke", "aws"} diff --git a/test/e2e/scheduledjob.go b/test/e2e/scheduledjob.go index 01713b59a1..eada105f1b 100644 --- a/test/e2e/scheduledjob.go +++ b/test/e2e/scheduledjob.go @@ -24,7 +24,6 @@ import ( . "github.com/onsi/gomega" "k8s.io/kubernetes/pkg/api" - apierrs "k8s.io/kubernetes/pkg/api/errors" "k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/apis/batch" client "k8s.io/kubernetes/pkg/client/unversioned" @@ -47,11 +46,7 @@ var _ = framework.KubeDescribe("[Feature:ScheduledJob]", func() { f := framework.NewFramework("scheduledjob", options, nil) BeforeEach(func() { - if _, err := f.Client.Batch().ScheduledJobs(f.Namespace.Name).List(api.ListOptions{}); err != nil { - if apierrs.IsNotFound(err) { - framework.Skipf("Could not find ScheduledJobs resource, skipping test: %#v", err) - } - } + framework.SkipIfMissingResource(f.ClientPool, unversioned.GroupVersionResource{Group: batch.GroupName, Version: "v2alpha1", Resource: "scheduledjobs"}, f.Namespace.Name) }) // multiple jobs running at once