aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository/src/main
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2023-06-13 15:15:10 +0200
committerMartin Polden <mpolden@mpolden.no>2023-06-13 15:21:19 +0200
commit5dc4afb4614c7b5d8e4aba471f367af7b017424a (patch)
tree488abe55126eb587077f313ce058a5d9991c2176 /node-repository/src/main
parent15e633f78e1524fab38361b50d641a28e701ede0 (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.java8
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java9
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);
}