From 775d18f680ec26cd3b177eb12479bdc387afe620 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Wed, 1 Jul 2020 11:41:14 +0200 Subject: isDockerHost -> isHost --- .../java/com/yahoo/config/provision/NodeType.java | 8 +++++++- .../controller/application/SystemApplication.java | 2 +- .../java/com/yahoo/vespa/hosted/provision/Node.java | 2 +- .../vespa/hosted/provision/NodeRepository.java | 4 ++-- .../hosted/provision/maintenance/FailedExpirer.java | 2 +- .../hosted/provision/maintenance/NodeFailer.java | 21 ++++++++++++--------- .../provision/maintenance/OsUpgradeActivator.java | 2 +- .../provision/maintenance/RetiredExpirer.java | 2 +- .../com/yahoo/vespa/hosted/provision/node/IP.java | 2 +- .../yahoo/vespa/hosted/provision/os/OsVersions.java | 2 +- .../vespa/hosted/provision/os/RetiringUpgrader.java | 2 +- .../persistence/CuratorDatabaseClient.java | 2 +- .../hosted/provision/provisioning/DockerImages.java | 4 ++-- .../vespa/hosted/provision/restapi/NodePatcher.java | 2 +- .../hosted/provision/restapi/NodesResponse.java | 2 +- 15 files changed, 34 insertions(+), 25 deletions(-) diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/NodeType.java b/config-provisioning/src/main/java/com/yahoo/config/provision/NodeType.java index 58ae8b95e97..fc267bbac29 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/NodeType.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/NodeType.java @@ -45,10 +45,16 @@ public enum NodeType { this.description = description; } + // TODO: Remove when no version older than 7.247 is live + @Deprecated public boolean isDockerHost() { return !childNodeTypes.isEmpty(); } + public boolean isHost() { + return !childNodeTypes.isEmpty(); + } + public String description() { return description; } @@ -66,7 +72,7 @@ public enum NodeType { * @throws IllegalStateException if this type is not a host */ public List childNodeTypes() { - if (! isDockerHost()) + if (! isHost()) throw new IllegalStateException(this + " has no children"); return childNodeTypes; } diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/SystemApplication.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/SystemApplication.java index e1acf867744..7dd6126dabc 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/SystemApplication.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/SystemApplication.java @@ -70,7 +70,7 @@ public enum SystemApplication { if (controller.zoneRegistry().zones().reprovisionToUpgradeOs().ids().contains(zone)) { return nodeType == NodeType.host; // TODO(mpolden): Remove once all node types are supported } - return nodeType.isDockerHost(); + return nodeType.isHost(); } /** Returns whether this has an endpoint */ 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 b6237886dc7..be4f551ca29 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 @@ -175,7 +175,7 @@ public final class Node { * If both given wantToRetire and wantToDeprovision are equal to the current values, the method is no-op. */ public Node withWantToRetire(boolean wantToRetire, boolean wantToDeprovision, Agent agent, Instant at) { - if (!type.isDockerHost() && wantToDeprovision) + if (!type.isHost() && wantToDeprovision) throw new IllegalArgumentException("wantToDeprovision can only be set for hosts"); if (wantToRetire == status.wantToRetire() && wantToDeprovision == status.wantToDeprovision()) return this; 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 c4c062311e6..0dd3869e234 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 @@ -518,7 +518,7 @@ public class NodeRepository extends AbstractComponent { new IllegalArgumentException("Could not deallocate " + hostname + ": Node not found")); List nodesToDirty = - (nodeToDirty.type().isDockerHost() ? + (nodeToDirty.type().isHost() ? Stream.concat(list().childrenOf(hostname).asList().stream(), Stream.of(nodeToDirty)) : Stream.of(nodeToDirty)) .filter(node -> node.state() != State.dirty) @@ -657,7 +657,7 @@ public class NodeRepository extends AbstractComponent { try (Mutex lock = lockUnallocated()) { requireRemovable(node, false, force); - if (node.type().isDockerHost()) { + if (node.type().isHost()) { List children = list().childrenOf(node).asList(); children.forEach(child -> requireRemovable(child, true, force)); db.removeNodes(children); 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 7e02eedc572..d65b4ce4248 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 @@ -100,7 +100,7 @@ public class FailedExpirer extends NodeRepositoryMaintainer { List nodesToRecycle = new ArrayList<>(); for (Node candidate : nodes) { if (NodeFailer.hasHardwareIssue(candidate, nodeRepository)) { - List unparkedChildren = !candidate.type().isDockerHost() ? Collections.emptyList() : + List unparkedChildren = !candidate.type().isHost() ? Collections.emptyList() : nodeRepository.list().childrenOf(candidate).asList().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 1e978682fa9..9c1892a1920 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 @@ -102,7 +102,7 @@ public class NodeFailer extends NodeRepositoryMaintainer { for (Map.Entry entry : getReadyNodesByFailureReason().entrySet()) { Node node = entry.getKey(); if (throttle(node)) { - if (node.type().isDockerHost()) throttledHostFailures++; + if (node.type().isHost()) throttledHostFailures++; else throttledNodeFailures++; continue; } @@ -117,12 +117,14 @@ public class NodeFailer extends NodeRepositoryMaintainer { // Fail active nodes for (Map.Entry entry : getActiveNodesByFailureReason(activeNodes).entrySet()) { Node node = entry.getKey(); - if (!failAllowedFor(node.type())) { - continue; - } + if (!failAllowedFor(node.type())) continue; + if (throttle(node)) { - if (node.type().isDockerHost()) throttledHostFailures++; - else throttledNodeFailures++; + if (node.type().isHost()) + throttledHostFailures++; + else + throttledNodeFailures++; + continue; } String reason = entry.getValue(); @@ -212,9 +214,10 @@ public class NodeFailer extends NodeRepositoryMaintainer { for (Node node : activeNodes) { if (node.history().hasEventBefore(History.Event.Type.down, graceTimeEnd) && ! applicationSuspended(node)) { nodesByFailureReason.put(node, "Node has been down longer than " + downTimeLimit); - } else if (hostSuspended(node, activeNodes)) { + } + else if (hostSuspended(node, activeNodes)) { Node hostNode = node.parentHostname().flatMap(parent -> nodeRepository().getNode(parent)).orElse(node); - if (hostNode.type().isDockerHost()) { + if (hostNode.type().isHost()) { List failureReports = reasonsToFailParentHost(hostNode); if (failureReports.size() > 0) { if (hostNode.equals(node)) { @@ -244,7 +247,7 @@ public class NodeFailer extends NodeRepositoryMaintainer { } private boolean expectConfigRequests(Node node) { - return !node.type().isDockerHost(); + return !node.type().isHost(); } private boolean hasNodeRequestedConfigAfter(Node node, Instant instant) { diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/OsUpgradeActivator.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/OsUpgradeActivator.java index a36ef8fda4d..11afbd785e8 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/OsUpgradeActivator.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/OsUpgradeActivator.java @@ -24,7 +24,7 @@ public class OsUpgradeActivator extends NodeRepositoryMaintainer { @Override protected void maintain() { for (var nodeType : NodeType.values()) { - if (!nodeType.isDockerHost()) continue; + if (!nodeType.isHost()) continue; var active = canUpgradeOsOf(nodeType); nodeRepository().osVersions().resumeUpgradeOf(nodeType, active); } 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 73869fb098d..a8566e24743 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 @@ -85,7 +85,7 @@ public class RetiredExpirer extends NodeRepositoryMaintainer { * - Orchestrator allows it */ private boolean canRemove(Node node) { - if (node.type().isDockerHost()) { + if (node.type().isHost()) { if (nodeRepository() .list().childrenOf(node).asList().stream() .allMatch(child -> child.state() == Node.State.parked || diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/IP.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/IP.java index 3210de18b7d..836583022ca 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/IP.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/IP.java @@ -133,7 +133,7 @@ public class IP { var addresses = new HashSet<>(node.ipConfig().primary()); var otherAddresses = new HashSet<>(other.ipConfig().primary()); - if (node.type().isDockerHost()) { // Addresses of a host can never overlap with any other nodes + if (node.type().isHost()) { // Addresses of a host can never overlap with any other nodes addresses.addAll(node.ipConfig().pool().asSet()); otherAddresses.addAll(other.ipConfig().pool().asSet()); } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersions.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersions.java index 54586105720..8e38aabf7ce 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersions.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersions.java @@ -126,7 +126,7 @@ public class OsVersions { } private static void require(NodeType nodeType) { - if (!nodeType.isDockerHost()) { + if (!nodeType.isHost()) { throw new IllegalArgumentException("Node type '" + nodeType + "' does not support OS upgrades"); } } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringUpgrader.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringUpgrader.java index b2b83b6d064..aebf14ab13f 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringUpgrader.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringUpgrader.java @@ -60,7 +60,7 @@ public class RetiringUpgrader implements Upgrader { /** Retire and deprovision given host and its children */ private void retire(Node host, Version target, Instant now) { - if (!host.type().isDockerHost()) throw new IllegalArgumentException("Cannot retire non-host " + host); + if (!host.type().isHost()) throw new IllegalArgumentException("Cannot retire non-host " + host); try (var lock = nodeRepository.lock(host)) { Optional currentNode = nodeRepository.getNode(host.hostname()); if (currentNode.isEmpty()) return; diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java index 367271564ea..a8086400e26 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java @@ -257,7 +257,7 @@ public class CuratorDatabaseClient implements JobControl.Db { /** Returns whether to reboot node as part of transition to given state. This is done to get rid of any lingering * unwanted state (e.g. processes) on non-host nodes. */ private boolean rebootOnTransitionTo(Node.State state, Node node) { - if (node.type().isDockerHost()) return false; // Reboot of host nodes is handled by NodeRebooter + if (node.type().isHost()) return false; // Reboot of host nodes is handled by NodeRebooter if (zone.environment().isTest()) return false; // We want to reuse nodes quickly in test environments return node.state() != Node.State.dirty && state == Node.State.dirty; diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/DockerImages.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/DockerImages.java index 9edcfd6c697..3f55307d1f3 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/DockerImages.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/DockerImages.java @@ -60,13 +60,13 @@ public class DockerImages { /** Returns the current docker image for given node type, or the type for corresponding child nodes * if it is a Docker host, or default */ public DockerImage dockerImageFor(NodeType type) { - NodeType typeToUseForLookup = type.isDockerHost() ? type.childNodeType() : type; + NodeType typeToUseForLookup = type.isHost() ? type.childNodeType() : type; return getDockerImages().getOrDefault(typeToUseForLookup, defaultImage); } /** Set the docker image for nodes of given type */ public void setDockerImage(NodeType nodeType, Optional dockerImage) { - if (nodeType.isDockerHost()) { + if (nodeType.isHost()) { throw new IllegalArgumentException("Setting docker image for " + nodeType + " nodes is unsupported"); } try (Lock lock = db.lockDockerImages()) { diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodePatcher.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodePatcher.java index 897af634d49..57f9b217d73 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodePatcher.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodePatcher.java @@ -96,7 +96,7 @@ public class NodePatcher { private List applyFieldRecursive(String name, Inspector value, Inspector root) { switch (name) { case WANT_TO_RETIRE: - List childNodes = node.type().isDockerHost() ? nodes.get().childrenOf(node).asList() : List.of(); + List childNodes = node.type().isHost() ? nodes.get().childrenOf(node).asList() : List.of(); return childNodes.stream() .map(child -> applyField(child, name, value, root)) .collect(Collectors.toList()); diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java index ce9a461e17f..58e838018c6 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java @@ -172,7 +172,7 @@ class NodesResponse extends HttpResponse { node.status().osVersion().current().ifPresent(version -> object.setString("currentOsVersion", version.toFullString())); node.status().osVersion().wanted().ifPresent(version -> object.setString("wantedOsVersion", version.toFullString())); node.status().firmwareVerifiedAt().ifPresent(instant -> object.setLong("currentFirmwareCheck", instant.toEpochMilli())); - if (node.type().isDockerHost()) + if (node.type().isHost()) nodeRepository.firmwareChecks().requiredAfter().ifPresent(after -> object.setLong("wantedFirmwareCheck", after.toEpochMilli())); node.status().vespaVersion().ifPresent(version -> object.setString("vespaVersion", version.toFullString())); currentDockerImage(node).ifPresent(dockerImage -> object.setString("currentDockerImage", dockerImage.asString())); -- cgit v1.2.3