mirror of https://github.com/k3s-io/k3s
Migrate RuntimeClass E2E to typed client
parent
291d0cbd2f
commit
954f43a10d
|
@ -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",
|
||||
|
|
|
@ -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,
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue