diff options
author | Martin Polden <mpolden@mpolden.no> | 2018-10-03 10:37:11 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2018-10-03 10:37:11 +0200 |
commit | 362fd88a17af9bde6fbcdebdbfd6fe7448a254d0 (patch) | |
tree | 06a9ae69024fb1e31bf093b7937fb84a8e441bfd /node-repository | |
parent | 58fd7c5d0d19b5df90ea18bd617501da6c7637b1 (diff) |
Add controllerhost type
Diffstat (limited to 'node-repository')
6 files changed, 19 insertions, 28 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureVersions.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureVersions.java index 31dd5d74404..b6d0678baf9 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureVersions.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureVersions.java @@ -33,6 +33,7 @@ public class InfrastructureVersions { case confighost: case proxyhost: case controller: + case controllerhost: break; default: throw new IllegalArgumentException("Cannot set version for type " + nodeType); diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java index db3db139044..ddaa0e4173f 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java @@ -327,6 +327,7 @@ public class NodeSerializer { case "config": return NodeType.config; case "confighost": return NodeType.confighost; case "controller": return NodeType.controller; + case "controllerhost": return NodeType.controllerhost; default : throw new IllegalArgumentException("Unknown node type '" + typeString + "'"); } } @@ -340,6 +341,7 @@ public class NodeSerializer { case config: return "config"; case confighost: return "confighost"; case controller: return "controller"; + case controllerhost: return "controllerhost"; } throw new IllegalArgumentException("Serialized form of '" + type + "' not defined"); } 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 adffb17c808..bbc5d824559 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 @@ -32,6 +32,7 @@ import com.yahoo.yolean.Exceptions; import javax.inject.Inject; import java.io.IOException; import java.io.InputStream; +import java.io.UncheckedIOException; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -185,7 +186,6 @@ public class NodesApiHandler extends LoggingRequestHandler { private Node nodeFromRequest(HttpRequest request) { String hostname = lastElement(request.getUri().getPath()); - return nodeRepository.getNode(hostname).orElseThrow(() -> new NotFoundException("No node found with hostname " + hostname)); } @@ -200,7 +200,7 @@ public class NodesApiHandler extends LoggingRequestHandler { byte[] jsonBytes = IOUtils.readBytes(jsonStream, 1000 * 1000); return SlimeUtils.jsonToSlime(jsonBytes); } catch (IOException e) { - throw new RuntimeException(); + throw new UncheckedIOException(e); } } @@ -229,16 +229,7 @@ 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 "controller": return NodeType.controller; - default: throw new IllegalArgumentException("Unknown node type '" + object.asString() + "'"); - } + return NodeSerializer.typeFrom(object.asString()); } public static NodeFilter toNodeFilter(HttpRequest request) { diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesResponse.java index 3b7cf857a86..ddd8d6b4904 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesResponse.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesResponse.java @@ -138,7 +138,7 @@ class NodesResponse extends HttpResponse { object.setString("state", NodeStateSerializer.wireNameOf(node.state())); object.setString("type", node.type().name()); object.setString("hostname", node.hostname()); - object.setString("type", toString(node.type())); + object.setString("type", NodeSerializer.toString(node.type())); if (node.parentHostname().isPresent()) { object.setString("parentHostname", node.parentHostname().get()); } @@ -188,20 +188,6 @@ class NodesResponse extends HttpResponse { node.status().hardwareDivergence().ifPresent(hardwareDivergence -> object.setString("hardwareDivergence", hardwareDivergence)); } - private String toString(NodeType type) { - switch(type) { - case tenant: return "tenant"; - case host: return "host"; - case proxy: return "proxy"; - case proxyhost: return "proxyhost"; - case config: return "config"; - case confighost: return "confighost"; - case controller: return "controller"; - default: - throw new RuntimeException("New type added to enum, not implemented in NodesResponse: " + type.name()); - } - } - private void toSlime(ApplicationId id, Cursor object) { object.setString("tenant", id.tenant().value()); object.setString("application", id.application().value()); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureVersionsTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureVersionsTest.java index afa6f74f604..4ee3ade351a 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureVersionsTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureVersionsTest.java @@ -72,12 +72,16 @@ public class InfrastructureVersionsTest { infrastructureVersions.setTargetVersion(NodeType.config, version, false); infrastructureVersions.setTargetVersion(NodeType.confighost, version2, false); infrastructureVersions.setTargetVersion(NodeType.proxyhost, version, false); + infrastructureVersions.setTargetVersion(NodeType.controller, version, false); + infrastructureVersions.setTargetVersion(NodeType.controllerhost, version2, false); Map<NodeType, Version> expected = new HashMap<>(); expected.put(NodeType.config, version); expected.put(NodeType.confighost, version2); expected.put(NodeType.proxyhost, version); + expected.put(NodeType.controller, version); + expected.put(NodeType.controllerhost, version2); assertEquals(expected, infrastructureVersions.getTargetVersions()); } -}
\ No newline at end of file +} diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java index d07b8a00735..6f7ba72ff7e 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java @@ -311,6 +311,13 @@ public class SerializationTest { assertEquals(Version.fromString("7.1"), serialized.status().osVersion().get()); } + @Test + public void serialize_node_types() { + for (NodeType t : NodeType.values()) { + assertEquals(t, NodeSerializer.nodeTypeFromString(NodeSerializer.toString(t))); + } + } + private byte[] createNodeJson(String hostname, String... ipAddress) { String ipAddressJsonPart = ""; if (ipAddress.length > 0) { |