From 570232b9ec222e130bcfa00494f1857f1cd79819 Mon Sep 17 00:00:00 2001 From: Wojciech Tyczynski Date: Mon, 30 May 2016 13:07:44 +0200 Subject: [PATCH] Fix GetReadySchedulableNodes function --- test/e2e/framework/util.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/test/e2e/framework/util.go b/test/e2e/framework/util.go index 1e4f1ab690c..9fdac812c8e 100644 --- a/test/e2e/framework/util.go +++ b/test/e2e/framework/util.go @@ -2598,7 +2598,10 @@ func GetReadySchedulableNodesOrDie(c *client.Client) (nodes *api.NodeList) { // previous tests may have cause failures of some nodes. Let's skip // 'Not Ready' nodes, just in case (there is no need to fail the test). FilterNodes(nodes, func(node api.Node) bool { - return !node.Spec.Unschedulable && IsNodeConditionSetAsExpected(&node, api.NodeReady, true) + nodeReady := IsNodeConditionSetAsExpected(&node, api.NodeReady, true) + networkReady := IsNodeConditionUnset(&node, api.NodeNetworkUnavailable) || + IsNodeConditionSetAsExpected(&node, api.NodeNetworkUnavailable, false) + return !node.Spec.Unschedulable && nodeReady && networkReady }) return nodes } @@ -3389,6 +3392,15 @@ func IsNodeConditionSetAsExpected(node *api.Node, conditionType api.NodeConditio return false } +func IsNodeConditionUnset(node *api.Node, conditionType api.NodeConditionType) bool { + for _, cond := range node.Status.Conditions { + if cond.Type == conditionType { + return false + } + } + return true +} + // WaitForNodeToBe returns whether node "name's" condition state matches wantTrue // within timeout. If wantTrue is true, it will ensure the node condition status // is ConditionTrue; if it's false, it ensures the node condition is in any state