diff options
author | Martin Polden <mpolden@mpolden.no> | 2023-06-13 15:15:10 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2023-06-13 15:21:19 +0200 |
commit | 5dc4afb4614c7b5d8e4aba471f367af7b017424a (patch) | |
tree | 488abe55126eb587077f313ce058a5d9991c2176 /node-repository/src/main | |
parent | 15e633f78e1524fab38361b50d641a28e701ede0 (diff) |
Parking by operator cancels retirement
Diffstat (limited to 'node-repository/src/main')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java | 8 | ||||
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java | 9 |
2 files changed, 14 insertions, 3 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java index fe4f4987d34..b8e237b57cf 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java @@ -654,8 +654,12 @@ public final class Node implements Nodelike { /** * This node should not currently be used. - * This state follows the same rules as failed except that it will never be automatically moved out of - * this state. + * + * This state follows the same rules as failed, except that it will never be automatically moved out of + * this state. While a host will never move out of this state, it can still be deprovisioned, as requested by + * its {@link Status} flags. + * + * When an {@link Agent#operator} moves a node to this state, all its status flags will be cleared. */ parked, diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java index 5f9c6974204..b10a371e8bd 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java @@ -466,8 +466,15 @@ public class Nodes { if (node.state() == Node.State.deprovisioned) { illegal(node + " cannot be moved"); } + // Clear all retirement flags when parked by operator + Instant now = clock.instant(); + if (toState == Node.State.parked && agent == Agent.operator) { + if (forceDeprovision) illegal("Cannot force deprovisioning when agent is " + Agent.operator); + node = node.withWantToRetire(false, false, false, false, agent, now) + .withPreferToRetire(false, agent, now); + } if (forceDeprovision) - node = node.withWantToRetire(true, true, agent, clock.instant()); + node = node.withWantToRetire(true, true, agent, now); if (toState == Node.State.deprovisioned) { node = node.with(IP.Config.EMPTY); } |