summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2022-03-02 11:44:17 +0100
committerHarald Musum <musum@yahooinc.com>2022-03-02 11:44:17 +0100
commiteff5d9e71d62f9762cc254b01711999747298ade (patch)
treebf9c3e5c2dbd7d8ad12769a93773d978f46c7d66 /node-repository
parent6dd5ec32de99b3ad560d9314db509f6dbe1929cd (diff)
Ignore architecture when adding or subtracting NodeResources
Need to solve this long-term, but ignore for now as provisoning will not work as this is now.
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepoStats.java6
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java3
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java20
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java1
4 files changed, 18 insertions, 12 deletions
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 1d5c9f7a17d..ba8aa49d87c 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
@@ -68,9 +68,6 @@ public class NodeRepoStats {
NodeResources resources = node.get().resources();
- // TODO: Skip arm64 for now, add() does not work with mix of x86_64 and arm64 nodes
- if (resources.architecture() == NodeResources.Architecture.arm64) continue;
-
load = load.add(snapshot.get().load().multiply(resources));
totalActiveResources = totalActiveResources.add(resources.justNumbers());
}
@@ -78,9 +75,6 @@ public class NodeRepoStats {
NodeResources totalHostResources = NodeResources.zero();
for (var host : allNodes.hosts()) {
- // TODO: Skip arm64 for now, add() does not work with mix of x86_64 and arm64 nodes
- if (host.resources().architecture() == NodeResources.Architecture.arm64) continue;
-
totalHostResources = totalHostResources.add(host.resources().justNumbers());
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java
index 9148a2165a5..763fe1cab6f 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java
@@ -104,7 +104,8 @@ public class GroupPreparer {
.map(deficit -> hostProvisioner.get().provisionHosts(allocation.provisionIndices(deficit.count()),
hostType,
deficit.resources(),
- application, osVersion,
+ application,
+ osVersion,
sharing,
Optional.of(cluster.type())))
.orElseGet(List::of);
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
index ba9da20b615..94822c85a03 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
@@ -3,7 +3,6 @@ package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.component.Version;
import com.yahoo.config.provision.ApplicationId;
-import com.yahoo.config.provision.ApplicationTransaction;
import com.yahoo.config.provision.Capacity;
import com.yahoo.config.provision.ClusterMembership;
import com.yahoo.config.provision.ClusterResources;
@@ -13,15 +12,13 @@ import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.Flavor;
import com.yahoo.config.provision.HostFilter;
import com.yahoo.config.provision.HostSpec;
+import com.yahoo.config.provision.NodeAllocationException;
import com.yahoo.config.provision.NodeResources;
import com.yahoo.config.provision.NodeType;
-import com.yahoo.config.provision.NodeAllocationException;
import com.yahoo.config.provision.ParentHostUnavailableException;
-import com.yahoo.config.provision.ProvisionLock;
import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.SystemName;
import com.yahoo.config.provision.Zone;
-import com.yahoo.transaction.NestedTransaction;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeList;
import com.yahoo.vespa.hosted.provision.NodeMutex;
@@ -36,7 +33,6 @@ import com.yahoo.vespa.service.duper.InfraApplication;
import org.junit.Test;
import java.time.Duration;
-import java.time.Instant;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
@@ -1010,6 +1006,20 @@ public class ProvisioningTest {
stateAsserter.accept(new Zone(SystemName.cd, Environment.prod, RegionName.from("us-east")), Node.State.dirty);
}
+ @Test
+ public void arm64_architecture() {
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build();
+
+ NodeResources nodeResources = new NodeResources(1, 4, 10, 4, NodeResources.DiskSpeed.any, NodeResources.StorageType.any, NodeResources.Architecture.arm64);
+ tester.makeReadyHosts(4, nodeResources);
+ tester.prepareAndActivateInfraApplication(ProvisioningTester.applicationId(), NodeType.host);
+
+ ApplicationId application = ProvisioningTester.applicationId();
+ SystemState state = prepare(application, 1, 1, 1, 1, nodeResources, tester);
+ assertEquals(4, state.allHosts.size());
+ tester.activate(application, state.allHosts);
+ }
+
private SystemState prepare(ApplicationId application, int container0Size, int container1Size, int content0Size,
int content1Size, NodeResources flavor, ProvisioningTester tester) {
return prepare(application, tester, container0Size, container1Size, content0Size, content1Size, flavor, "6.42");
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
index 7b988f83c01..9f722507ba2 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
@@ -133,6 +133,7 @@ public class ProvisioningTester {
b.addFlavor("dockerLarge", 2., 10., 20, 1, Flavor.Type.DOCKER_CONTAINER).cost(3);
b.addFlavor("v-4-8-100", 4., 80., 100, 10, Flavor.Type.VIRTUAL_MACHINE).cost(4);
b.addFlavor("large", 4., 80., 100, 10, Flavor.Type.BARE_METAL).cost(10);
+ b.addFlavor("arm64", 4., 80., 100, 10, Flavor.Type.BARE_METAL, NodeResources.Architecture.arm64).cost(15);
return b.build();
}