summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2022-11-17 13:12:06 +0100
committerMartin Polden <mpolden@mpolden.no>2022-11-17 15:52:42 +0100
commit9dcf585ee61ad50af9993b25257ca37df5843f28 (patch)
tree3b1de821facd3c6c46cb57b0747d7d7cf48144d1 /node-repository
parent22413c3ad0c0d27f8af4df8bd0c80019d90a0fbe (diff)
Simplify
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java9
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RebuildingOsUpgrader.java7
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringOsUpgrader.java6
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();