diff --git a/pkg/kubelet/runtimeclass/testing/BUILD b/pkg/kubelet/runtimeclass/testing/BUILD index f9609f323f3..b48519c73a7 100644 --- a/pkg/kubelet/runtimeclass/testing/BUILD +++ b/pkg/kubelet/runtimeclass/testing/BUILD @@ -8,7 +8,6 @@ go_library( deps = [ "//pkg/kubelet/runtimeclass:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", "//staging/src/k8s.io/node-api/pkg/apis/node/v1alpha1:go_default_library", "//staging/src/k8s.io/node-api/pkg/client/clientset/versioned:go_default_library", "//staging/src/k8s.io/node-api/pkg/client/clientset/versioned/fake:go_default_library", diff --git a/pkg/kubelet/runtimeclass/testing/fake_manager.go b/pkg/kubelet/runtimeclass/testing/fake_manager.go index a7b8d23c5e7..99b19ab8c07 100644 --- a/pkg/kubelet/runtimeclass/testing/fake_manager.go +++ b/pkg/kubelet/runtimeclass/testing/fake_manager.go @@ -18,7 +18,6 @@ package testing import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/kubernetes/pkg/kubelet/runtimeclass" nodev1alpha1 "k8s.io/node-api/pkg/apis/node/v1alpha1" nodeapiclient "k8s.io/node-api/pkg/client/clientset/versioned" @@ -68,20 +67,3 @@ func NewRuntimeClass(name, handler string) *nodev1alpha1.RuntimeClass { }, } } - -// NewUnstructuredRuntimeClass is a helper to generate an unstructured RuntimeClass resource with -// the given name & handler. -func NewUnstructuredRuntimeClass(name, handler string) *unstructured.Unstructured { - return &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "node.k8s.io/v1alpha1", - "kind": "RuntimeClass", - "metadata": map[string]interface{}{ - "name": name, - }, - "spec": map[string]interface{}{ - "runtimeHandler": handler, - }, - }, - } -} diff --git a/test/e2e/framework/BUILD b/test/e2e/framework/BUILD index fae77f670a5..e5dcba85b73 100644 --- a/test/e2e/framework/BUILD +++ b/test/e2e/framework/BUILD @@ -128,6 +128,7 @@ go_library( "//staging/src/k8s.io/client-go/util/retry:go_default_library", "//staging/src/k8s.io/csi-api/pkg/client/clientset/versioned:go_default_library", "//staging/src/k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset:go_default_library", + "//staging/src/k8s.io/node-api/pkg/client/clientset/versioned:go_default_library", "//test/e2e/framework/ginkgowrapper:go_default_library", "//test/e2e/framework/metrics:go_default_library", "//test/e2e/framework/testfiles:go_default_library", diff --git a/test/e2e/framework/framework.go b/test/e2e/framework/framework.go index 8bd4c931b5b..4acc0bf9855 100644 --- a/test/e2e/framework/framework.go +++ b/test/e2e/framework/framework.go @@ -52,6 +52,7 @@ import ( "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" "k8s.io/kubernetes/test/e2e/framework/metrics" testutils "k8s.io/kubernetes/test/utils" + nodeapiclient "k8s.io/node-api/pkg/client/clientset/versioned" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" @@ -78,6 +79,7 @@ type Framework struct { KubemarkExternalClusterClientSet clientset.Interface APIExtensionsClientSet apiextensionsclient.Interface CSIClientSet csi.Interface + NodeAPIClientSet nodeapiclient.Interface InternalClientset *internalclientset.Clientset AggregatorClient *aggregatorclient.Clientset @@ -197,6 +199,9 @@ func (f *Framework) BeforeEach() { jsonConfig.ContentType = "application/json" f.CSIClientSet, err = csi.NewForConfig(jsonConfig) Expect(err).NotTo(HaveOccurred()) + // node.k8s.io is also based on CRD + f.NodeAPIClientSet, err = nodeapiclient.NewForConfig(jsonConfig) + Expect(err).NotTo(HaveOccurred()) // create scales getter, set GroupVersion and NegotiatedSerializer to default values // as they are required when creating a REST client. diff --git a/test/e2e/node/runtimeclass.go b/test/e2e/node/runtimeclass.go index ba971ba4604..e5fe7f8b324 100644 --- a/test/e2e/node/runtimeclass.go +++ b/test/e2e/node/runtimeclass.go @@ -69,14 +69,15 @@ var _ = SIGDescribe("RuntimeClass [Feature:RuntimeClass]", func() { It("should reject a Pod requesting a deleted RuntimeClass", func() { rcName := createRuntimeClass(f, "delete-me", "") + rcClient := f.NodeAPIClientSet.NodeV1alpha1().RuntimeClasses() By("Deleting RuntimeClass "+rcName, func() { - err := f.DynamicClient.Resource(runtimeClassGVR).Delete(rcName, nil) + err := rcClient.Delete(rcName, nil) framework.ExpectNoError(err, "failed to delete RuntimeClass %s", rcName) By("Waiting for the RuntimeClass to disappear") framework.ExpectNoError(wait.PollImmediate(framework.Poll, time.Minute, func() (bool, error) { - _, err := f.DynamicClient.Resource(runtimeClassGVR).Get(rcName, metav1.GetOptions{}) + _, err := rcClient.Get(rcName, metav1.GetOptions{}) if errors.IsNotFound(err) { return true, nil // done } @@ -143,11 +144,11 @@ var _ = SIGDescribe("RuntimeClass [Feature:RuntimeClass]", func() { }) // createRuntimeClass generates a RuntimeClass with the desired handler and a "namespaced" name, -// synchronously creates it with the dynamic client, and returns the resulting name. +// synchronously creates it, and returns the generated name. func createRuntimeClass(f *framework.Framework, name, handler string) string { uniqueName := fmt.Sprintf("%s-%s", f.Namespace.Name, name) - rc := runtimeclasstest.NewUnstructuredRuntimeClass(uniqueName, handler) - rc, err := f.DynamicClient.Resource(runtimeClassGVR).Create(rc, metav1.CreateOptions{}) + rc := runtimeclasstest.NewRuntimeClass(uniqueName, handler) + rc, err := f.NodeAPIClientSet.NodeV1alpha1().RuntimeClasses().Create(rc) framework.ExpectNoError(err, "failed to create RuntimeClass resource") return rc.GetName() }