make kubectl respect taint effect NoExecute
This commit is contained in:
		@@ -43,7 +43,7 @@ func ParseTaint(st string) (v1.Taint, error) {
 | 
				
			|||||||
		return taint, fmt.Errorf("invalid taint spec: %v, %s", st, strings.Join(errs, "; "))
 | 
							return taint, fmt.Errorf("invalid taint spec: %v, %s", st, strings.Join(errs, "; "))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if effect != v1.TaintEffectNoSchedule && effect != v1.TaintEffectPreferNoSchedule {
 | 
						if effect != v1.TaintEffectNoSchedule && effect != v1.TaintEffectPreferNoSchedule && effect != v1.TaintEffectNoExecute {
 | 
				
			||||||
		return taint, fmt.Errorf("invalid taint spec: %v, unsupported taint effect", st)
 | 
							return taint, fmt.Errorf("invalid taint spec: %v, unsupported taint effect", st)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -47,6 +47,10 @@ func TestTaintsVar(t *testing.T) {
 | 
				
			|||||||
				{Key: "bing", Value: "bang", Effect: api.TaintEffectPreferNoSchedule},
 | 
									{Key: "bing", Value: "bang", Effect: api.TaintEffectPreferNoSchedule},
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								f: "--t=dedicated-for=user1:NoExecute",
 | 
				
			||||||
 | 
								t: []api.Taint{{Key: "dedicated-for", Value: "user1", Effect: "NoExecute"}},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for i, c := range cases {
 | 
						for i, c := range cases {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1467,6 +1467,24 @@ var _ = framework.KubeDescribe("Kubectl client", func() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
			checkOutput(output, requiredStrings)
 | 
								checkOutput(output, requiredStrings)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								noExecuteTaint := v1.Taint{
 | 
				
			||||||
 | 
									Key:    testTaint.Key,
 | 
				
			||||||
 | 
									Value:  "testing-taint-value-no-execute",
 | 
				
			||||||
 | 
									Effect: v1.TaintEffectNoExecute,
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								By("adding NoExecute taint " + noExecuteTaint.ToString() + " to the node")
 | 
				
			||||||
 | 
								runKubectlRetryOrDie("taint", "nodes", nodeName, noExecuteTaint.ToString())
 | 
				
			||||||
 | 
								defer framework.RemoveTaintOffNode(f.ClientSet, nodeName, noExecuteTaint)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								By("verifying the node has the taint " + noExecuteTaint.ToString())
 | 
				
			||||||
 | 
								output = runKubectlRetryOrDie("describe", "node", nodeName)
 | 
				
			||||||
 | 
								requiredStrings = [][]string{
 | 
				
			||||||
 | 
									{"Name:", nodeName},
 | 
				
			||||||
 | 
									{"Taints:"},
 | 
				
			||||||
 | 
									{noExecuteTaint.ToString()},
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								checkOutput(output, requiredStrings)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			By("removing all taints that have the same key " + testTaint.Key + " of the node")
 | 
								By("removing all taints that have the same key " + testTaint.Key + " of the node")
 | 
				
			||||||
			runKubectlRetryOrDie("taint", "nodes", nodeName, testTaint.Key+"-")
 | 
								runKubectlRetryOrDie("taint", "nodes", nodeName, testTaint.Key+"-")
 | 
				
			||||||
			By("verifying the node doesn't have the taints that have the same key " + testTaint.Key)
 | 
								By("verifying the node doesn't have the taints that have the same key " + testTaint.Key)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user