diff options
author | Martin Polden <mpolden@mpolden.no> | 2022-11-17 13:12:06 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2022-11-17 15:52:42 +0100 |
commit | 9dcf585ee61ad50af9993b25257ca37df5843f28 (patch) | |
tree | 3b1de821facd3c6c46cb57b0747d7d7cf48144d1 /node-repository | |
parent | 22413c3ad0c0d27f8af4df8bd0c80019d90a0fbe (diff) |
Simplify
Diffstat (limited to 'node-repository')
3 files changed, 10 insertions, 12 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java index bf855661a09..742b39e97c1 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java @@ -72,9 +72,12 @@ public class NodeList extends AbstractFilteringList<Node, NodeList> { /** Returns the subset of nodes having exactly the given resources */ public NodeList resources(NodeResources resources) { return matching(node -> node.resources().equals(resources)); } - /** Returns the subset of nodes having storage of given type */ - public NodeList storageType(NodeResources.StorageType storageType) { - return matching(node -> node.resources().storageType() == storageType); + /** Returns the subset of nodes which have a replaceable root disk */ + public NodeList replaceableRootDisk() { + // TODO(mpolden): Support any architecture if we change how cloud images for other + // architectures are managed + return matching(node -> node.resources().storageType() == NodeResources.StorageType.remote && + node.resources().architecture() == NodeResources.Architecture.x86_64); } /** Returns the subset of nodes which satisfy the given resources */ diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RebuildingOsUpgrader.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RebuildingOsUpgrader.java index bb9d28d48f9..dccc22deced 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RebuildingOsUpgrader.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RebuildingOsUpgrader.java @@ -2,7 +2,6 @@ package com.yahoo.vespa.hosted.provision.os; import com.yahoo.component.Version; -import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; import com.yahoo.vespa.flags.IntFlag; import com.yahoo.vespa.flags.PermanentFlags; @@ -68,10 +67,8 @@ public class RebuildingOsUpgrader implements OsUpgrader { private List<Node> rebuildableHosts(OsVersionTarget target, NodeList allNodes, Instant now) { NodeList hostsOfTargetType = allNodes.nodeType(target.nodeType()); if (softRebuild) { - // Soft rebuild is enabled so this should only act on hosts with remote storage and on x86-64 - // TODO(mpolden): Rebuild arm64 hosts as well if image permissions can be fixed - hostsOfTargetType = hostsOfTargetType.matching(node -> node.resources().storageType() == NodeResources.StorageType.remote && - node.resources().architecture() == NodeResources.Architecture.x86_64); + // Soft rebuild is enabled so this should act on hosts having replacable root disk + hostsOfTargetType = hostsOfTargetType.replaceableRootDisk(); } int rebuildLimit = rebuildLimit(target.nodeType(), hostsOfTargetType); diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringOsUpgrader.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringOsUpgrader.java index acdb689b809..9dcf95be477 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringOsUpgrader.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringOsUpgrader.java @@ -2,7 +2,6 @@ package com.yahoo.vespa.hosted.provision.os; import com.yahoo.component.Version; -import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; import com.yahoo.vespa.hosted.provision.Node; import com.yahoo.vespa.hosted.provision.NodeList; @@ -62,9 +61,8 @@ public class RetiringOsUpgrader implements OsUpgrader { private NodeList candidates(Instant instant, OsVersionTarget target, NodeList allNodes) { NodeList activeNodes = allNodes.state(Node.State.active).nodeType(target.nodeType()); if (softRebuild) { - // Soft rebuild is enabled, so this should only act on hosts with local storage, or non-x86-64 - activeNodes = activeNodes.matching(node -> node.resources().storageType() == NodeResources.StorageType.local || - node.resources().architecture() != NodeResources.Architecture.x86_64); + // Retire only hosts which do not have a replaceable root disk + activeNodes = activeNodes.not().replaceableRootDisk(); } if (activeNodes.isEmpty()) return NodeList.of(); |