summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@oath.com>2018-03-05 13:09:00 +0100
committerValerij Fredriksen <valerijf@oath.com>2018-03-05 13:09:00 +0100
commit179f08521d9630c773e84f867c5d1e8892c75bf9 (patch)
tree9a53a8fec2ed556554f63eafbae53350b3692a1d /node-repository
parent60e501d19c4fd783a5a9d678d71e6ad3237379ca (diff)
Handle the new NodeTypes
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java3
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirer.java4
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java6
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodePatcher.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesApiHandler.java3
7 files changed, 15 insertions, 7 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
index c34f66379d3..a24c282d48a 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
@@ -506,7 +506,7 @@ public class NodeRepository extends AbstractComponent {
private List<Node> removeRecursively(Node node, boolean force) {
try (Mutex lock = lockUnallocated()) {
- List<Node> removed = node.type() != NodeType.host ?
+ List<Node> removed = !node.type().isDockerHost() ?
new ArrayList<>() :
getChildNodes(node.hostname()).stream()
.filter(child -> force || verifyRemovalIsAllowed(child, true))
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java
index b2b20018418..78552971769 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java
@@ -4,7 +4,6 @@ package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.Flavor;
-import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.SystemName;
import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.hosted.provision.Node;
@@ -93,7 +92,7 @@ public class FailedExpirer extends Maintainer {
List<Node> nodesToRecycle = new ArrayList<>();
for (Node candidate : nodes) {
if (hasHardwareIssue(candidate)) {
- List<String> unparkedChildren = candidate.type() != NodeType.host ? Collections.emptyList() :
+ List<String> unparkedChildren = !candidate.type().isDockerHost() ? Collections.emptyList() :
nodeRepository.getChildNodes(candidate.hostname()).stream()
.filter(node -> node.state() != Node.State.parked)
.map(Node::hostname)
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java
index a2a7aa2545a..d605958d6bc 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java
@@ -297,7 +297,7 @@ public class NodeFailer extends Maintainer {
throttlePolicy.minimumAllowedToFail);
boolean throttle = allowedFailedNodes < recentlyFailedNodes ||
- (allowedFailedNodes == recentlyFailedNodes && node.type() != NodeType.host);
+ (allowedFailedNodes == recentlyFailedNodes && !node.type().isDockerHost());
if (throttle) {
log.info(String.format("Want to fail node %s, but throttling is in effect: %s", node.hostname(),
throttlePolicy.toHumanReadableString()));
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirer.java
index 5cfb9d73c91..6a2ca90df09 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirer.java
@@ -86,14 +86,14 @@ public class RetiredExpirer extends Maintainer {
/**
* Checks if the node can be removed:
- * if the node is {@link NodeType#host}, it will only be removed if it has no children,
+ * if the node is a docker host, it will only be removed if it has no children,
* or all its children are parked or failed
* Otherwise, a removal is allowed if either of these are true:
* - The node has been in state {@link History.Event.Type#retired} for longer than {@link #retiredExpiry}
* - Orchestrator allows it
*/
private boolean canRemove(Node node) {
- if (node.type() == NodeType.host) {
+ if (node.type().isDockerHost()) {
return nodeRepository()
.getChildNodes(node.hostname()).stream()
.allMatch(child -> child.state() == Node.State.parked || child.state() == Node.State.failed);
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 dc26303d804..110313de197 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
@@ -322,6 +322,9 @@ public class NodeSerializer {
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;
default : throw new IllegalArgumentException("Unknown node type '" + typeString + "'");
}
}
@@ -330,6 +333,9 @@ public class NodeSerializer {
case tenant: return "tenant";
case host: return "host";
case proxy: return "proxy";
+ case proxyhost: return "proxyhost";
+ case config: return "config";
+ case confighost: return "confighost";
}
throw new IllegalArgumentException("Serialized form of '" + type + "' not defined");
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodePatcher.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodePatcher.java
index 85322ae1c91..730803708e7 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodePatcher.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodePatcher.java
@@ -49,7 +49,7 @@ public class NodePatcher {
inspector = SlimeUtils.jsonToSlime(IOUtils.readBytes(json, 1000 * 1000)).get();
this.node = node;
this.nodeRepository = nodeRepository;
- this.children = node.type() == NodeType.host ?
+ this.children = node.type().isDockerHost() ?
nodeRepository.getChildNodes(node.hostname()) :
Collections.emptyList();
}
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 34111797de6..c6667fd9d47 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
@@ -234,6 +234,9 @@ public class NodesApiHandler extends LoggingRequestHandler {
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;
default: throw new IllegalArgumentException("Unknown node type '" + object.asString() + "'");
}
}