summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorValerij Fredriksen <freva@users.noreply.github.com>2019-05-13 09:39:25 +0200
committerGitHub <noreply@github.com>2019-05-13 09:39:25 +0200
commit7d2bd1cf16e9789ad7c5e506cdb2402c8fee00ce (patch)
treeeda3d651182de823801fc204913438ac89c7d54e /node-repository
parent37f20987d59f27b11784ed57a6a03a2342409263 (diff)
parentb405325ef0e06625e887c6e2e4bd5ebe3e1effd2 (diff)
Merge pull request #9365 from vespa-engine/freva/provision-to-application-id
App ApplicationId to HostProvisioner
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java4
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostProvisioner.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java12
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());
}
}