summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2018-10-03 10:37:11 +0200
committerMartin Polden <mpolden@mpolden.no>2018-10-03 10:37:11 +0200
commit362fd88a17af9bde6fbcdebdbfd6fe7448a254d0 (patch)
tree06a9ae69024fb1e31bf093b7937fb84a8e441bfd /node-repository
parent58fd7c5d0d19b5df90ea18bd617501da6c7637b1 (diff)
Add controllerhost type
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureVersions.java1
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesApiHandler.java15
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesResponse.java16
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureVersionsTest.java6
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java7
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) {