diff options
author | Martin Polden <mpolden@mpolden.no> | 2019-01-25 14:47:32 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-25 14:47:32 +0100 |
commit | 3d3887c87c3c8cc36f4531a6ccfc9b71cd353ee7 (patch) | |
tree | 18304de4e13d1af8803658c4b2bd50230805845d | |
parent | 48ee4cdb465dc71ab4b35fcfc05c0c65fd78eb8c (diff) | |
parent | 32e2f7afe5d44d49c5c8d83e93d6c5d68238ab31 (diff) |
Merge pull request #8232 from vespa-engine/freva/allow-provisioned-ready-transition
Allow provisioned -> ready transition
3 files changed, 5 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 9c389561650..c74ba6abe0f 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 @@ -69,7 +69,7 @@ import java.util.stream.Stream; * @author bratseth */ // Node state transitions: -// 1) (new) - > provisioned -> dirty -> ready -> reserved -> active -> inactive -> dirty -> ready +// 1) (new) - > provisioned -> (dirty ->) ready -> reserved -> active -> inactive -> dirty -> ready // 2) inactive -> reserved | parked // 3) reserved -> dirty // 3) * -> failed | parked -> dirty | active | (removed) @@ -339,8 +339,8 @@ public class NodeRepository extends AbstractComponent { try (Mutex lock = lockUnallocated()) { List<Node> nodesWithResetFields = nodes.stream() .map(node -> { - if (node.state() != Node.State.dirty) - throw new IllegalArgumentException("Can not set " + node + " ready. It is not dirty."); + if (node.state() != Node.State.provisioned && node.state() != Node.State.dirty) + throw new IllegalArgumentException("Can not set " + node + " ready. It is not provisioned or dirty."); return node.with(node.status().withWantToRetire(false).withWantToDeprovision(false)); }) .collect(Collectors.toList()); 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 aaeb4316c57..98a3020e38e 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 @@ -51,7 +51,6 @@ public class NodeRepositoryTest { // Expected } - tester.nodeRepository().dirtyRecursively("host1", Agent.system, getClass().getSimpleName()); tester.nodeRepository().setReady("host1", Agent.system, getClass().getSimpleName()); tester.nodeRepository().removeRecursively("host1"); } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/RestApiTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/RestApiTest.java index 840cfa7ab5f..12aa4a8f397 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/RestApiTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/RestApiTest.java @@ -375,7 +375,7 @@ public class RestApiTest { assertResponse(new Request("http://localhost:8080/nodes/v2/state/ready/host1.yahoo.com", new byte[0], Request.Method.PUT), 400, - "{\"error-code\":\"BAD_REQUEST\",\"message\":\"Can not set failed node host1.yahoo.com allocated to tenant1.application1.instance1 as 'container/id1/0/0' ready. It is not dirty.\"}"); + "{\"error-code\":\"BAD_REQUEST\",\"message\":\"Can not set failed node host1.yahoo.com allocated to tenant1.application1.instance1 as 'container/id1/0/0' ready. It is not provisioned or dirty.\"}"); // (... while dirty then ready works (the ready move will be initiated by node maintenance)) assertResponse(new Request("http://localhost:8080/nodes/v2/state/dirty/host1.yahoo.com", @@ -391,7 +391,7 @@ public class RestApiTest { "{\"message\":\"Moved host2.yahoo.com to parked\"}"); assertResponse(new Request("http://localhost:8080/nodes/v2/state/ready/host2.yahoo.com", new byte[0], Request.Method.PUT), - 400, "{\"error-code\":\"BAD_REQUEST\",\"message\":\"Can not set parked node host2.yahoo.com allocated to tenant2.application2.instance2 as 'content/id2/0/0' ready. It is not dirty.\"}"); + 400, "{\"error-code\":\"BAD_REQUEST\",\"message\":\"Can not set parked node host2.yahoo.com allocated to tenant2.application2.instance2 as 'content/id2/0/0' ready. It is not provisioned or dirty.\"}"); // (... while dirty then ready works (the ready move will be initiated by node maintenance)) assertResponse(new Request("http://localhost:8080/nodes/v2/state/dirty/host2.yahoo.com", new byte[0], Request.Method.PUT), |