fixed case where, no ready label is defined, but node is unscheduable (#1162)
* fixed case where, no ready label is defined, but node is unscheduable
This commit is contained in:
		
							parent
							
								
									e97235aa39
								
							
						
					
					
						commit
						7730ecfdec
					
				|  | @ -76,7 +76,7 @@ func (c *Controller) nodeUpdate(prev, cur interface{}) { | |||
| } | ||||
| 
 | ||||
| func (c *Controller) nodeIsReady(node *v1.Node) bool { | ||||
| 	return (!node.Spec.Unschedulable || util.MapContains(node.Labels, c.opConfig.NodeReadinessLabel) || | ||||
| 	return (!node.Spec.Unschedulable || (len(c.opConfig.NodeReadinessLabel) > 0 && util.MapContains(node.Labels, c.opConfig.NodeReadinessLabel)) || | ||||
| 		util.MapContains(node.Labels, map[string]string{"master": "true"})) | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -15,7 +15,6 @@ const ( | |||
| 
 | ||||
| func newNodeTestController() *Controller { | ||||
| 	var controller = NewController(&spec.ControllerConfig{}, "node-test") | ||||
| 	controller.opConfig.NodeReadinessLabel = map[string]string{readyLabel: readyValue} | ||||
| 	return controller | ||||
| } | ||||
| 
 | ||||
|  | @ -36,27 +35,58 @@ var nodeTestController = newNodeTestController() | |||
| func TestNodeIsReady(t *testing.T) { | ||||
| 	testName := "TestNodeIsReady" | ||||
| 	var testTable = []struct { | ||||
| 		in  *v1.Node | ||||
| 		out bool | ||||
| 		in             *v1.Node | ||||
| 		out            bool | ||||
| 		readinessLabel map[string]string | ||||
| 	}{ | ||||
| 		{ | ||||
| 			in:  makeNode(map[string]string{"foo": "bar"}, true), | ||||
| 			out: true, | ||||
| 			in:             makeNode(map[string]string{"foo": "bar"}, true), | ||||
| 			out:            true, | ||||
| 			readinessLabel: map[string]string{readyLabel: readyValue}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			in:  makeNode(map[string]string{"foo": "bar"}, false), | ||||
| 			out: false, | ||||
| 			in:             makeNode(map[string]string{"foo": "bar"}, false), | ||||
| 			out:            false, | ||||
| 			readinessLabel: map[string]string{readyLabel: readyValue}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			in:  makeNode(map[string]string{readyLabel: readyValue}, false), | ||||
| 			out: true, | ||||
| 			in:             makeNode(map[string]string{readyLabel: readyValue}, false), | ||||
| 			out:            true, | ||||
| 			readinessLabel: map[string]string{readyLabel: readyValue}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			in:  makeNode(map[string]string{"foo": "bar", "master": "true"}, false), | ||||
| 			out: true, | ||||
| 			in:             makeNode(map[string]string{"foo": "bar", "master": "true"}, false), | ||||
| 			out:            true, | ||||
| 			readinessLabel: map[string]string{readyLabel: readyValue}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			in:             makeNode(map[string]string{"foo": "bar", "master": "true"}, false), | ||||
| 			out:            true, | ||||
| 			readinessLabel: map[string]string{readyLabel: readyValue}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			in:             makeNode(map[string]string{"foo": "bar"}, true), | ||||
| 			out:            true, | ||||
| 			readinessLabel: map[string]string{}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			in:             makeNode(map[string]string{"foo": "bar"}, false), | ||||
| 			out:            false, | ||||
| 			readinessLabel: map[string]string{}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			in:             makeNode(map[string]string{readyLabel: readyValue}, false), | ||||
| 			out:            false, | ||||
| 			readinessLabel: map[string]string{}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			in:             makeNode(map[string]string{"foo": "bar", "master": "true"}, false), | ||||
| 			out:            true, | ||||
| 			readinessLabel: map[string]string{}, | ||||
| 		}, | ||||
| 	} | ||||
| 	for _, tt := range testTable { | ||||
| 		nodeTestController.opConfig.NodeReadinessLabel = tt.readinessLabel | ||||
| 		if isReady := nodeTestController.nodeIsReady(tt.in); isReady != tt.out { | ||||
| 			t.Errorf("%s: expected response %t doesn't match the actual %t for the node %#v", | ||||
| 				testName, tt.out, isReady, tt.in) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue