diff options
author | Jon Bratseth <bratseth@verizonmedia.com> | 2020-03-20 11:37:46 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@verizonmedia.com> | 2020-03-20 11:37:46 +0100 |
commit | f8100933e566ee1e1309930f62a937fcaa8dcb40 (patch) | |
tree | f07c423968ebaf40c843e1aeb5c066c6f188f587 | |
parent | cc659eb6a33016e412f89b797ea09b10fa4c5f3a (diff) |
Clear wantToDeproivision and wantToRetire when deprovisioning
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java | 8 | ||||
-rw-r--r-- | node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java | 19 |
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 |