diff options
author | Martin Polden <mpolden@mpolden.no> | 2018-09-25 10:00:54 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2018-09-25 10:00:54 +0200 |
commit | 903468372dd8c5f3312a1b8aad8d5573247e133b (patch) | |
tree | 505d1ec455f8a4e3eddc23913b3e8d271dba1dd0 /node-repository | |
parent | 2c62e8d5aea6c4f2b8901a7d2bbc5ed65921a234 (diff) |
Support provisioning with node type controller
Diffstat (limited to 'node-repository')
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": [] +} |