summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorHaakon Dybdahl <dybdahl@yahoo-inc.com>2016-06-22 13:10:11 +0200
committerHaakon Dybdahl <dybdahl@yahoo-inc.com>2016-06-22 13:10:11 +0200
commit61ac3108b93110b67273307195c3d4965029ac60 (patch)
tree392db603bf00e8a43036a9571cae4d941c95621a /node-repository
parentb4492146c31f056eb1671c93f935618398f5034e (diff)
Simplify code and do not mix rest with persistence.
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java1
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeTypeSerializer.java52
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesApiHandler.java18
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesResponse.java4
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());