diff options
author | Harald Musum <musum@yahooinc.com> | 2022-03-02 11:44:17 +0100 |
---|---|---|
committer | Harald Musum <musum@yahooinc.com> | 2022-03-02 11:44:17 +0100 |
commit | eff5d9e71d62f9762cc254b01711999747298ade (patch) | |
tree | bf9c3e5c2dbd7d8ad12769a93773d978f46c7d66 /node-repository | |
parent | 6dd5ec32de99b3ad560d9314db509f6dbe1929cd (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')
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(); } |