Add e2e test for DaemonSet node selector updates
This commit is contained in:
		| @@ -143,7 +143,7 @@ var _ = framework.KubeDescribe("Daemon set [Serial]", func() { | |||||||
| 		err = wait.Poll(dsRetryPeriod, dsRetryTimeout, checkRunningOnNoNodes(f, complexLabel)) | 		err = wait.Poll(dsRetryPeriod, dsRetryTimeout, checkRunningOnNoNodes(f, complexLabel)) | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "error waiting for daemon pods to be running on no nodes") | 		Expect(err).NotTo(HaveOccurred(), "error waiting for daemon pods to be running on no nodes") | ||||||
|  |  | ||||||
| 		By("Change label of node, check that daemon pod is launched.") | 		By("Change node label to blue, check that daemon pod is launched.") | ||||||
| 		nodeList := framework.GetReadySchedulableNodesOrDie(f.ClientSet) | 		nodeList := framework.GetReadySchedulableNodesOrDie(f.ClientSet) | ||||||
| 		Expect(len(nodeList.Items)).To(BeNumerically(">", 0)) | 		Expect(len(nodeList.Items)).To(BeNumerically(">", 0)) | ||||||
| 		newNode, err := setDaemonSetNodeLabels(c, nodeList.Items[0].Name, nodeSelector) | 		newNode, err := setDaemonSetNodeLabels(c, nodeList.Items[0].Name, nodeSelector) | ||||||
| @@ -155,11 +155,24 @@ var _ = framework.KubeDescribe("Daemon set [Serial]", func() { | |||||||
| 		err = checkDaemonStatus(f, dsName) | 		err = checkDaemonStatus(f, dsName) | ||||||
| 		Expect(err).NotTo(HaveOccurred()) | 		Expect(err).NotTo(HaveOccurred()) | ||||||
|  |  | ||||||
| 		By("remove the node selector and wait for daemons to be unscheduled") | 		By("Update the node label to green, and wait for daemons to be unscheduled") | ||||||
| 		_, err = setDaemonSetNodeLabels(c, nodeList.Items[0].Name, map[string]string{}) | 		nodeSelector[daemonsetColorLabel] = "green" | ||||||
|  | 		greenNode, err := setDaemonSetNodeLabels(c, nodeList.Items[0].Name, nodeSelector) | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "error removing labels on node") | 		Expect(err).NotTo(HaveOccurred(), "error removing labels on node") | ||||||
| 		Expect(wait.Poll(dsRetryPeriod, dsRetryTimeout, checkRunningOnNoNodes(f, complexLabel))). | 		Expect(wait.Poll(dsRetryPeriod, dsRetryTimeout, checkRunningOnNoNodes(f, complexLabel))). | ||||||
| 			NotTo(HaveOccurred(), "error waiting for daemon pod to not be running on nodes") | 			NotTo(HaveOccurred(), "error waiting for daemon pod to not be running on nodes") | ||||||
|  |  | ||||||
|  | 		By("Update DaemonSet node selector to green, and change its update strategy to RollingUpdate") | ||||||
|  | 		patch := fmt.Sprintf(`{"spec":{"template":{"spec":{"nodeSelector":{"%s":"%s"}}},"updateStrategy":{"type":"RollingUpdate"}}}`, | ||||||
|  | 			daemonsetColorLabel, greenNode.Labels[daemonsetColorLabel]) | ||||||
|  | 		ds, err = c.Extensions().DaemonSets(ns).Patch(dsName, types.StrategicMergePatchType, []byte(patch)) | ||||||
|  | 		Expect(err).NotTo(HaveOccurred(), "error patching daemon set") | ||||||
|  | 		daemonSetLabels, _ = separateDaemonSetNodeLabels(greenNode.Labels) | ||||||
|  | 		Expect(len(daemonSetLabels)).To(Equal(1)) | ||||||
|  | 		err = wait.Poll(dsRetryPeriod, dsRetryTimeout, checkDaemonPodOnNodes(f, complexLabel, []string{greenNode.Name})) | ||||||
|  | 		Expect(err).NotTo(HaveOccurred(), "error waiting for daemon pods to be running on new nodes") | ||||||
|  | 		err = checkDaemonStatus(f, dsName) | ||||||
|  | 		Expect(err).NotTo(HaveOccurred()) | ||||||
| 	}) | 	}) | ||||||
|  |  | ||||||
| 	It("should run and stop complex daemon with node affinity", func() { | 	It("should run and stop complex daemon with node affinity", func() { | ||||||
| @@ -191,7 +204,7 @@ var _ = framework.KubeDescribe("Daemon set [Serial]", func() { | |||||||
| 		err = wait.Poll(dsRetryPeriod, dsRetryTimeout, checkRunningOnNoNodes(f, complexLabel)) | 		err = wait.Poll(dsRetryPeriod, dsRetryTimeout, checkRunningOnNoNodes(f, complexLabel)) | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "error waiting for daemon pods to be running on no nodes") | 		Expect(err).NotTo(HaveOccurred(), "error waiting for daemon pods to be running on no nodes") | ||||||
|  |  | ||||||
| 		By("Change label of node, check that daemon pod is launched.") | 		By("Change node label to blue, check that daemon pod is launched.") | ||||||
| 		nodeList := framework.GetReadySchedulableNodesOrDie(f.ClientSet) | 		nodeList := framework.GetReadySchedulableNodesOrDie(f.ClientSet) | ||||||
| 		Expect(len(nodeList.Items)).To(BeNumerically(">", 0)) | 		Expect(len(nodeList.Items)).To(BeNumerically(">", 0)) | ||||||
| 		newNode, err := setDaemonSetNodeLabels(c, nodeList.Items[0].Name, nodeSelector) | 		newNode, err := setDaemonSetNodeLabels(c, nodeList.Items[0].Name, nodeSelector) | ||||||
| @@ -203,7 +216,7 @@ var _ = framework.KubeDescribe("Daemon set [Serial]", func() { | |||||||
| 		err = checkDaemonStatus(f, dsName) | 		err = checkDaemonStatus(f, dsName) | ||||||
| 		Expect(err).NotTo(HaveOccurred()) | 		Expect(err).NotTo(HaveOccurred()) | ||||||
|  |  | ||||||
| 		By("remove the node selector and wait for daemons to be unscheduled") | 		By("Remove the node label and wait for daemons to be unscheduled") | ||||||
| 		_, err = setDaemonSetNodeLabels(c, nodeList.Items[0].Name, map[string]string{}) | 		_, err = setDaemonSetNodeLabels(c, nodeList.Items[0].Name, map[string]string{}) | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "error removing labels on node") | 		Expect(err).NotTo(HaveOccurred(), "error removing labels on node") | ||||||
| 		Expect(wait.Poll(dsRetryPeriod, dsRetryTimeout, checkRunningOnNoNodes(f, complexLabel))). | 		Expect(wait.Poll(dsRetryPeriod, dsRetryTimeout, checkRunningOnNoNodes(f, complexLabel))). | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Janet Kuo
					Janet Kuo