From 55ba77970268b5ff83dde86fa968a3ab564b591d Mon Sep 17 00:00:00 2001 From: Adam Harrison Date: Thu, 3 Aug 2017 08:53:24 +0100 Subject: [PATCH] Move test for node schedulability Test for schedulability immediately prior to each reboot check instead of once at startup, thereby accomodating external changes to this value during the lifetime of the daemon. --- cmd/kured/main.go | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/cmd/kured/main.go b/cmd/kured/main.go index b893f91..e836a88 100644 --- a/cmd/kured/main.go +++ b/cmd/kured/main.go @@ -220,24 +220,26 @@ func root(cmd *cobra.Command, args []string) { uncordon(nodeID) } release(lock) - } else { - node, err := client.CoreV1().Nodes().Get(nodeID) - if err != nil { - log.Fatal(err) - } - nodeMeta.Unschedulable = node.Spec.Unschedulable } source := rand.NewSource(time.Now().UnixNano()) tick := delaytick.New(source, time.Minute*time.Duration(period)) for _ = range tick { - if rebootRequired() && !rebootBlocked() && acquire(lock, &nodeMeta) { - if !nodeMeta.Unschedulable { - drain(nodeID) - waitForDrain(client, nodeID) + if rebootRequired() && !rebootBlocked() { + node, err := client.CoreV1().Nodes().Get(nodeID) + if err != nil { + log.Fatal(err) + } + nodeMeta.Unschedulable = node.Spec.Unschedulable + + if acquire(lock, &nodeMeta) { + if !nodeMeta.Unschedulable { + drain(nodeID) + waitForDrain(client, nodeID) + } + reboot() + break } - reboot() - break } }