diff options
6 files changed, 10 insertions, 25 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java index b5943cedb9c..f6e0ede4e7d 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java @@ -436,9 +436,9 @@ class NodeAllocation { } private static Integer parseIndex(String hostname) { - // Node index is the first number appearing in the hostname + // Node index is the first number appearing in the hostname, before the first dot try { - return Integer.parseInt(hostname.replaceFirst("^\\D+(\\d+).*", "$1")); + return Integer.parseInt(hostname.replaceFirst("^\\D+(\\d+)\\..*", "$1")); } catch (NumberFormatException e) { throw new IllegalArgumentException("Could not parse index from hostname '" + hostname + "'", e); } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java index ec5444bfc98..22242e526f9 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java @@ -19,6 +19,7 @@ import com.yahoo.config.provision.Zone; import com.yahoo.transaction.Mutex; import com.yahoo.vespa.flags.FlagSource; import com.yahoo.vespa.hosted.provision.Node; +import com.yahoo.vespa.hosted.provision.NodeList; import com.yahoo.vespa.hosted.provision.NodeRepository; import com.yahoo.vespa.hosted.provision.applications.Application; import com.yahoo.vespa.hosted.provision.autoscale.AllocatableClusterResources; @@ -104,7 +105,7 @@ public class NodeRepositoryProvisioner implements Provisioner { else { groups = 1; // type request with multiple groups is not supported resources = requested.minResources().nodeResources(); - nodeSpec = NodeSpec.from(requested.type(), cluster.isExclusive()); + nodeSpec = NodeSpec.from(requested.type()); } return asSortedHosts(preparer.prepare(application, cluster, nodeSpec, groups), resources); } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java index 9a111deeac3..c3cb805499c 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java @@ -77,8 +77,8 @@ public interface NodeSpec { return new CountNodeSpec(nodeCount, resources, exclusive, canFail); } - static NodeSpec from(NodeType type, boolean exclusive) { - return new TypeNodeSpec(type, exclusive); + static NodeSpec from(NodeType type) { + return new TypeNodeSpec(type); } /** A node spec specifying a node count and a flavor */ @@ -174,18 +174,16 @@ public interface NodeSpec { private static final Map<NodeType, Integer> WANTED_NODE_COUNT = Map.of(NodeType.config, 3); private final NodeType type; - private final boolean exclusive; - public TypeNodeSpec(NodeType type, boolean exclusive) { + public TypeNodeSpec(NodeType type) { this.type = type; - this.exclusive = exclusive; } @Override public NodeType type() { return type; } @Override - public boolean isExclusive() { return exclusive; } + public boolean isExclusive() { return false; } @Override public boolean isCompatible(Flavor flavor, NodeFlavors flavors) { return true; } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java index a7a0848e1c1..25e74df677b 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java @@ -58,10 +58,6 @@ public class MockHostProvisioner implements HostProvisioner { Flavor hostFlavor = this.hostFlavor.orElseGet(() -> flavors.stream().filter(f -> compatible(f, resources)) .findFirst() .orElseThrow(() -> new OutOfCapacityException("No host flavor matches " + resources))); - Optional<ApplicationId> exclusiveTo = Optional.empty(); - if (sharing == HostSharing.exclusive) { - exclusiveTo = Optional.of(applicationId); - } List<ProvisionedHost> hosts = new ArrayList<>(); for (int index : provisionIndices) { String hostHostname = hostType == NodeType.host ? "hostname" + index : hostType.name() + index; @@ -69,7 +65,7 @@ public class MockHostProvisioner implements HostProvisioner { hostHostname, hostFlavor, hostType, - exclusiveTo, + Optional.empty(), createAddressesForHost(hostType, hostFlavor, index), resources, osVersion)); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java index 6e979de2879..f47bcd0d550 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java @@ -430,18 +430,13 @@ public class DynamicProvisioningMaintainerTest { // Initial config server hosts are provisioned manually ApplicationId hostApp = ApplicationId.from("hosted-vespa", "configserver-host", "default"); - ApplicationId configSrvApp = ApplicationId.from("hosted-vespa", "zone-config-servers", "default"); List<Node> provisionedHosts = tester.makeReadyNodes(3, "default", NodeType.confighost).stream() .sorted(Comparator.comparing(Node::hostname)) .collect(Collectors.toList()); tester.prepareAndActivateInfraApplication(hostApp, NodeType.confighost); - tester.patchNodes(provisionedHosts, (node) -> node.withExclusiveTo(configSrvApp)); - assertTrue("All hosts are exclusive", tester.nodeRepository().nodes().list() - .nodeType(NodeType.confighost) - .stream() - .allMatch(node -> node.allocation().get().membership().cluster().isExclusive())); // Provision config servers + ApplicationId configSrvApp = ApplicationId.from("hosted-vespa", "zone-config-servers", "default"); for (int i = 0; i < provisionedHosts.size(); i++) { tester.makeReadyChildren(1, i + 1, NodeResources.unspecified(), NodeType.config, provisionedHosts.get(i).hostname(), (nodeIndex) -> "cfg" + nodeIndex); @@ -505,10 +500,6 @@ public class DynamicProvisioningMaintainerTest { newNode = tester.nodeRepository().nodes().node(newNode.hostname()).get(); assertSame(Node.State.active, newNode.state()); assertEquals("Removed index is reused", removedIndex, newNode.allocation().get().membership().index()); - assertTrue("All nodes are exclusive", tester.nodeRepository().nodes().list() - .nodeType(NodeType.config) - .stream() - .allMatch(node -> node.allocation().get().membership().cluster().isExclusive())); // Next redeployment does nothing NodeList nodesBefore = tester.nodeRepository().nodes().list().nodeType(NodeType.config); 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 df348fc1c48..eefbd03ce4e 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 @@ -230,7 +230,6 @@ public class ProvisioningTester { ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from(nodeType.toString())) .vespaVersion(version) .stateful(nodeType == NodeType.config || nodeType == NodeType.controller) - .exclusive(nodeType != NodeType.tenant) .build(); Capacity capacity = Capacity.fromRequiredNodeType(nodeType); List<HostSpec> hostSpecs = prepare(application, cluster, capacity); |