diff options
author | Haakon Dybdahl <dybdahl@yahoo-inc.com> | 2016-06-22 13:10:11 +0200 |
---|---|---|
committer | Haakon Dybdahl <dybdahl@yahoo-inc.com> | 2016-06-22 13:10:11 +0200 |
commit | 61ac3108b93110b67273307195c3d4965029ac60 (patch) | |
tree | 392db603bf00e8a43036a9571cae4d941c95621a /node-repository | |
parent | b4492146c31f056eb1671c93f935618398f5034e (diff) |
Simplify code and do not mix rest with persistence.
Diffstat (limited to 'node-repository')
4 files changed, 17 insertions, 58 deletions
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 1dc251b8919..004cceee7cb 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 @@ -19,7 +19,6 @@ import com.yahoo.vespa.hosted.provision.node.Generation; import com.yahoo.vespa.hosted.provision.node.History; import com.yahoo.vespa.hosted.provision.node.NodeFlavors; import com.yahoo.vespa.hosted.provision.node.Status; -import com.yahoo.vespa.hosted.provision.restapi.NodeTypeSerializer; import java.io.IOException; import java.time.Instant; diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeTypeSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeTypeSerializer.java deleted file mode 100644 index c3fd38cc7ae..00000000000 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeTypeSerializer.java +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -package com.yahoo.vespa.hosted.provision.restapi; - -import com.yahoo.vespa.hosted.provision.Node; - -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; - -/** - * Converts {@link Node.Type} to/from serialized form in REST APIs. - * @author dybis - */ -public class NodeTypeSerializer { - - private static final Map<Node.Type, String> serializationMap = new HashMap<>(); - private static final Map<String, Node.Type> deserializationMap = new HashMap<>(); - - private static void addMapping(final Node.Type nodeType, final String wireName) { - serializationMap.put(nodeType, wireName); - deserializationMap.put(wireName, nodeType); - } - - static { - // Alphabetical order. No cheating, please - don't use .name(), .toString(), reflection etc. to get wire name. - addMapping(Node.Type.host, "host"); - addMapping(Node.Type.tenant, "tenant"); - } - - private NodeTypeSerializer() {} // Utility class, no instances. - - public static Node.Type fromWireName(final String wireName) { - // TODO: Remove the next lines when NodeRepo contains type information for all nodes. - if (wireName == null || wireName.isEmpty()) { - return Node.Type.tenant; - } - final Optional<Node.Type> type = Optional.ofNullable(deserializationMap.get(wireName)); - if (! type.isPresent()) { - throw new RuntimeException("Bug: Unknown desseriliazation of node type string " + wireName); - } - return type.get(); - } - - public static String wireNameOf(final Node.Type nodeType) { - final String wireName = serializationMap.get(nodeType); - if (wireName == null) { - throw new RuntimeException("Bug: Unknown serialization form of node type " + nodeType.name()); - } - return wireName; - } -} 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 6e9e5a7fb85..41acec77fe9 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 @@ -20,7 +20,6 @@ import com.yahoo.vespa.hosted.provision.node.filter.NodeHostFilter; import com.yahoo.vespa.hosted.provision.node.NodeFlavors; import com.yahoo.vespa.hosted.provision.node.filter.ParentHostFilter; import com.yahoo.vespa.hosted.provision.node.filter.StateFilter; -import com.yahoo.vespa.hosted.provision.restapi.NodeTypeSerializer; import com.yahoo.vespa.hosted.provision.restapi.v2.NodesResponse.ResponseType; import com.yahoo.yolean.Exceptions; @@ -193,7 +192,22 @@ public class NodesApiHandler extends LoggingRequestHandler { inspector.field("hostname").asString(), parentHostname, new Configuration(nodeFlavors.getFlavorOrThrow(inspector.field("flavor").asString())), - NodeTypeSerializer.fromWireName(inspector.field(nodeTypeKey).asString())); + nodeTypeFromSlime(inspector.field(nodeTypeKey))); + } + + private Node.Type nodeTypeFromSlime(Inspector object) { + // TODO: Remove this when we are sure type is everywhere. + if (! object.valid()) { + log.severe("Not valid nodeType key, defaulting to tenant."); + return Node.Type.tenant; + } + String typeString = object.asString(); + switch (typeString) { + case "tenant" : return Node.Type.tenant; + case "host" : return Node.Type.host; + } + log.severe("Not valid nodeType key, defaulting to tenant: '" + typeString + "'"); + return Node.Type.tenant; } // TODO: Move most of this to node repo 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 2ab28b5f7e9..624a6383297 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 @@ -1,7 +1,6 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.provision.restapi.v2; -import com.yahoo.component.Version; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ClusterMembership; import com.yahoo.container.jdisc.HttpRequest; @@ -15,7 +14,6 @@ import com.yahoo.vespa.hosted.provision.node.Allocation; import com.yahoo.vespa.hosted.provision.node.History; import com.yahoo.vespa.hosted.provision.node.filter.NodeFilter; import com.yahoo.vespa.hosted.provision.restapi.NodeStateSerializer; -import com.yahoo.vespa.hosted.provision.restapi.NodeTypeSerializer; import java.io.IOException; import java.io.OutputStream; @@ -136,7 +134,7 @@ class NodesResponse extends HttpResponse { if ( ! allFields) return; object.setString("id", node.id()); object.setString("state", NodeStateSerializer.wireNameOf(node.state())); - object.setString("type", NodeTypeSerializer.wireNameOf(node.type())); + object.setString("type", node.type().name()); object.setString("hostname", node.hostname()); if (node.parentHostname().isPresent()) { object.setString("parentHostname", node.parentHostname().get()); |