diff options
author | Valerij Fredriksen <freva@users.noreply.github.com> | 2019-05-13 09:39:25 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-13 09:39:25 +0200 |
commit | 7d2bd1cf16e9789ad7c5e506cdb2402c8fee00ce (patch) | |
tree | eda3d651182de823801fc204913438ac89c7d54e /node-repository | |
parent | 37f20987d59f27b11784ed57a6a03a2342409263 (diff) | |
parent | b405325ef0e06625e887c6e2e4bd5ebe3e1effd2 (diff) |
Merge pull request #9365 from vespa-engine/freva/provision-to-application-id
App ApplicationId to HostProvisioner
Diffstat (limited to 'node-repository')
3 files changed, 11 insertions, 9 deletions
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 5db9eaf3d08..d8862063491 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 @@ -3,7 +3,6 @@ package com.yahoo.vespa.hosted.provision.provisioning; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ClusterSpec; -import com.yahoo.config.provision.NodeFlavors; import com.yahoo.config.provision.OutOfCapacityException; import com.yahoo.lang.MutableInteger; import com.yahoo.transaction.Mutex; @@ -82,7 +81,8 @@ public class GroupPreparer { if (dynamicProvisioningEnabled) { List<ProvisionedHost> provisionedHosts = allocation.getFulfilledDockerDeficit() .map(deficit -> hostProvisioner.get().provisionHosts(nodeRepository.database().getProvisionIndexes(deficit.getCount()), - deficit.getFlavor())) + deficit.getFlavor(), + application)) .orElseGet(List::of); // At this point we have started provisioning of the hosts, the first priority is to make sure that diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostProvisioner.java index af933d0a8f0..394549e4141 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostProvisioner.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostProvisioner.java @@ -1,6 +1,7 @@ // Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.provision.provisioning; +import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.NodeResources; import com.yahoo.vespa.hosted.provision.Node; @@ -20,9 +21,10 @@ public interface HostProvisioner { * @param provisionIndexes List of unique provision indexes which will be used to generate the node hostnames * on the form of <code>[prefix][index].[domain]</code> * @param resources the resources needed per node + * @param applicationId id of the application that will own the provisioned host * @return list of {@link ProvisionedHost} describing the provisioned nodes */ - List<ProvisionedHost> provisionHosts(List<Integer> provisionIndexes, NodeResources resources); + List<ProvisionedHost> provisionHosts(List<Integer> provisionIndexes, NodeResources resources, ApplicationId applicationId); /** * Continue provisioning of given list of Nodes. diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java index 121819700ea..280eab44db3 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java @@ -7,8 +7,8 @@ import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.Capacity; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.Flavor; -import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.HostSpec; +import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; import com.yahoo.vespa.flags.Flags; import com.yahoo.vespa.flags.InMemoryFlagSource; @@ -49,7 +49,7 @@ public class DynamicDockerProvisionTest { mockHostProvisioner(hostProvisioner, tester.nodeRepository().getAvailableFlavors().getFlavorOrThrow("small")); List<HostSpec> hostSpec = tester.prepare(application1, clusterSpec("myContent.t1.a1"), 4, 1, flavor); - verify(hostProvisioner).provisionHosts(List.of(100, 101, 102, 103), flavor); + verify(hostProvisioner).provisionHosts(List.of(100, 101, 102, 103), flavor, application1); // Total of 8 nodes should now be in node-repo, 4 hosts in state provisioned, and 4 reserved nodes assertEquals(8, tester.nodeRepository().list().size()); @@ -69,7 +69,7 @@ public class DynamicDockerProvisionTest { mockHostProvisioner(hostProvisioner, tester.nodeRepository().getAvailableFlavors().getFlavorOrThrow("small")); tester.prepare(application, clusterSpec("myContent.t2.a2"), 2, 1, flavor); - verify(hostProvisioner).provisionHosts(List.of(100, 101), flavor); + verify(hostProvisioner).provisionHosts(List.of(100, 101), flavor, application); } @Test @@ -80,7 +80,7 @@ public class DynamicDockerProvisionTest { List<Integer> expectedProvisionIndexes = List.of(100, 101); mockHostProvisioner(hostProvisioner, tester.nodeRepository().getAvailableFlavors().getFlavorOrThrow("large")); tester.prepare(application, clusterSpec("myContent.t2.a2"), 2, 1, flavor); - verify(hostProvisioner).provisionHosts(expectedProvisionIndexes, flavor); + verify(hostProvisioner).provisionHosts(expectedProvisionIndexes, flavor, application); // Ready the provisioned hosts, add an IP addreses to pool and activate them for (Integer i : expectedProvisionIndexes) { @@ -95,7 +95,7 @@ public class DynamicDockerProvisionTest { mockHostProvisioner(hostProvisioner, tester.nodeRepository().getAvailableFlavors().getFlavorOrThrow("small")); tester.prepare(application, clusterSpec("another-id"), 2, 1, flavor); // Verify there was only 1 call to provision hosts (during the first prepare) - verify(hostProvisioner).provisionHosts(any(), any()); + verify(hostProvisioner).provisionHosts(any(), any(), any()); // Node-repo should now consist of 2 active hosts with 2 reserved nodes on each assertEquals(6, tester.nodeRepository().list().size()); @@ -129,6 +129,6 @@ public class DynamicDockerProvisionTest { return provisionIndexes.stream() .map(i -> new ProvisionedHost("id-" + i, "host-" + i, hostFlavor, "host-" + i + "-1", nodeResources)) .collect(Collectors.toList()); - }).when(hostProvisioner).provisionHosts(any(), any()); + }).when(hostProvisioner).provisionHosts(any(), any(), any()); } } |