aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@vespa.ai>2023-06-07 11:24:04 +0200
committerJon Bratseth <bratseth@vespa.ai>2023-06-07 11:24:04 +0200
commit9a351c620e0ffc30539d03cf79cceb1fef7ee6e3 (patch)
tree64855f2297a9bfccf59cc270d57a288c9b93b270 /node-repository
parentb49083e2b7223579efe40f7cd310bb769b26d22b (diff)
Specify a nodes resources fully
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java20
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeCandidate.java1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTest.java2
3 files changed, 20 insertions, 3 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java
index 29327aaf93a..c07ed653172 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java
@@ -97,8 +97,24 @@ public class Nodes {
* @param inState the states to return nodes from. If no states are given, all nodes are returned
*/
public NodeList list(Node.State... inState) {
- NodeList nodes = NodeList.copyOf(db.readNodes());
- return inState.length == 0 ? nodes : nodes.state(Set.of(inState));
+ NodeList allNodes = NodeList.copyOf(db.readNodes());
+ NodeList nodes = inState.length == 0 ? allNodes : allNodes.state(Set.of(inState));
+ nodes = NodeList.copyOf(nodes.stream().map(node -> specifyFully(node, allNodes)).toList());
+ return nodes;
+ }
+
+ // Repair underspecified node resources. TODO: Remove this after June 2023
+ private Node specifyFully(Node node, NodeList allNodes) {
+ if (node.resources().isUnspecified()) return node;
+
+ if (node.resources().bandwidthGbpsIsUnspecified())
+ node = node.with(new Flavor(node.resources().withBandwidthGbps(0.3)), Agent.system, clock.instant());
+ if (node.resources().architecture().isDefault()) {
+ Optional<Node> parent = allNodes.parentOf(node);
+ if (parent.isPresent())
+ node = node.with(new Flavor(node.resources().with(parent.get().resources().architecture())), Agent.system, clock.instant());
+ }
+ return node;
}
/** Returns a locked list of all nodes in this repository */
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeCandidate.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeCandidate.java
index b194730727f..8462e23fbfd 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeCandidate.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeCandidate.java
@@ -25,6 +25,7 @@ import java.util.logging.Logger;
* A node candidate containing the details required to prioritize it for allocation. This is immutable.
*
* @author smorgrav
+ * @author bratseth
*/
public abstract class NodeCandidate implements Nodelike, Comparable<NodeCandidate> {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTest.java
index 51522304350..51b3bb99f4c 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTest.java
@@ -29,7 +29,7 @@ public class CapacityCheckerTest {
var failurePath = tester.capacityChecker.worstCaseHostLossLeadingToFailure();
assertTrue(failurePath.isPresent());
assertTrue(tester.nodeRepository.nodes().list().nodeType(NodeType.host).asList().containsAll(failurePath.get().hostsCausingFailure));
- assertEquals(5, failurePath.get().hostsCausingFailure.size());
+ assertEquals(4, failurePath.get().hostsCausingFailure.size());
}
@Test