summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2020-03-20 15:20:11 +0100
committerGitHub <noreply@github.com>2020-03-20 15:20:11 +0100
commitc3ff61a7acc70dff5514e8666a7b7e41f78404db (patch)
tree56c7ff0610c36d7eb8fc95b37bd4fb37f3067ebc
parentf846beeb9f8bf288fd9d844ed8818485bce2e2d8 (diff)
parentf8100933e566ee1e1309930f62a937fcaa8dcb40 (diff)
Merge pull request #12641 from vespa-engine/bratseth/deprovisioned-nodes-have-no-wants
Clear wantToDeproivision and wantToRetire when deprovisioning.
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java8
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java19
2 files changed, 21 insertions, 6 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
index 5a797038f94..05b171f36b0 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
@@ -609,10 +609,14 @@ public class NodeRepository extends AbstractComponent {
children.forEach(child -> requireRemovable(child, true, force));
db.removeNodes(children);
List<Node> removed = new ArrayList<>(children);
- if (zone.cloud().value().equals("aws"))
+ if (zone.cloud().value().equals("aws")) {
db.removeNodes(List.of(node));
- else
+ }
+ else {
+ node = node.withWantToRetire(false, Agent.system, clock.instant());
+ node = node.with(node.status().withWantToDeprovision(false));
move(node, State.deprovisioned, Agent.system, Optional.empty());
+ }
removed.add(node);
return removed;
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java
index 8830204547e..56b848a5cf2 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java
@@ -157,12 +157,23 @@ public class NodeRepositoryTest {
tester.addNode("id2", "host2", "default", NodeType.host);
assertFalse(tester.nodeRepository().getNode("host1").get().history().hasEventAfter(History.Event.Type.deprovisioned, testStart));
+ // Set host 1 properties and remove it
+ Node host1 = tester.nodeRepository().getNode("host1").get();
+ host1 = host1.withWantToRetire(true, Agent.system, tester.nodeRepository().clock().instant());
+ host1 = host1.with(host1.status().withWantToDeprovision(true));
+ tester.nodeRepository().write(host1, tester.nodeRepository().lock(host1));
tester.nodeRepository().removeRecursively("host1");
- assertEquals(Node.State.deprovisioned, tester.nodeRepository().getNode("host1").get().state());
- assertTrue(tester.nodeRepository().getNode("host1").get().history().hasEventAfter(History.Event.Type.deprovisioned, testStart));
- Node existing = tester.addNode("id1", "host1", "default", NodeType.host);
- assertTrue(existing.history().hasEventAfter(History.Event.Type.deprovisioned, testStart));
+ // Host 1 is deprovisioned and unwanted properties are cleared
+ host1 = tester.nodeRepository().getNode("host1").get();
+ assertEquals(Node.State.deprovisioned, host1.state());
+ assertTrue(host1.history().hasEventAfter(History.Event.Type.deprovisioned, testStart));
+ assertFalse(host1.status().wantToRetire());
+ assertFalse(host1.status().wantToDeprovision());
+
+ // Adding it again moves it from deprovisioned
+ host1 = tester.addNode("id1", "host1", "default", NodeType.host);
+ assertTrue(host1.history().hasEventAfter(History.Event.Type.deprovisioned, testStart));
}
@Test