Merge pull request #89889 from tanjunchen/move-func-20200406
move function RemoveTaintOffNode in test/e2e/framework/util.go to subpackage node
This commit is contained in:
		| @@ -10,6 +10,7 @@ go_library( | |||||||
|     importpath = "k8s.io/kubernetes/test/e2e/framework/node", |     importpath = "k8s.io/kubernetes/test/e2e/framework/node", | ||||||
|     visibility = ["//visibility:public"], |     visibility = ["//visibility:public"], | ||||||
|     deps = [ |     deps = [ | ||||||
|  |         "//pkg/controller:go_default_library", | ||||||
|         "//pkg/scheduler/framework/v1alpha1:go_default_library", |         "//pkg/scheduler/framework/v1alpha1:go_default_library", | ||||||
|         "//staging/src/k8s.io/api/core/v1:go_default_library", |         "//staging/src/k8s.io/api/core/v1:go_default_library", | ||||||
|         "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", |         "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", | ||||||
| @@ -22,6 +23,7 @@ go_library( | |||||||
|         "//test/e2e/system:go_default_library", |         "//test/e2e/system:go_default_library", | ||||||
|         "//test/utils:go_default_library", |         "//test/utils:go_default_library", | ||||||
|         "//test/utils/image:go_default_library", |         "//test/utils/image:go_default_library", | ||||||
|  |         "//vendor/github.com/onsi/ginkgo:go_default_library", | ||||||
|         "//vendor/github.com/onsi/gomega:go_default_library", |         "//vendor/github.com/onsi/gomega:go_default_library", | ||||||
|         "//vendor/k8s.io/utils/pointer:go_default_library", |         "//vendor/k8s.io/utils/pointer:go_default_library", | ||||||
|     ], |     ], | ||||||
|   | |||||||
| @@ -23,6 +23,7 @@ import ( | |||||||
| 	"strings" | 	"strings" | ||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
|  | 	"github.com/onsi/ginkgo" | ||||||
| 	"github.com/onsi/gomega" | 	"github.com/onsi/gomega" | ||||||
|  |  | ||||||
| 	v1 "k8s.io/api/core/v1" | 	v1 "k8s.io/api/core/v1" | ||||||
| @@ -30,6 +31,7 @@ import ( | |||||||
| 	"k8s.io/apimachinery/pkg/util/rand" | 	"k8s.io/apimachinery/pkg/util/rand" | ||||||
| 	"k8s.io/apimachinery/pkg/util/sets" | 	"k8s.io/apimachinery/pkg/util/sets" | ||||||
| 	clientset "k8s.io/client-go/kubernetes" | 	clientset "k8s.io/client-go/kubernetes" | ||||||
|  | 	"k8s.io/kubernetes/pkg/controller" | ||||||
| 	schedfwk "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1" | 	schedfwk "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1" | ||||||
| 	e2elog "k8s.io/kubernetes/test/e2e/framework/log" | 	e2elog "k8s.io/kubernetes/test/e2e/framework/log" | ||||||
| 	"k8s.io/kubernetes/test/e2e/system" | 	"k8s.io/kubernetes/test/e2e/system" | ||||||
| @@ -556,3 +558,33 @@ func CreatePodsPerNodeForSimpleApp(c clientset.Interface, namespace, appName str | |||||||
| 	} | 	} | ||||||
| 	return podLabels | 	return podLabels | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // RemoveTaintOffNode removes the given taint from the given node. | ||||||
|  | func RemoveTaintOffNode(c clientset.Interface, nodeName string, taint v1.Taint) { | ||||||
|  | 	err := controller.RemoveTaintOffNode(c, nodeName, nil, &taint) | ||||||
|  |  | ||||||
|  | 	// TODO use wrapper methods in expect.go after removing core e2e dependency on node | ||||||
|  | 	gomega.ExpectWithOffset(2, err).NotTo(gomega.HaveOccurred()) | ||||||
|  | 	verifyThatTaintIsGone(c, nodeName, &taint) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func verifyThatTaintIsGone(c clientset.Interface, nodeName string, taint *v1.Taint) { | ||||||
|  | 	ginkgo.By("verifying the node doesn't have the taint " + taint.ToString()) | ||||||
|  | 	nodeUpdated, err := c.CoreV1().Nodes().Get(context.TODO(), nodeName, metav1.GetOptions{}) | ||||||
|  |  | ||||||
|  | 	// TODO use wrapper methods in expect.go after removing core e2e dependency on node | ||||||
|  | 	gomega.ExpectWithOffset(2, err).NotTo(gomega.HaveOccurred()) | ||||||
|  | 	if taintExists(nodeUpdated.Spec.Taints, taint) { | ||||||
|  | 		e2elog.Failf("Failed removing taint " + taint.ToString() + " of the node " + nodeName) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // taintExists checks if the given taint exists in list of taints. Returns true if exists false otherwise. | ||||||
|  | func taintExists(taints []v1.Taint, taintToFind *v1.Taint) bool { | ||||||
|  | 	for _, taint := range taints { | ||||||
|  | 		if taint.MatchTaint(taintToFind) { | ||||||
|  | 			return true | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	return false | ||||||
|  | } | ||||||
|   | |||||||
| @@ -978,12 +978,6 @@ func ExpectNodeHasLabel(c clientset.Interface, nodeName string, labelKey string, | |||||||
| 	ExpectEqual(node.Labels[labelKey], labelValue) | 	ExpectEqual(node.Labels[labelKey], labelValue) | ||||||
| } | } | ||||||
|  |  | ||||||
| // RemoveTaintOffNode removes the given taint from the given node. |  | ||||||
| func RemoveTaintOffNode(c clientset.Interface, nodeName string, taint v1.Taint) { |  | ||||||
| 	ExpectNoError(controller.RemoveTaintOffNode(c, nodeName, nil, &taint)) |  | ||||||
| 	verifyThatTaintIsGone(c, nodeName, &taint) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // AddOrUpdateTaintOnNode adds the given taint to the given node or updates taint. | // AddOrUpdateTaintOnNode adds the given taint to the given node or updates taint. | ||||||
| func AddOrUpdateTaintOnNode(c clientset.Interface, nodeName string, taint v1.Taint) { | func AddOrUpdateTaintOnNode(c clientset.Interface, nodeName string, taint v1.Taint) { | ||||||
| 	ExpectNoError(controller.AddOrUpdateTaintOnNode(c, nodeName, &taint)) | 	ExpectNoError(controller.AddOrUpdateTaintOnNode(c, nodeName, &taint)) | ||||||
| @@ -999,15 +993,6 @@ func RemoveLabelOffNode(c clientset.Interface, nodeName string, labelKey string) | |||||||
| 	ExpectNoError(testutils.VerifyLabelsRemoved(c, nodeName, []string{labelKey})) | 	ExpectNoError(testutils.VerifyLabelsRemoved(c, nodeName, []string{labelKey})) | ||||||
| } | } | ||||||
|  |  | ||||||
| func verifyThatTaintIsGone(c clientset.Interface, nodeName string, taint *v1.Taint) { |  | ||||||
| 	ginkgo.By("verifying the node doesn't have the taint " + taint.ToString()) |  | ||||||
| 	nodeUpdated, err := c.CoreV1().Nodes().Get(context.TODO(), nodeName, metav1.GetOptions{}) |  | ||||||
| 	ExpectNoError(err) |  | ||||||
| 	if taintExists(nodeUpdated.Spec.Taints, taint) { |  | ||||||
| 		Failf("Failed removing taint " + taint.ToString() + " of the node " + nodeName) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // ExpectNodeHasTaint expects that the node has the given taint. | // ExpectNodeHasTaint expects that the node has the given taint. | ||||||
| func ExpectNodeHasTaint(c clientset.Interface, nodeName string, taint *v1.Taint) { | func ExpectNodeHasTaint(c clientset.Interface, nodeName string, taint *v1.Taint) { | ||||||
| 	ginkgo.By("verifying the node has the taint " + taint.ToString()) | 	ginkgo.By("verifying the node has the taint " + taint.ToString()) | ||||||
|   | |||||||
| @@ -35,6 +35,7 @@ go_library( | |||||||
|         "//test/e2e/framework/auth:go_default_library", |         "//test/e2e/framework/auth:go_default_library", | ||||||
|         "//test/e2e/framework/endpoints:go_default_library", |         "//test/e2e/framework/endpoints:go_default_library", | ||||||
|         "//test/e2e/framework/kubectl:go_default_library", |         "//test/e2e/framework/kubectl:go_default_library", | ||||||
|  |         "//test/e2e/framework/node:go_default_library", | ||||||
|         "//test/e2e/framework/pod:go_default_library", |         "//test/e2e/framework/pod:go_default_library", | ||||||
|         "//test/e2e/framework/service:go_default_library", |         "//test/e2e/framework/service:go_default_library", | ||||||
|         "//test/e2e/framework/testfiles:go_default_library", |         "//test/e2e/framework/testfiles:go_default_library", | ||||||
|   | |||||||
| @@ -65,6 +65,7 @@ import ( | |||||||
| 	e2eauth "k8s.io/kubernetes/test/e2e/framework/auth" | 	e2eauth "k8s.io/kubernetes/test/e2e/framework/auth" | ||||||
| 	e2eendpoints "k8s.io/kubernetes/test/e2e/framework/endpoints" | 	e2eendpoints "k8s.io/kubernetes/test/e2e/framework/endpoints" | ||||||
| 	e2ekubectl "k8s.io/kubernetes/test/e2e/framework/kubectl" | 	e2ekubectl "k8s.io/kubernetes/test/e2e/framework/kubectl" | ||||||
|  | 	e2enode "k8s.io/kubernetes/test/e2e/framework/node" | ||||||
| 	e2epod "k8s.io/kubernetes/test/e2e/framework/pod" | 	e2epod "k8s.io/kubernetes/test/e2e/framework/pod" | ||||||
| 	e2eservice "k8s.io/kubernetes/test/e2e/framework/service" | 	e2eservice "k8s.io/kubernetes/test/e2e/framework/service" | ||||||
| 	e2etestfiles "k8s.io/kubernetes/test/e2e/framework/testfiles" | 	e2etestfiles "k8s.io/kubernetes/test/e2e/framework/testfiles" | ||||||
| @@ -1604,7 +1605,7 @@ metadata: | |||||||
|  |  | ||||||
| 			ginkgo.By("adding the taint " + testTaint.ToString() + " to a node") | 			ginkgo.By("adding the taint " + testTaint.ToString() + " to a node") | ||||||
| 			runKubectlRetryOrDie(ns, "taint", "nodes", nodeName, testTaint.ToString()) | 			runKubectlRetryOrDie(ns, "taint", "nodes", nodeName, testTaint.ToString()) | ||||||
| 			defer framework.RemoveTaintOffNode(f.ClientSet, nodeName, testTaint) | 			defer e2enode.RemoveTaintOffNode(f.ClientSet, nodeName, testTaint) | ||||||
|  |  | ||||||
| 			ginkgo.By("verifying the node has the taint " + testTaint.ToString()) | 			ginkgo.By("verifying the node has the taint " + testTaint.ToString()) | ||||||
| 			output := runKubectlRetryOrDie(ns, "describe", "node", nodeName) | 			output := runKubectlRetryOrDie(ns, "describe", "node", nodeName) | ||||||
| @@ -1635,7 +1636,7 @@ metadata: | |||||||
|  |  | ||||||
| 			ginkgo.By("adding the taint " + testTaint.ToString() + " to a node") | 			ginkgo.By("adding the taint " + testTaint.ToString() + " to a node") | ||||||
| 			runKubectlRetryOrDie(ns, "taint", "nodes", nodeName, testTaint.ToString()) | 			runKubectlRetryOrDie(ns, "taint", "nodes", nodeName, testTaint.ToString()) | ||||||
| 			defer framework.RemoveTaintOffNode(f.ClientSet, nodeName, testTaint) | 			defer e2enode.RemoveTaintOffNode(f.ClientSet, nodeName, testTaint) | ||||||
|  |  | ||||||
| 			ginkgo.By("verifying the node has the taint " + testTaint.ToString()) | 			ginkgo.By("verifying the node has the taint " + testTaint.ToString()) | ||||||
| 			output := runKubectlRetryOrDie(ns, "describe", "node", nodeName) | 			output := runKubectlRetryOrDie(ns, "describe", "node", nodeName) | ||||||
| @@ -1653,7 +1654,7 @@ metadata: | |||||||
| 			} | 			} | ||||||
| 			ginkgo.By("adding another taint " + newTestTaint.ToString() + " to the node") | 			ginkgo.By("adding another taint " + newTestTaint.ToString() + " to the node") | ||||||
| 			runKubectlRetryOrDie(ns, "taint", "nodes", nodeName, newTestTaint.ToString()) | 			runKubectlRetryOrDie(ns, "taint", "nodes", nodeName, newTestTaint.ToString()) | ||||||
| 			defer framework.RemoveTaintOffNode(f.ClientSet, nodeName, newTestTaint) | 			defer e2enode.RemoveTaintOffNode(f.ClientSet, nodeName, newTestTaint) | ||||||
|  |  | ||||||
| 			ginkgo.By("verifying the node has the taint " + newTestTaint.ToString()) | 			ginkgo.By("verifying the node has the taint " + newTestTaint.ToString()) | ||||||
| 			output = runKubectlRetryOrDie(ns, "describe", "node", nodeName) | 			output = runKubectlRetryOrDie(ns, "describe", "node", nodeName) | ||||||
| @@ -1671,7 +1672,7 @@ metadata: | |||||||
| 			} | 			} | ||||||
| 			ginkgo.By("adding NoExecute taint " + noExecuteTaint.ToString() + " to the node") | 			ginkgo.By("adding NoExecute taint " + noExecuteTaint.ToString() + " to the node") | ||||||
| 			runKubectlRetryOrDie(ns, "taint", "nodes", nodeName, noExecuteTaint.ToString()) | 			runKubectlRetryOrDie(ns, "taint", "nodes", nodeName, noExecuteTaint.ToString()) | ||||||
| 			defer framework.RemoveTaintOffNode(f.ClientSet, nodeName, noExecuteTaint) | 			defer e2enode.RemoveTaintOffNode(f.ClientSet, nodeName, noExecuteTaint) | ||||||
|  |  | ||||||
| 			ginkgo.By("verifying the node has the taint " + noExecuteTaint.ToString()) | 			ginkgo.By("verifying the node has the taint " + noExecuteTaint.ToString()) | ||||||
| 			output = runKubectlRetryOrDie(ns, "describe", "node", nodeName) | 			output = runKubectlRetryOrDie(ns, "describe", "node", nodeName) | ||||||
|   | |||||||
| @@ -92,7 +92,7 @@ var _ = ginkgo.Describe("[sig-node] RuntimeClass", func() { | |||||||
| 		} | 		} | ||||||
| 		framework.AddOrUpdateTaintOnNode(f.ClientSet, nodeName, taint) | 		framework.AddOrUpdateTaintOnNode(f.ClientSet, nodeName, taint) | ||||||
| 		framework.ExpectNodeHasTaint(f.ClientSet, nodeName, &taint) | 		framework.ExpectNodeHasTaint(f.ClientSet, nodeName, &taint) | ||||||
| 		defer framework.RemoveTaintOffNode(f.ClientSet, nodeName, taint) | 		defer e2enode.RemoveTaintOffNode(f.ClientSet, nodeName, taint) | ||||||
|  |  | ||||||
| 		ginkgo.By("Trying to create runtimeclass and pod") | 		ginkgo.By("Trying to create runtimeclass and pod") | ||||||
| 		runtimeClass := newRuntimeClass(f.Namespace.Name, "non-conflict-runtimeclass", framework.TestContext.ContainerRuntime) | 		runtimeClass := newRuntimeClass(f.Namespace.Name, "non-conflict-runtimeclass", framework.TestContext.ContainerRuntime) | ||||||
|   | |||||||
| @@ -190,7 +190,7 @@ var _ = SIGDescribe("NoExecuteTaintManager Single Pod [Serial]", func() { | |||||||
| 		testTaint := getTestTaint() | 		testTaint := getTestTaint() | ||||||
| 		framework.AddOrUpdateTaintOnNode(cs, nodeName, testTaint) | 		framework.AddOrUpdateTaintOnNode(cs, nodeName, testTaint) | ||||||
| 		framework.ExpectNodeHasTaint(cs, nodeName, &testTaint) | 		framework.ExpectNodeHasTaint(cs, nodeName, &testTaint) | ||||||
| 		defer framework.RemoveTaintOffNode(cs, nodeName, testTaint) | 		defer e2enode.RemoveTaintOffNode(cs, nodeName, testTaint) | ||||||
|  |  | ||||||
| 		// Wait a bit | 		// Wait a bit | ||||||
| 		ginkgo.By("Waiting for Pod to be deleted") | 		ginkgo.By("Waiting for Pod to be deleted") | ||||||
| @@ -222,7 +222,7 @@ var _ = SIGDescribe("NoExecuteTaintManager Single Pod [Serial]", func() { | |||||||
| 		testTaint := getTestTaint() | 		testTaint := getTestTaint() | ||||||
| 		framework.AddOrUpdateTaintOnNode(cs, nodeName, testTaint) | 		framework.AddOrUpdateTaintOnNode(cs, nodeName, testTaint) | ||||||
| 		framework.ExpectNodeHasTaint(cs, nodeName, &testTaint) | 		framework.ExpectNodeHasTaint(cs, nodeName, &testTaint) | ||||||
| 		defer framework.RemoveTaintOffNode(cs, nodeName, testTaint) | 		defer e2enode.RemoveTaintOffNode(cs, nodeName, testTaint) | ||||||
|  |  | ||||||
| 		// Wait a bit | 		// Wait a bit | ||||||
| 		ginkgo.By("Waiting for Pod to be deleted") | 		ginkgo.By("Waiting for Pod to be deleted") | ||||||
| @@ -255,7 +255,7 @@ var _ = SIGDescribe("NoExecuteTaintManager Single Pod [Serial]", func() { | |||||||
| 		testTaint := getTestTaint() | 		testTaint := getTestTaint() | ||||||
| 		framework.AddOrUpdateTaintOnNode(cs, nodeName, testTaint) | 		framework.AddOrUpdateTaintOnNode(cs, nodeName, testTaint) | ||||||
| 		framework.ExpectNodeHasTaint(cs, nodeName, &testTaint) | 		framework.ExpectNodeHasTaint(cs, nodeName, &testTaint) | ||||||
| 		defer framework.RemoveTaintOffNode(cs, nodeName, testTaint) | 		defer e2enode.RemoveTaintOffNode(cs, nodeName, testTaint) | ||||||
|  |  | ||||||
| 		// Wait a bit | 		// Wait a bit | ||||||
| 		ginkgo.By("Waiting to see if a Pod won't be deleted") | 		ginkgo.By("Waiting to see if a Pod won't be deleted") | ||||||
| @@ -305,7 +305,7 @@ var _ = SIGDescribe("NoExecuteTaintManager Single Pod [Serial]", func() { | |||||||
| 		taintRemoved := false | 		taintRemoved := false | ||||||
| 		defer func() { | 		defer func() { | ||||||
| 			if !taintRemoved { | 			if !taintRemoved { | ||||||
| 				framework.RemoveTaintOffNode(cs, nodeName, testTaint) | 				e2enode.RemoveTaintOffNode(cs, nodeName, testTaint) | ||||||
| 			} | 			} | ||||||
| 		}() | 		}() | ||||||
|  |  | ||||||
| @@ -322,7 +322,7 @@ var _ = SIGDescribe("NoExecuteTaintManager Single Pod [Serial]", func() { | |||||||
|  |  | ||||||
| 		// 4. Remove the taint | 		// 4. Remove the taint | ||||||
| 		framework.Logf("Removing taint from Node") | 		framework.Logf("Removing taint from Node") | ||||||
| 		framework.RemoveTaintOffNode(cs, nodeName, testTaint) | 		e2enode.RemoveTaintOffNode(cs, nodeName, testTaint) | ||||||
| 		taintRemoved = true | 		taintRemoved = true | ||||||
|  |  | ||||||
| 		// 5. See if Pod won't be evicted. | 		// 5. See if Pod won't be evicted. | ||||||
| @@ -376,11 +376,11 @@ var _ = SIGDescribe("NoExecuteTaintManager Multiple Pods [Serial]", func() { | |||||||
| 		testTaint := getTestTaint() | 		testTaint := getTestTaint() | ||||||
| 		framework.AddOrUpdateTaintOnNode(cs, nodeName1, testTaint) | 		framework.AddOrUpdateTaintOnNode(cs, nodeName1, testTaint) | ||||||
| 		framework.ExpectNodeHasTaint(cs, nodeName1, &testTaint) | 		framework.ExpectNodeHasTaint(cs, nodeName1, &testTaint) | ||||||
| 		defer framework.RemoveTaintOffNode(cs, nodeName1, testTaint) | 		defer e2enode.RemoveTaintOffNode(cs, nodeName1, testTaint) | ||||||
| 		if nodeName2 != nodeName1 { | 		if nodeName2 != nodeName1 { | ||||||
| 			framework.AddOrUpdateTaintOnNode(cs, nodeName2, testTaint) | 			framework.AddOrUpdateTaintOnNode(cs, nodeName2, testTaint) | ||||||
| 			framework.ExpectNodeHasTaint(cs, nodeName2, &testTaint) | 			framework.ExpectNodeHasTaint(cs, nodeName2, &testTaint) | ||||||
| 			defer framework.RemoveTaintOffNode(cs, nodeName2, testTaint) | 			defer e2enode.RemoveTaintOffNode(cs, nodeName2, testTaint) | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		// Wait a bit | 		// Wait a bit | ||||||
| @@ -449,7 +449,7 @@ var _ = SIGDescribe("NoExecuteTaintManager Multiple Pods [Serial]", func() { | |||||||
| 		testTaint := getTestTaint() | 		testTaint := getTestTaint() | ||||||
| 		framework.AddOrUpdateTaintOnNode(cs, nodeName, testTaint) | 		framework.AddOrUpdateTaintOnNode(cs, nodeName, testTaint) | ||||||
| 		framework.ExpectNodeHasTaint(cs, nodeName, &testTaint) | 		framework.ExpectNodeHasTaint(cs, nodeName, &testTaint) | ||||||
| 		defer framework.RemoveTaintOffNode(cs, nodeName, testTaint) | 		defer e2enode.RemoveTaintOffNode(cs, nodeName, testTaint) | ||||||
|  |  | ||||||
| 		// 3. Wait to see if both pods get evicted in between [5, 25] seconds | 		// 3. Wait to see if both pods get evicted in between [5, 25] seconds | ||||||
| 		ginkgo.By("Waiting for Pod1 and Pod2 to be deleted") | 		ginkgo.By("Waiting for Pod1 and Pod2 to be deleted") | ||||||
|   | |||||||
| @@ -587,7 +587,7 @@ var _ = SIGDescribe("SchedulerPredicates [Serial]", func() { | |||||||
| 		} | 		} | ||||||
| 		framework.AddOrUpdateTaintOnNode(cs, nodeName, testTaint) | 		framework.AddOrUpdateTaintOnNode(cs, nodeName, testTaint) | ||||||
| 		framework.ExpectNodeHasTaint(cs, nodeName, &testTaint) | 		framework.ExpectNodeHasTaint(cs, nodeName, &testTaint) | ||||||
| 		defer framework.RemoveTaintOffNode(cs, nodeName, testTaint) | 		defer e2enode.RemoveTaintOffNode(cs, nodeName, testTaint) | ||||||
|  |  | ||||||
| 		ginkgo.By("Trying to apply a random label on the found node.") | 		ginkgo.By("Trying to apply a random label on the found node.") | ||||||
| 		labelKey := fmt.Sprintf("kubernetes.io/e2e-label-key-%s", string(uuid.NewUUID())) | 		labelKey := fmt.Sprintf("kubernetes.io/e2e-label-key-%s", string(uuid.NewUUID())) | ||||||
| @@ -630,7 +630,7 @@ var _ = SIGDescribe("SchedulerPredicates [Serial]", func() { | |||||||
| 		} | 		} | ||||||
| 		framework.AddOrUpdateTaintOnNode(cs, nodeName, testTaint) | 		framework.AddOrUpdateTaintOnNode(cs, nodeName, testTaint) | ||||||
| 		framework.ExpectNodeHasTaint(cs, nodeName, &testTaint) | 		framework.ExpectNodeHasTaint(cs, nodeName, &testTaint) | ||||||
| 		defer framework.RemoveTaintOffNode(cs, nodeName, testTaint) | 		defer e2enode.RemoveTaintOffNode(cs, nodeName, testTaint) | ||||||
|  |  | ||||||
| 		ginkgo.By("Trying to apply a random label on the found node.") | 		ginkgo.By("Trying to apply a random label on the found node.") | ||||||
| 		labelKey := fmt.Sprintf("kubernetes.io/e2e-label-key-%s", string(uuid.NewUUID())) | 		labelKey := fmt.Sprintf("kubernetes.io/e2e-label-key-%s", string(uuid.NewUUID())) | ||||||
| @@ -904,7 +904,7 @@ func getRequestedStorageEphemeralStorage(pod v1.Pod) int64 { | |||||||
| // from the given node upon invocation. | // from the given node upon invocation. | ||||||
| func removeTaintFromNodeAction(cs clientset.Interface, nodeName string, testTaint v1.Taint) Action { | func removeTaintFromNodeAction(cs clientset.Interface, nodeName string, testTaint v1.Taint) Action { | ||||||
| 	return func() error { | 	return func() error { | ||||||
| 		framework.RemoveTaintOffNode(cs, nodeName, testTaint) | 		e2enode.RemoveTaintOffNode(cs, nodeName, testTaint) | ||||||
| 		return nil | 		return nil | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|   | |||||||
| @@ -314,14 +314,14 @@ var _ = SIGDescribe("SchedulerPriorities [Serial]", func() { | |||||||
| 		for i := 0; i < 10; i++ { | 		for i := 0; i < 10; i++ { | ||||||
| 			testTaint := addRandomTaintToNode(cs, nodeName) | 			testTaint := addRandomTaintToNode(cs, nodeName) | ||||||
| 			tolerations = append(tolerations, v1.Toleration{Key: testTaint.Key, Value: testTaint.Value, Effect: testTaint.Effect}) | 			tolerations = append(tolerations, v1.Toleration{Key: testTaint.Key, Value: testTaint.Value, Effect: testTaint.Effect}) | ||||||
| 			defer framework.RemoveTaintOffNode(cs, nodeName, *testTaint) | 			defer e2enode.RemoveTaintOffNode(cs, nodeName, *testTaint) | ||||||
| 		} | 		} | ||||||
| 		ginkgo.By("Adding 10 intolerable taints to all other nodes") | 		ginkgo.By("Adding 10 intolerable taints to all other nodes") | ||||||
| 		for i := 1; i < len(nodeList.Items); i++ { | 		for i := 1; i < len(nodeList.Items); i++ { | ||||||
| 			node := nodeList.Items[i] | 			node := nodeList.Items[i] | ||||||
| 			for i := 0; i < 10; i++ { | 			for i := 0; i < 10; i++ { | ||||||
| 				testTaint := addRandomTaintToNode(cs, node.Name) | 				testTaint := addRandomTaintToNode(cs, node.Name) | ||||||
| 				defer framework.RemoveTaintOffNode(cs, node.Name, *testTaint) | 				defer e2enode.RemoveTaintOffNode(cs, node.Name, *testTaint) | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Kubernetes Prow Robot
					Kubernetes Prow Robot