diff options
4 files changed, 26 insertions, 35 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java index a88fb016e23..0456f6071c6 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java @@ -221,8 +221,6 @@ public final class Node { (parentHostname.isPresent() ? " [on: " + parentHostname.get() + "]" : ""); } - - public enum State { /** This node has been requested (from OpenStack) but is not yet read for use */ @@ -263,4 +261,5 @@ public final class Node { tenant, host; } + } 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 e4b745bcfd2..00282ccb53d 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 @@ -56,8 +56,6 @@ public class NodeSerializer { private static final String failCountKey = "failCount"; private static final String hardwareFailureKey = "hardwareFailure"; private static final String nodeTypeKey = "type"; - private static final String nodeTypeTenant = "tenant"; - private static final String nodeTypeHost = "host"; // Configuration fields private static final String flavorKey = "flavor"; @@ -110,15 +108,7 @@ public class NodeSerializer { object.setBool(hardwareFailureKey, node.status().hardwareFailure()); node.allocation().ifPresent(allocation -> toSlime(allocation, object.setObject(instanceKey))); toSlime(node.history(), object.setArray(historyKey)); - object.setString(nodeTypeKey, nodeTypeToString(node.type())); - } - - private String nodeTypeToString(Node.Type type) { - switch (type) { - case tenant: return nodeTypeTenant; - case host: return nodeTypeHost; - } - throw new IllegalArgumentException("Unknown node type '" + type.toString() + "'"); + object.setString(nodeTypeKey, toString(node.type())); } private void toSlime(Configuration configuration, Cursor object) { @@ -164,7 +154,7 @@ public class NodeSerializer { state, allocationFromSlime(object.field(instanceKey)), historyFromSlime(object.field(historyKey)), - typeFromSlime(object)); + typeFromSlime(object.field(nodeTypeKey))); } private Status statusFromSlime(Inspector object) { @@ -207,17 +197,6 @@ public class NodeSerializer { return new History(events); } - private Node.Type typeFromSlime(Inspector object) { - String typeString = object.field(nodeTypeKey).asString(); - switch (typeString) { - case nodeTypeTenant : return Node.Type.tenant; - case nodeTypeHost : return Node.Type.host; - // TODO: Remove this when 6.13 is released everywhere - case "" : return Node.Type.tenant; - } - throw new IllegalArgumentException("Unknown node type '" + typeString + "'"); - } - private History.Event eventFromSlime(Inspector object) { History.Event.Type type = eventTypeFromString(object.field(historyEventTypeKey).asString()); if (type == null) return null; @@ -249,6 +228,8 @@ public class NodeSerializer { return Optional.empty(); } + // Enum <-> string mappings + /** Returns the event type, or null if this event type should be ignored */ private History.Event.Type eventTypeFromString(String eventTypeString) { switch (eventTypeString) { @@ -263,7 +244,6 @@ public class NodeSerializer { } throw new IllegalArgumentException("Unknown node event type '" + eventTypeString + "'"); } - private String toString(History.Event.Type nodeEventType) { switch (nodeEventType) { case readied : return "readied"; @@ -285,7 +265,6 @@ public class NodeSerializer { } throw new IllegalArgumentException("Unknown node event agent '" + eventAgentString + "'"); } - private String toString(History.RetiredEvent.Agent agent) { switch (agent) { case application : return "application"; @@ -294,4 +273,20 @@ public class NodeSerializer { throw new IllegalArgumentException("Serialized form of '" + agent + "' not defined"); } + private Node.Type typeFromSlime(Inspector object) { + if ( ! object.valid()) return Node.Type.tenant; // TODO: Remove this and change to pass string line when 6.13 is released everywhere + switch (object.asString()) { + case "tenant" : return Node.Type.tenant; + case "host" : return Node.Type.host; + default : throw new IllegalArgumentException("Unknown node type '" + object.asString() + "'"); + } + } + private String toString(Node.Type type) { + switch (type) { + case tenant: return "tenant"; + case host: return "host"; + } + throw new IllegalArgumentException("Unknown node type '" + type.toString() + "'"); + } + } 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 2ce682a36af..b137d10b311 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 @@ -200,17 +200,12 @@ public class NodesApiHandler extends LoggingRequestHandler { } private Node.Type nodeTypeFromSlime(Inspector object) { - // TODO: Remove this when 6.13 is deployed everywhere. - if (! object.valid()) { - return Node.Type.tenant; - } - String typeString = object.asString(); - switch (typeString) { + if (! object.valid()) return Node.Type.tenant; // default + switch (object.asString()) { case "tenant" : return Node.Type.tenant; case "host" : return Node.Type.host; + default: throw new IllegalArgumentException("Unknown node type '" + object.asString() + "'"); } - // TODO: Change this to throw an exception when 6.13 is deployed everywhere. - return Node.Type.tenant; } // TODO: Move most of this to node repo @@ -268,4 +263,5 @@ public class NodesApiHandler extends LoggingRequestHandler { } return false; } + } 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 9318c6d0d7b..91fa540e4b7 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 @@ -224,4 +224,5 @@ class NodesResponse extends HttpResponse { return NodeStateSerializer.fromWireName(stateString) .orElseThrow(() -> new RuntimeException("Node state '" + stateString + "' is not known")); } + } |