summaryrefslogtreecommitdiffstats
path: root/config-provisioning
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2023-10-24 13:56:54 +0200
committerjonmv <venstad@gmail.com>2023-10-24 13:56:54 +0200
commit613e6c34dd3eae9ff7ae67d4f1409672a859eafb (patch)
tree529bb3e913f98fd4656c0936b28c216bb3ee1b7f /config-provisioning
parent094c30a06a3e4441ee4dbeaa61de76fe1b6f54e4 (diff)
Actually set arch from flag for admin nodes
Diffstat (limited to 'config-provisioning')
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java9
-rw-r--r--config-provisioning/src/test/java/com/yahoo/config/provision/NodeResourcesTest.java44
2 files changed, 49 insertions, 4 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 c1296c6708e..a0c48200ff6 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
@@ -278,7 +278,7 @@ public class NodeResources {
return new NodeResources(vcpu, memoryGb, diskGb, bandwidthGbps, diskSpeed, storageType, architecture, gpuResources);
}
- public NodeResources withUnspecifiedNumbersFrom(NodeResources fullySpecified) {
+ public NodeResources withUnspecifiedFieldsFrom(NodeResources fullySpecified) {
var resources = this;
if (resources.vcpuIsUnspecified())
resources = resources.withVcpu(fullySpecified.vcpu());
@@ -288,6 +288,13 @@ public class NodeResources {
resources = resources.withDiskGb(fullySpecified.diskGb());
if (resources.bandwidthGbpsIsUnspecified())
resources = resources.withBandwidthGbps(fullySpecified.bandwidthGbps());
+ if (resources.diskSpeed() == DiskSpeed.any)
+ resources = resources.with(fullySpecified.diskSpeed());
+ if (resources.storageType() == StorageType.any)
+ resources = resources.with(fullySpecified.storageType());
+ if (resources.architecture() == Architecture.any)
+ resources = resources.with(fullySpecified.architecture());
+ assert fullySpecified.gpuResources() == GpuResources.zero : "Not handled";
return resources;
}
diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/NodeResourcesTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/NodeResourcesTest.java
index 27b659fe1c6..65ec070d744 100644
--- a/config-provisioning/src/test/java/com/yahoo/config/provision/NodeResourcesTest.java
+++ b/config-provisioning/src/test/java/com/yahoo/config/provision/NodeResourcesTest.java
@@ -1,22 +1,27 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
+import com.yahoo.config.provision.NodeResources.Architecture;
+import com.yahoo.config.provision.NodeResources.DiskSpeed;
+import com.yahoo.config.provision.NodeResources.GpuResources;
+import com.yahoo.config.provision.NodeResources.StorageType;
import org.junit.jupiter.api.Test;
import java.util.function.Supplier;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
/**
* @author bratseth
*/
-public class NodeResourcesTest {
+class NodeResourcesTest {
@Test
- public void testCost() {
+ void testCost() {
assertEquals(5.408, new NodeResources(32, 128, 1200, 1).cost(), 0.0001);
}
@@ -81,7 +86,40 @@ public class NodeResourcesTest {
}
@Test
- public void testJoiningResources() {
+ void testSpecifyFully() {
+ NodeResources empty = new NodeResources(0, 0, 0, 0).with(DiskSpeed.any);
+
+ assertEquals(0, empty.withUnspecifiedFieldsFrom(empty).vcpu());
+ assertEquals(3, empty.withUnspecifiedFieldsFrom(empty.withVcpu(3)).vcpu());
+ assertEquals(2, empty.withVcpu(2).withUnspecifiedFieldsFrom(empty.withVcpu(3)).vcpu());
+
+ assertEquals(0, empty.withUnspecifiedFieldsFrom(empty).memoryGb());
+ assertEquals(3, empty.withUnspecifiedFieldsFrom(empty.withMemoryGb(3)).memoryGb());
+ assertEquals(2, empty.withMemoryGb(2).withUnspecifiedFieldsFrom(empty.withMemoryGb(3)).memoryGb());
+
+ assertEquals(0, empty.withUnspecifiedFieldsFrom(empty).diskGb());
+ assertEquals(3, empty.withUnspecifiedFieldsFrom(empty.withDiskGb(3)).diskGb());
+ assertEquals(2, empty.withDiskGb(2).withUnspecifiedFieldsFrom(empty.withDiskGb(3)).diskGb());
+
+ assertEquals(0, empty.withUnspecifiedFieldsFrom(empty).bandwidthGbps());
+ assertEquals(3, empty.withUnspecifiedFieldsFrom(empty.withBandwidthGbps(3)).bandwidthGbps());
+ assertEquals(2, empty.withBandwidthGbps(2).withUnspecifiedFieldsFrom(empty.withBandwidthGbps(3)).bandwidthGbps());
+
+ assertEquals(Architecture.any, empty.withUnspecifiedFieldsFrom(empty).architecture());
+ assertEquals(Architecture.arm64, empty.withUnspecifiedFieldsFrom(empty.with(Architecture.arm64)).architecture());
+ assertEquals(Architecture.x86_64, empty.with(Architecture.x86_64).withUnspecifiedFieldsFrom(empty.with(Architecture.arm64)).architecture());
+
+ assertEquals(DiskSpeed.any, empty.withUnspecifiedFieldsFrom(empty).diskSpeed());
+ assertEquals(DiskSpeed.fast, empty.withUnspecifiedFieldsFrom(empty.with(DiskSpeed.fast)).diskSpeed());
+ assertEquals(DiskSpeed.slow, empty.with(DiskSpeed.slow).withUnspecifiedFieldsFrom(empty.with(DiskSpeed.fast)).diskSpeed());
+
+ assertEquals(StorageType.any, empty.withUnspecifiedFieldsFrom(empty).storageType());
+ assertEquals(StorageType.local, empty.withUnspecifiedFieldsFrom(empty.with(StorageType.local)).storageType());
+ assertEquals(StorageType.remote, empty.with(StorageType.remote).withUnspecifiedFieldsFrom(empty.with(StorageType.local)).storageType());
+ }
+
+ @Test
+ void testJoiningResources() {
var resources = new NodeResources(1, 2, 3, 1,
NodeResources.DiskSpeed.fast,
NodeResources.StorageType.local,