diff options
9 files changed, 26 insertions, 21 deletions
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java b/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java index 8fcdebc5d97..21349910ca1 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java @@ -208,7 +208,7 @@ public class NodeResources { /** Returns this with disk speed and storage type set to any */ public NodeResources justNumbers() { if (isUnspecified()) return unspecified(); - return with(NodeResources.DiskSpeed.any).with(StorageType.any); + return with(NodeResources.DiskSpeed.any).with(StorageType.any).with(Architecture.any); } /** Returns this with all numbers set to 0 */ @@ -227,7 +227,8 @@ public class NodeResources { diskGb - other.diskGb, bandwidthGbps - other.bandwidthGbps, this.diskSpeed.combineWith(other.diskSpeed), - this.storageType.combineWith(other.storageType)); + this.storageType.combineWith(other.storageType), + this.architecture.combineWith(other.architecture)); } public NodeResources add(NodeResources other) { @@ -239,7 +240,8 @@ public class NodeResources { diskGb + other.diskGb, bandwidthGbps + other.bandwidthGbps, this.diskSpeed.combineWith(other.diskSpeed), - this.storageType.combineWith(other.storageType)); + this.storageType.combineWith(other.storageType), + this.architecture.combineWith(other.architecture)); } private boolean isInterchangeableWith(NodeResources other) { @@ -249,6 +251,8 @@ public class NodeResources { return false; if (this.storageType != StorageType.any && other.storageType != StorageType.any && this.storageType != other.storageType) return false; + if (this.architecture != Architecture.any && other.architecture != Architecture.any && this.architecture != other.architecture) + return false; return true; } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepoStats.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepoStats.java index 338187c5270..fadd6814e64 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepoStats.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepoStats.java @@ -58,7 +58,7 @@ public class NodeRepoStats { } private static Pair<Load, Load> computeLoad(NodeList allNodes, List<NodeTimeseries> allNodeTimeseries) { - NodeResources totalActiveResources = NodeResources.zero(); + NodeResources totalActiveResources = NodeResources.zero().justNumbers(); Load load = Load.zero(); for (var nodeTimeseries : allNodeTimeseries) { Optional<Node> node = allNodes.node(nodeTimeseries.hostname()); @@ -73,7 +73,7 @@ public class NodeRepoStats { totalActiveResources = totalActiveResources.add(resources.justNumbers()); } - NodeResources totalHostResources = NodeResources.zero(); + NodeResources totalHostResources = NodeResources.zero().justNumbers(); for (var host : allNodes.hosts()) { totalHostResources = totalHostResources.add(host.resources().justNumbers()); @@ -91,8 +91,8 @@ public class NodeRepoStats { .not().tester() .groupingBy(node -> node.allocation().get().owner()).entrySet()) { - NodeResources totalResources = NodeResources.zero(); - NodeResources totalUtilizedResources = NodeResources.zero(); + NodeResources totalResources = NodeResources.zero().justNumbers(); + NodeResources totalUtilizedResources = NodeResources.zero().justNumbers(); for (var node : applicationNodes.getValue()) { var snapshot = snapshotsByHost.get(node.hostname()); if (snapshot == null) continue; diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableClusterResources.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableClusterResources.java index 5664b9bd7f4..88a4b492a0b 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableClusterResources.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableClusterResources.java @@ -125,7 +125,7 @@ public class AllocatableClusterResources { } private static NodeResources averageRealResourcesOf(List<Node> nodes, NodeRepository nodeRepository) { - NodeResources sum = new NodeResources(0, 0, 0, 0); + NodeResources sum = new NodeResources(0, 0, 0, 0).justNumbers(); for (Node node : nodes) sum = sum.add(nodeRepository.resourcesCalculator().realResourcesOf(node, nodeRepository).justNumbers()); return nodes.get(0).allocation().get().requestedResources().justNonNumbers() diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java index 636884cef0a..1fe29c8b162 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java @@ -343,7 +343,7 @@ public class MetricsReporter extends NodeRepositoryMaintainer { (applicationId, applicationNodes) -> { var allocatedCapacity = applicationNodes.stream() .map(node -> node.allocation().get().requestedResources().justNumbers()) - .reduce(new NodeResources(0, 0, 0, 0, any), NodeResources::add); + .reduce(new NodeResources(0, 0, 0, 0, any).justNumbers(), NodeResources::add); var context = getContext(dimensions(applicationId)); @@ -379,14 +379,14 @@ public class MetricsReporter extends NodeRepositoryMaintainer { return nodes.hosts().state(State.active).asList().stream() .map(host -> host.flavor().resources()) .map(NodeResources::justNumbers) - .reduce(new NodeResources(0, 0, 0, 0, any), NodeResources::add); + .reduce(new NodeResources(0, 0, 0, 0, any).justNumbers(), NodeResources::add); } private static NodeResources getFreeCapacityTotal(NodeList nodes) { return nodes.hosts().state(State.active).asList().stream() .map(n -> freeCapacityOf(nodes, n)) .map(NodeResources::justNumbers) - .reduce(new NodeResources(0, 0, 0, 0, any), NodeResources::add); + .reduce(new NodeResources(0, 0, 0, 0, any).justNumbers(), NodeResources::add); } private static NodeResources freeCapacityOf(NodeList nodes, Node host) { diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/Rebalancer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/Rebalancer.java index 6a18003db62..3dd0b7d45a5 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/Rebalancer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/Rebalancer.java @@ -77,14 +77,14 @@ public class Rebalancer extends NodeMover<Rebalancer.Move> { } private double skewReductionByRemoving(Node node, Node fromHost, HostCapacity capacity) { - NodeResources freeHostCapacity = capacity.unusedCapacityOf(fromHost); + NodeResources freeHostCapacity = capacity.unusedCapacityOf(fromHost).justNumbers(); double skewBefore = Node.skew(fromHost.flavor().resources(), freeHostCapacity); double skewAfter = Node.skew(fromHost.flavor().resources(), freeHostCapacity.add(node.flavor().resources().justNumbers())); return skewBefore - skewAfter; } private double skewReductionByAdding(Node node, Node toHost, HostCapacity capacity) { - NodeResources freeHostCapacity = capacity.unusedCapacityOf(toHost); + NodeResources freeHostCapacity = capacity.unusedCapacityOf(toHost).justNumbers(); double skewBefore = Node.skew(toHost.flavor().resources(), freeHostCapacity); double skewAfter = Node.skew(toHost.flavor().resources(), freeHostCapacity.subtract(node.resources().justNumbers())); return skewBefore - skewAfter; diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainer.java index b12f2c052c5..541194af36f 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainer.java @@ -296,11 +296,11 @@ public class SpareCapacityMaintainer extends NodeRepositoryMaintainer { NodeResources resources = hostCapacity.availableCapacityOf(host); for (Move move : moves) { if ( ! move.toHost().equals(host)) continue; - resources = resources.subtract(move.node().resources()); + resources = resources.subtract(move.node().resources()).justNumbers(); } for (Move move : moves) { if ( ! move.fromHost().equals(host)) continue; - resources = resources.add(move.node().resources()); + resources = resources.add(move.node().resources()).justNumbers(); } return resources; } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTester.java index 68aea0e9056..d9eef310c20 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTester.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTester.java @@ -76,7 +76,8 @@ public class CapacityCheckerTester { new MemoryMetricsDb(clock), new OrchestratorMock(), true, - 0, 1000); + 0, + 1000); } private void updateCapacityChecker() { @@ -208,7 +209,8 @@ public class CapacityCheckerTester { NodeResources containingNodeResources(List<NodeResources> resources, NodeResources excessCapacity) { NodeResources usedByChildren = resources.stream() - .reduce(new NodeResources(0, 0, 0, 0), NodeResources::add); + .map(NodeResources::justNumbers) + .reduce(new NodeResources(0, 0, 0, 0).justNumbers(), NodeResources::add); return usedByChildren.add(excessCapacity); } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirerTest.java index 93cbce3f894..c642897748e 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirerTest.java @@ -17,10 +17,8 @@ import com.yahoo.vespa.hosted.provision.provisioning.ProvisioningTester; import org.junit.Test; import java.time.Duration; -import java.util.List; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; /** * @author bratseth @@ -35,7 +33,7 @@ public class ReservationExpirerTest { NodeRepository nodeRepository = tester.nodeRepository(); TestMetric metric = new TestMetric(); - NodeResources nodeResources = new NodeResources(2, 8, 50, 1); + NodeResources nodeResources = new NodeResources(2, 8, 50, 1).justNumbers(); NodeResources hostResources = nodeResources.add(nodeResources).add(nodeResources); tester.makeReadyNodes(2, nodeResources); tester.makeReadyHosts(1, hostResources); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainerTest.java index 2fa18681ece..00fff017836 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainerTest.java @@ -270,7 +270,8 @@ public class SpareCapacityMaintainerTest { new MemoryMetricsDb(clock), new OrchestratorMock(), true, - 1, 1000); + 1, + 1000); deployer = new MockDeployer(nodeRepository); maintainer = new SpareCapacityMaintainer(deployer, nodeRepository, metric, Duration.ofDays(1), maxIterations); } |