diff options
author | Jon Bratseth <bratseth@oath.com> | 2020-03-20 15:20:11 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-20 15:20:11 +0100 |
commit | c3ff61a7acc70dff5514e8666a7b7e41f78404db (patch) | |
tree | 56c7ff0610c36d7eb8fc95b37bd4fb37f3067ebc | |
parent | f846beeb9f8bf288fd9d844ed8818485bce2e2d8 (diff) | |
parent | f8100933e566ee1e1309930f62a937fcaa8dcb40 (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.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 |