summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-04-07 15:11:09 +0200
committerMartin Polden <mpolden@mpolden.no>2021-04-07 16:54:14 +0200
commitdd8e04e4a8067ae51b3834bf353e7567999c86ea (patch)
tree91f661391090a402158e00e6af350655710a286d /node-repository
parentfc6977d6555eece6abf92d9a92f100aedd04c3a8 (diff)
Allow patching wantToRebuild in nodes API
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodePatcher.java13
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java3
2 files changed, 13 insertions, 3 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodePatcher.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodePatcher.java
index e8fa4f04eed..1bea7056790 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodePatcher.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodePatcher.java
@@ -54,6 +54,7 @@ public class NodePatcher implements AutoCloseable {
private static final String WANT_TO_RETIRE = "wantToRetire";
private static final String WANT_TO_DEPROVISION = "wantToDeprovision";
+ private static final String WANT_TO_REBUILD = "wantToRebuild";
private static final Set<String> RECURSIVE_FIELDS = Set.of(WANT_TO_RETIRE);
private final NodeRepository nodeRepository;
@@ -141,11 +142,17 @@ public class NodePatcher implements AutoCloseable {
return IP.Config.verify(node.with(node.ipConfig().withPool(node.ipConfig().pool().withIpAddresses(asStringSet(value)))), memoizedNodes.get());
case "additionalHostnames" :
return IP.Config.verify(node.with(node.ipConfig().withPool(node.ipConfig().pool().withAddresses(asAddressList(value)))), memoizedNodes.get());
- case WANT_TO_RETIRE :
- case WANT_TO_DEPROVISION :
+ case WANT_TO_RETIRE:
+ case WANT_TO_DEPROVISION:
+ case WANT_TO_REBUILD:
boolean wantToRetire = asOptionalBoolean(root.field(WANT_TO_RETIRE)).orElse(node.status().wantToRetire());
boolean wantToDeprovision = asOptionalBoolean(root.field(WANT_TO_DEPROVISION)).orElse(node.status().wantToDeprovision());
- return node.withWantToRetire(wantToRetire, wantToDeprovision && !applyingAsChild, Agent.operator, clock.instant());
+ boolean wantToRebuild = asOptionalBoolean(root.field(WANT_TO_REBUILD)).orElse(node.status().wantToRebuild());
+ return node.withWantToRetire(wantToRetire,
+ wantToDeprovision && !applyingAsChild,
+ wantToRebuild && !applyingAsChild,
+ Agent.operator,
+ clock.instant());
case "reports" :
return nodeWithPatchedReports(node, value);
case "openStackId" :
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java
index 9ac85b9a99c..d39a14339fd 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java
@@ -221,6 +221,9 @@ public class NodesV2ApiTest {
// Make sure that wantToRetire is applied recursively, but wantToDeprovision isn't
tester.assertResponseContains(new Request("http://localhost:8080/nodes/v2/node/host5.yahoo.com"),
"\"wantToRetire\":true,\"preferToRetire\":false,\"wantToDeprovision\":false,");
+ assertResponse(new Request("http://localhost:8080/nodes/v2/node/dockerhost1.yahoo.com",
+ Utf8.toBytes("{\"wantToRebuild\": true, \"wantToRetire\": true}"), Request.Method.PATCH),
+ "{\"message\":\"Updated dockerhost1.yahoo.com\"}");
tester.assertResponseContains(new Request("http://localhost:8080/nodes/v2/node/dockerhost1.yahoo.com"), "\"modelName\":\"foo\"");
assertResponse(new Request("http://localhost:8080/nodes/v2/node/dockerhost1.yahoo.com",