summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
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();