aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2018-09-25 10:00:54 +0200
committerMartin Polden <mpolden@mpolden.no>2018-09-25 10:00:54 +0200
commit903468372dd8c5f3312a1b8aad8d5573247e133b (patch)
tree505d1ec455f8a4e3eddc23913b3e8d271dba1dd0 /node-repository
parent2c62e8d5aea6c4f2b8901a7d2bbc5ed65921a234 (diff)
Support provisioning with node type controller
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesApiHandler.java13
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/RestApiTest.java14
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/controller1.json33
3 files changed, 53 insertions, 7 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesApiHandler.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesApiHandler.java
index 24e9682b01c..adffb17c808 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesApiHandler.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesApiHandler.java
@@ -230,12 +230,13 @@ public class NodesApiHandler extends LoggingRequestHandler {
private static NodeType nodeTypeFromSlime(Inspector object) {
if (! object.valid()) return NodeType.tenant; // default
switch (object.asString()) {
- case "tenant" : return NodeType.tenant;
- case "host" : return NodeType.host;
- case "proxy" : return NodeType.proxy;
- case "proxyhost" : return NodeType.proxyhost;
- case "config" : return NodeType.config;
- case "confighost" : return NodeType.confighost;
+ case "tenant": return NodeType.tenant;
+ case "host": return NodeType.host;
+ case "proxy": return NodeType.proxy;
+ case "proxyhost": return NodeType.proxyhost;
+ case "config": return NodeType.config;
+ case "confighost": return NodeType.confighost;
+ case "controller": return NodeType.controller;
default: throw new IllegalArgumentException("Unknown node type '" + object.asString() + "'");
}
}
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 bc810d93f02..ebcc46d5661 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
@@ -268,6 +268,19 @@ public class RestApiTest {
}
@Test
+ public void post_controller_node() throws Exception {
+ String data = "[{\"hostname\":\"controller1.yahoo.com\", \"openStackId\":\"fake-controller1.yahoo.com\"," +
+ createIpAddresses("127.0.0.1") +
+ "\"flavor\":\"default\"" +
+ ", \"type\":\"controller\"}]";
+ assertResponse(new Request("http://localhost:8080/nodes/v2/node", data.getBytes(StandardCharsets.UTF_8),
+ Request.Method.POST),
+ "{\"message\":\"Added 1 nodes to the provisioned state\"}");
+
+ assertFile(new Request("http://localhost:8080/nodes/v2/node/controller1.yahoo.com"), "controller1.json");
+ }
+
+ @Test
public void fails_to_deallocate_node_with_hardware_failure() throws Exception {
assertResponse(new Request("http://localhost:8080/nodes/v2/node",
("[" + asNodeJson("host12.yahoo.com", "default") + "]").
@@ -408,7 +421,6 @@ public class RestApiTest {
"{\"error-code\":\"BAD_REQUEST\",\"message\":\"Could not set host2.yahoo.com active. It has no allocation.\"}");
}
-
@Test
public void test_node_patching() throws Exception {
assertResponse(new Request("http://localhost:8080/nodes/v2/node/host4.yahoo.com",
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/controller1.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/controller1.json
new file mode 100644
index 00000000000..144882aa88e
--- /dev/null
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/controller1.json
@@ -0,0 +1,33 @@
+{
+ "url": "http://localhost:8080/nodes/v2/node/controller1.yahoo.com",
+ "id": "controller1.yahoo.com",
+ "state": "provisioned",
+ "type": "controller",
+ "hostname": "controller1.yahoo.com",
+ "openStackId": "fake-controller1.yahoo.com",
+ "flavor": "default",
+ "canonicalFlavor": "default",
+ "minDiskAvailableGb": 400.0,
+ "minMainMemoryAvailableGb": 16.0,
+ "description": "Flavor-name-is-default",
+ "minCpuCores": 2.0,
+ "fastDisk": true,
+ "environment": "BARE_METAL",
+ "rebootGeneration": 0,
+ "currentRebootGeneration": 0,
+ "failCount": 0,
+ "hardwareFailure": false,
+ "wantToRetire": false,
+ "wantToDeprovision": false,
+ "history": [
+ {
+ "event": "provisioned",
+ "at": 123,
+ "agent": "system"
+ }
+ ],
+ "ipAddresses": [
+ "127.0.0.1"
+ ],
+ "additionalIpAddresses": []
+}