aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository/src/test/java
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@yahooinc.com>2023-06-30 10:50:05 +0200
committerValerij Fredriksen <valerijf@yahooinc.com>2023-06-30 10:50:05 +0200
commitea4fb622c501bf5872ce916711a36402354a84b2 (patch)
tree41623e3664f2b9851add9c0ee02977b7349a3db0 /node-repository/src/test/java
parentb6dab7712c045d0c6c5772ee0fe5d75f6f231f19 (diff)
Revert "Revert "Use real InfraApplication in node-repository tests""
This reverts commit d4ab68364ee14e9360fc7b17ba1100ccb934b4a1.
Diffstat (limited to 'node-repository/src/test/java')
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/RealDataScenarioTest.java3
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTester.java7
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ExpeditedChangeApplicationMaintainerTest.java16
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java21
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostCapacityMaintainerTest.java40
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostFlavorUpgraderTest.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java24
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java74
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OsUpgradeActivatorTest.java9
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java7
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RebalancerTest.java9
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java15
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SwitchRebalancerTest.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java34
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java12
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InPlaceResizeProvisionTest.java5
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java27
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java72
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java23
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java65
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java6
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/ArchiveApiTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg1.json10
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg2.json10
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-os-upgrade-complete.json8
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-2.json8
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-3.json8
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-4.json8
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports.json8
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1.json8
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node2.json8
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node3.json8
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node4.json8
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node5.json8
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/dockerhost1-with-firmware-data.json8
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/load-balancers.json27
37 files changed, 296 insertions, 322 deletions
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/RealDataScenarioTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/RealDataScenarioTest.java
index 9c843b3eb01..1ed3c13cfff 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/RealDataScenarioTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/RealDataScenarioTest.java
@@ -46,7 +46,6 @@ import java.time.Duration;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Consumer;
import java.util.logging.Logger;
@@ -105,7 +104,7 @@ public class RealDataScenarioTest {
for (int i = 0; i < specs.length; i++) {
contexts.add(new MockDeployer.ClusterContext(app, specs[i], capacities[i]));
}
- MockDeployer deployer = new MockDeployer(tester.provisioner(), tester.clock(), Map.of(app, new MockDeployer.ApplicationContext(app, contexts)));
+ MockDeployer deployer = new MockDeployer(tester.provisioner(), tester.clock(), List.of(new MockDeployer.ApplicationContext(app, contexts)));
SwitchRebalancer rebalancer = new SwitchRebalancer(tester.nodeRepository(), Duration.ofDays(1), new MockMetric(), deployer);
rebalancer.run();
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTester.java
index 95e36787219..ab8175cf989 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTester.java
@@ -19,18 +19,15 @@ import com.yahoo.vespa.hosted.provision.applications.Cluster;
import com.yahoo.vespa.hosted.provision.autoscale.ClusterMetricSnapshot;
import com.yahoo.vespa.hosted.provision.autoscale.Load;
import com.yahoo.vespa.hosted.provision.autoscale.NodeMetricSnapshot;
-import com.yahoo.vespa.hosted.provision.autoscale.MetricsDb;
import com.yahoo.vespa.hosted.provision.provisioning.FlavorConfigBuilder;
import com.yahoo.vespa.hosted.provision.provisioning.ProvisioningTester;
import com.yahoo.vespa.hosted.provision.testutils.MockDeployer;
import java.time.Duration;
import java.time.Instant;
-import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.function.IntFunction;
-import java.util.stream.Collectors;
/**
* @author bratseth
@@ -48,9 +45,7 @@ public class AutoscalingMaintainerTester {
public AutoscalingMaintainerTester(Zone zone, MockDeployer.ApplicationContext ... appContexts) {
provisioningTester = new ProvisioningTester.Builder().zone(zone).flavorsConfig(flavorsConfig()).build();
provisioningTester.clock().setInstant(Instant.ofEpochMilli(0));
- Map<ApplicationId, MockDeployer.ApplicationContext> apps = Arrays.stream(appContexts)
- .collect(Collectors.toMap(c -> c.id(), c -> c));
- deployer = new MockDeployer(provisioningTester.provisioner(), provisioningTester.clock(), apps);
+ deployer = new MockDeployer(provisioningTester.provisioner(), provisioningTester.clock(), List.of(appContexts));
maintainer = new AutoscalingMaintainer(provisioningTester.nodeRepository(),
deployer,
new TestMetric(),
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ExpeditedChangeApplicationMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ExpeditedChangeApplicationMaintainerTest.java
index 908598b25fb..e1e2ff3db15 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ExpeditedChangeApplicationMaintainerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ExpeditedChangeApplicationMaintainerTest.java
@@ -1,6 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
+import com.yahoo.component.Version;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ApplicationName;
import com.yahoo.config.provision.Capacity;
@@ -16,10 +17,11 @@ import com.yahoo.vespa.hosted.provision.NodeRepository;
import com.yahoo.vespa.hosted.provision.node.Agent;
import com.yahoo.vespa.hosted.provision.provisioning.ProvisioningTester;
import com.yahoo.vespa.hosted.provision.testutils.MockDeployer;
+import com.yahoo.vespa.service.duper.InfraApplication;
import org.junit.Test;
import java.time.Duration;
-import java.util.Map;
+import java.util.List;
import static org.junit.Assert.assertEquals;
@@ -86,12 +88,12 @@ public class ExpeditedChangeApplicationMaintainerTest {
final MockDeployer deployer;
final NodeResources nodeResources = new NodeResources(2, 8, 50, 1);
+ final InfraApplication proxyApp = ProvisioningTester.infraApplication(NodeType.proxy);
final ApplicationId app1 = ApplicationId.from(TenantName.from("foo1"), ApplicationName.from("bar"), InstanceName.from("fuz"));
final ApplicationId app2 = ApplicationId.from(TenantName.from("foo2"), ApplicationName.from("bar"), InstanceName.from("fuz"));
- final ApplicationId app3 = ApplicationId.from(TenantName.from("hosted-vespa"), ApplicationName.from("routing"), InstanceName.from("default"));
+ final ApplicationId app3 = proxyApp.getApplicationId();
final ClusterSpec clusterApp1 = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("test")).vespaVersion("6.42").build();
final ClusterSpec clusterApp2 = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("test")).vespaVersion("6.42").build();
- final ClusterSpec clusterApp3 = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("routing")).vespaVersion("6.42").build();
final int wantedNodesApp1 = 5;
final int wantedNodesApp2 = 7;
final int wantedNodesApp3 = 2;
@@ -99,10 +101,10 @@ public class ExpeditedChangeApplicationMaintainerTest {
Fixture() {
this.tester = new ProvisioningTester.Builder().build();
this.nodeRepository = tester.nodeRepository();
- Map<ApplicationId, MockDeployer.ApplicationContext> apps = Map.of(
- app1, new MockDeployer.ApplicationContext(app1, clusterApp1, Capacity.from(new ClusterResources(wantedNodesApp1, 1, nodeResources))),
- app2, new MockDeployer.ApplicationContext(app2, clusterApp2, Capacity.from(new ClusterResources(wantedNodesApp2, 1, nodeResources))),
- app3, new MockDeployer.ApplicationContext(app3, clusterApp3, Capacity.fromRequiredNodeType(NodeType.proxy))) ;
+ List<MockDeployer.ApplicationContext> apps = List.of(
+ new MockDeployer.ApplicationContext(app1, clusterApp1, Capacity.from(new ClusterResources(wantedNodesApp1, 1, nodeResources))),
+ new MockDeployer.ApplicationContext(app2, clusterApp2, Capacity.from(new ClusterResources(wantedNodesApp2, 1, nodeResources))),
+ new MockDeployer.ApplicationContext(proxyApp, Version.fromString("6.42")));
this.deployer = new MockDeployer(tester.provisioner(), nodeRepository.clock(), apps);
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java
index 4978fe431dc..d36ee0f0494 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java
@@ -38,7 +38,6 @@ import java.time.Instant;
import java.util.List;
import java.util.Optional;
import java.util.Set;
-import java.util.stream.Collectors;
import java.util.stream.Stream;
import static org.junit.Assert.assertEquals;
@@ -49,13 +48,6 @@ import static org.junit.Assert.assertEquals;
*/
public class FailedExpirerTest {
- private static final ApplicationId tenantHostApplicationId = ApplicationId.from("vespa", "zone-app", "default");
-
- private static final ClusterSpec tenantHostApplicationClusterSpec =
- ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("node-admin")).vespaVersion("6.42").build();
-
- private static final Capacity tenantHostApplicationCapacity = Capacity.fromRequiredNodeType(NodeType.host);
-
@Test
public void ensure_failed_nodes_are_deallocated_in_test_quickly() {
FailureScenario scenario = new FailureScenario(SystemName.main, Environment.test)
@@ -138,9 +130,7 @@ public class FailedExpirerTest {
.withNode(NodeType.proxy, FailureScenario.defaultFlavor, "proxy2")
.withNode(NodeType.proxy, FailureScenario.defaultFlavor, "proxy3")
.setReady("proxy1", "proxy2", "proxy3")
- .allocate(ApplicationId.from("vespa", "zone-app", "default"),
- ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("routing")).vespaVersion("6.42").build(),
- Capacity.fromRequiredNodeType(NodeType.proxy))
+ .allocate(NodeType.proxy)
.failNode(1, "proxy1");
for (int i = 0; i < 10; i++) {
@@ -159,7 +149,7 @@ public class FailedExpirerTest {
.withNode(NodeType.host, FailureScenario.defaultFlavor, "parent2")
.withNode(NodeType.host, FailureScenario.defaultFlavor, "parent3")
.setReady("parent1", "parent2", "parent3")
- .allocate(tenantHostApplicationId, tenantHostApplicationClusterSpec, tenantHostApplicationCapacity)
+ .allocate(NodeType.host)
.withNode(NodeType.tenant, FailureScenario.dockerFlavor, "node1", "parent1")
.withNode(NodeType.tenant, FailureScenario.dockerFlavor, "node2", "parent2")
.withNode(NodeType.tenant, FailureScenario.dockerFlavor, "node3", "parent3")
@@ -181,7 +171,7 @@ public class FailedExpirerTest {
.withNode(NodeType.host, FailureScenario.defaultFlavor, "parent2")
.withNode(NodeType.host, FailureScenario.defaultFlavor, "parent3")
.setReady("parent1", "parent2", "parent3")
- .allocate(tenantHostApplicationId, tenantHostApplicationClusterSpec, tenantHostApplicationCapacity)
+ .allocate(NodeType.host)
.withNode(NodeType.tenant, FailureScenario.dockerFlavor, "node1", "parent1")
.withNode(NodeType.tenant, FailureScenario.dockerFlavor, "node2", "parent2")
.withNode(NodeType.tenant, FailureScenario.dockerFlavor, "node3", "parent3")
@@ -338,6 +328,11 @@ public class FailedExpirerTest {
return this;
}
+ public FailureScenario allocate(NodeType nodeType) {
+ tester.prepareAndActivateInfraApplication(nodeType);
+ return this;
+ }
+
public void assertNodesIn(Node.State state, String... hostnames) {
assertEquals(Set.of(hostnames), nodeRepository.nodes().list(state).hostnames());
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostCapacityMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostCapacityMaintainerTest.java
index c16ed47a216..0478e5d1486 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostCapacityMaintainerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostCapacityMaintainerTest.java
@@ -367,16 +367,16 @@ public class HostCapacityMaintainerTest {
}
private void replace_config_server_like(NodeType hostType) {
- final ApplicationId hostApp;
- final ApplicationId configSrvApp;
+ final InfraApplication hostApp;
+ final InfraApplication configSrvApp;
switch (hostType) {
case confighost -> {
- hostApp = new ConfigServerHostApplication().getApplicationId();
- configSrvApp = new ConfigServerApplication().getApplicationId();
+ hostApp = new ConfigServerHostApplication();
+ configSrvApp = new ConfigServerApplication();
}
case controllerhost -> {
- hostApp = new ControllerHostApplication().getApplicationId();
- configSrvApp = new ControllerApplication().getApplicationId();
+ hostApp = new ControllerHostApplication();
+ configSrvApp = new ControllerApplication();
}
default -> throw new IllegalArgumentException("Unexpected config server host like node type: " + hostType);
}
@@ -390,14 +390,14 @@ public class HostCapacityMaintainerTest {
List<Node> provisionedHosts = tester.makeReadyNodes(3, "default", hostType, 1).stream()
.sorted(Comparator.comparing(Node::hostname))
.toList();
- tester.prepareAndActivateInfraApplication(hostApp, hostType);
+ tester.prepareAndActivateInfraApplication(hostApp);
// Provision config servers
for (int i = 0; i < provisionedHosts.size(); i++) {
tester.makeReadyChildren(1, i + 1, new NodeResources(1.5, 8, 50, 0.3), hostType.childNodeType(),
provisionedHosts.get(i).hostname(), (nodeIndex) -> "cfg" + nodeIndex);
}
- tester.prepareAndActivateInfraApplication(configSrvApp, hostType.childNodeType());
+ tester.prepareAndActivateInfraApplication(configSrvApp);
// Expected number of hosts and children are provisioned
NodeList allNodes = tester.nodeRepository().nodes().list().not().state(State.deprovisioned);
@@ -413,7 +413,7 @@ public class HostCapacityMaintainerTest {
tester.nodeRepository().nodes().deprovision(hostToRemove.get().hostname(), Agent.system, tester.clock().instant());
// Redeployment of config server application retires node
- tester.prepareAndActivateInfraApplication(configSrvApp, hostType.childNodeType());
+ tester.prepareAndActivateInfraApplication(configSrvApp);
assertTrue("Redeployment retires node", nodeToRemove.get().allocation().get().membership().retired());
// Config server becomes removable (done by RetiredExpirer in a real system) and redeployment moves it
@@ -421,8 +421,8 @@ public class HostCapacityMaintainerTest {
int removedIndex = nodeToRemove.get().allocation().get().membership().index();
tester.nodeRepository().nodes().setRemovable(NodeList.of(nodeToRemove.get()), true);
tester.nodeRepository().nodes().setRemovable(NodeList.of(hostToRemove.get()), true);
- tester.prepareAndActivateInfraApplication(configSrvApp, hostType.childNodeType());
- tester.prepareAndActivateInfraApplication(hostApp, hostType);
+ tester.prepareAndActivateInfraApplication(configSrvApp);
+ tester.prepareAndActivateInfraApplication(hostApp);
tester.nodeRepository().nodes().markNodeAvailableForNewAllocation(nodeToRemove.get().hostname(), Agent.nodeAdmin, "Readied by host-admin");
tester.nodeRepository().nodes().markNodeAvailableForNewAllocation(hostToRemove.get().hostname(), Agent.nodeAdmin, "Readied by host-admin");
assertEquals(2, tester.nodeRepository().nodes().list().nodeType(hostType.childNodeType()).state(Node.State.active).size());
@@ -443,13 +443,13 @@ public class HostCapacityMaintainerTest {
// Deployment by the removed host has no effect
HostName.setHostNameForTestingOnly("cfg2.example.com");
- tester.prepareAndActivateInfraApplication(configSrvApp, hostType.childNodeType());
+ tester.prepareAndActivateInfraApplication(configSrvApp);
assertEquals(List.of(), dynamicProvisioningTester.hostProvisioner.provisionedHosts());
// Deployment on another config server starts provisioning a new host and child
HostName.setHostNameForTestingOnly("cfg3.example.com");
assertEquals(0, tester.nodeRepository().nodes().list(Node.State.reserved).nodeType(hostType.childNodeType()).size());
- assertEquals(2, tester.prepareAndActivateInfraApplication(configSrvApp, hostType.childNodeType()).size());
+ assertEquals(2, tester.prepareAndActivateInfraApplication(configSrvApp).size());
assertEquals(1, tester.nodeRepository().nodes().list(Node.State.reserved).nodeType(hostType.childNodeType()).size());
Node newNode = tester.nodeRepository().nodes().list(Node.State.reserved).nodeType(hostType.childNodeType()).first().get();
@@ -458,18 +458,18 @@ public class HostCapacityMaintainerTest {
List<ProvisionedHost> newHosts = dynamicProvisioningTester.hostProvisioner.provisionedHosts();
assertEquals(1, newHosts.size());
tester.move(Node.State.ready, newHosts.get(0).hostHostname());
- tester.prepareAndActivateInfraApplication(hostApp, hostType);
+ tester.prepareAndActivateInfraApplication(hostApp);
assertEquals(3, tester.nodeRepository().nodes().list(Node.State.active).nodeType(hostType).size());
// Redeployment of config server app actives new node
- tester.prepareAndActivateInfraApplication(configSrvApp, hostType.childNodeType());
+ tester.prepareAndActivateInfraApplication(configSrvApp);
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());
// Next redeployment does nothing
NodeList nodesBefore = tester.nodeRepository().nodes().list().nodeType(hostType.childNodeType());
- tester.prepareAndActivateInfraApplication(configSrvApp, hostType.childNodeType());
+ tester.prepareAndActivateInfraApplication(configSrvApp);
NodeList nodesAfter = tester.nodeRepository().nodes().list().nodeType(hostType.childNodeType());
assertEquals(nodesBefore, nodesAfter);
}
@@ -592,9 +592,11 @@ public class HostCapacityMaintainerTest {
Duration.ofHours(1),
Duration.ofHours(1)).maintain();
- // Host and children can now be removed.
tester.provisioningTester.activateTenantHosts();
- tester.maintain();
+ // Hosts move themselves to parked (via ready) once they've synced up their logs to archive and are then deprovisioned
+ tester.nodeRepository.nodes().list(State.dirty).forEach(node ->
+ tester.nodeRepository.nodes().markNodeAvailableForNewAllocation(node.hostname(), Agent.nodeAdmin, "Readied by host-admin"));
+ tester.deprovisioner.maintain();
assertEquals(List.of(), tester.nodeRepository.nodes().list().not().state(State.deprovisioned).asList());
}
@@ -645,7 +647,7 @@ public class HostCapacityMaintainerTest {
for (var hostname : provisionedHostnames) {
tester.provisioningTester.move(Node.State.ready, hostname);
}
- tester.provisioningTester.prepareAndActivateInfraApplication(DynamicProvisioningTester.tenantHostApp.getApplicationId(), NodeType.host);
+ tester.provisioningTester.activateTenantHosts();
NodeList activeHosts = tester.provisioningTester.nodeRepository().nodes()
.list(Node.State.active)
.nodeType(NodeType.host)
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostFlavorUpgraderTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostFlavorUpgraderTest.java
index 6224143aabf..9fe323201f0 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostFlavorUpgraderTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostFlavorUpgraderTest.java
@@ -17,7 +17,7 @@ import com.yahoo.vespa.hosted.provision.testutils.MockHostProvisioner.Behaviour;
import org.junit.jupiter.api.Test;
import java.time.Duration;
-import java.util.Map;
+import java.util.List;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -41,7 +41,7 @@ class HostFlavorUpgraderTest {
NodeResources.DiskSpeed.fast, NodeResources.StorageType.remote);
ClusterSpec spec = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("c1")).vespaVersion("1").build();
Capacity capacity = Capacity.from(new ClusterResources(2, 1, resources));
- Map<ApplicationId, MockDeployer.ApplicationContext> applications = Map.of(app, new MockDeployer.ApplicationContext(app, spec, capacity));
+ List<MockDeployer.ApplicationContext> applications = List.of(new MockDeployer.ApplicationContext(app, spec, capacity));
MockDeployer deployer = new MockDeployer(tester.provisioner(), tester.clock(), applications);
HostFlavorUpgrader upgrader = new HostFlavorUpgrader(tester.nodeRepository(), Duration.ofDays(1),
new TestMetric(), deployer, hostProvisioner);
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java
index 563b76327e6..2f239f92c3f 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java
@@ -22,10 +22,10 @@ import com.yahoo.vespa.hosted.provision.provisioning.ProvisioningTester;
import com.yahoo.vespa.hosted.provision.testutils.MockDeployer;
import com.yahoo.vespa.orchestrator.OrchestrationException;
import com.yahoo.vespa.orchestrator.Orchestrator;
+import com.yahoo.vespa.service.duper.TenantHostApplication;
import org.junit.Test;
import java.time.Duration;
-import java.util.Collections;
import java.util.HashSet;
import java.util.List;
@@ -111,9 +111,7 @@ public class InactiveAndFailedExpirerTest {
MockDeployer deployer = new MockDeployer(
tester.provisioner(),
tester.clock(),
- Collections.singletonMap(
- applicationId,
- new MockDeployer.ApplicationContext(applicationId, cluster,
+ List.of(new MockDeployer.ApplicationContext(applicationId, cluster,
Capacity.from(new ClusterResources(2, 1, nodeResources),
false, true))
)
@@ -161,19 +159,15 @@ public class InactiveAndFailedExpirerTest {
tester.makeReadyHosts(2, nodeResources);
// Activate and deallocate
- ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("test")).vespaVersion("6.42").build();
- List<HostSpec> preparedNodes = tester.prepare(applicationId, cluster, Capacity.fromRequiredNodeType(NodeType.host));
- tester.activate(applicationId, new HashSet<>(preparedNodes));
- assertEquals(2, tester.getNodes(applicationId, Node.State.active).size());
- tester.activate(applicationId, List.of());
- List<Node> inactiveNodes = tester.getNodes(applicationId, Node.State.inactive).asList();
- assertEquals(2, inactiveNodes.size());
+ TenantHostApplication tenantHostApp = new TenantHostApplication();
+ tester.prepareAndActivateInfraApplication(tenantHostApp);
+ assertEquals(2, tester.getNodes(tenantHostApp.getApplicationId(), Node.State.active).size());
+ tester.activate(tenantHostApp.getApplicationId(), List.of());
+ List<Node> dirtyNodes = tester.getNodes(tenantHostApp.getApplicationId(), Node.State.dirty).asList();
+ assertEquals(2, dirtyNodes.size());
// Nodes marked for deprovisioning are moved to dirty and then parked when readied by host-admin
- tester.patchNodes(inactiveNodes, (node) -> node.withWantToRetire(true, true, Agent.system, tester.clock().instant()));
- tester.advanceTime(Duration.ofMinutes(11));
- new InactiveExpirer(tester.nodeRepository(), Duration.ofMinutes(10), new TestMetric()).run();
-
+ tester.patchNodes(dirtyNodes, (node) -> node.withWantToRetire(true, true, Agent.system, tester.clock().instant()));
NodeList expired = tester.nodeRepository().nodes().list(Node.State.dirty);
assertEquals(2, expired.size());
expired.forEach(node -> tester.nodeRepository().nodes().markNodeAvailableForNewAllocation(node.hostname(), Agent.operator, "Readied by host-admin"));
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java
index a07a4f2c72a..4d2816cb14f 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java
@@ -1,6 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
+import com.yahoo.component.Version;
import com.yahoo.config.provision.ActivationContext;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ApplicationTransaction;
@@ -27,6 +28,8 @@ import com.yahoo.vespa.hosted.provision.provisioning.NodeRepositoryProvisioner;
import com.yahoo.vespa.hosted.provision.provisioning.ProvisioningTester;
import com.yahoo.vespa.hosted.provision.testutils.MockDeployer;
import com.yahoo.vespa.hosted.provision.testutils.ServiceMonitorStub;
+import com.yahoo.vespa.service.duper.InfraApplication;
+import com.yahoo.vespa.service.duper.TenantHostApplication;
import java.time.Clock;
import java.time.Duration;
@@ -35,6 +38,7 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
+import java.util.stream.Collectors;
import static org.junit.Assert.assertEquals;
@@ -46,7 +50,6 @@ public class NodeFailTester {
public static final NodeResources nodeResources = new NodeResources(2, 8, 500, 1);
// Immutable components
- public static final ApplicationId tenantHostApp = ApplicationId.from("hosted-vespa", "tenant-host", "default");
public static final ApplicationId app1 = ApplicationId.from("foo1", "bar", "fuz");
public static final ApplicationId app2 = ApplicationId.from("foo2", "bar", "fuz");
public static final ClusterSpec.Id testCluster = ClusterSpec.Id.from("test");
@@ -74,9 +77,11 @@ public class NodeFailTester {
provisioner = tester.provisioner();
}
- private void initializeMaintainers(Map<ApplicationId, MockDeployer.ApplicationContext> apps) {
+ private void initializeMaintainers(List<MockDeployer.ApplicationContext> apps) {
+ Map<ApplicationId, MockDeployer.ApplicationContext> appsMap = apps.stream()
+ .collect(Collectors.toMap(MockDeployer.ApplicationContext::id, context -> context));
deployer = new MockDeployer(provisioner, tester.clock(), apps);
- serviceMonitor = new ServiceMonitorStub(apps, nodeRepository);
+ serviceMonitor = new ServiceMonitorStub(appsMap, nodeRepository);
metric = new TestMetric();
failer = createFailer();
updater = createUpdater();
@@ -99,9 +104,9 @@ public class NodeFailTester {
assertEquals(capacity1.minResources().nodes(), tester.nodeRepository.nodes().list(Node.State.active).owner(app1).size());
assertEquals(capacity2.minResources().nodes(), tester.nodeRepository.nodes().list(Node.State.active).owner(app2).size());
- Map<ApplicationId, MockDeployer.ApplicationContext> apps = Map.of(
- app1, new MockDeployer.ApplicationContext(app1, clusterApp1, capacity1),
- app2, new MockDeployer.ApplicationContext(app2, clusterApp2, capacity2));
+ List<MockDeployer.ApplicationContext> apps = List.of(
+ new MockDeployer.ApplicationContext(app1, clusterApp1, capacity1),
+ new MockDeployer.ApplicationContext(app2, clusterApp2, capacity2));
tester.initializeMaintainers(apps);
return tester;
}
@@ -112,24 +117,24 @@ public class NodeFailTester {
tester.tester.makeReadyHosts(hostCount, new NodeResources(2, 8, 20, 10));
// Create tenant host application
- ClusterSpec clusterNodeAdminApp = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("node-admin")).vespaVersion("6.42").build();
- ClusterSpec clusterApp1 = ClusterSpec.request(ClusterSpec.Type.container, testCluster).vespaVersion("6.75.0").build();
- ClusterSpec clusterApp2 = ClusterSpec.request(ClusterSpec.Type.content, testCluster).vespaVersion("6.75.0").build();
- Capacity allHosts = Capacity.fromRequiredNodeType(NodeType.host);
+ Version version = Version.fromString("6.75.0");
+ TenantHostApplication tenantHostApp = new TenantHostApplication();
+ ClusterSpec clusterApp1 = ClusterSpec.request(ClusterSpec.Type.container, testCluster).vespaVersion(version).build();
+ ClusterSpec clusterApp2 = ClusterSpec.request(ClusterSpec.Type.content, testCluster).vespaVersion(version).build();
Capacity capacity1 = Capacity.from(new ClusterResources(containerCount, 1, new NodeResources(1, 4, 10, 0.3)), false, true);
Capacity capacity2 = Capacity.from(new ClusterResources(contentCount, 1, new NodeResources(1, 4, 10, 0.3)), false, true);
- tester.activate(tenantHostApp, clusterNodeAdminApp, allHosts);
+ tester.tester.prepareAndActivateInfraApplication(tenantHostApp, version);
tester.activate(app1, clusterApp1, capacity1);
tester.activate(app2, clusterApp2, capacity2);
assertEquals(Set.of(tester.nodeRepository.nodes().list().nodeType(NodeType.host).asList()),
- Set.of(tester.nodeRepository.nodes().list(Node.State.active).owner(tenantHostApp).asList()));
+ Set.of(tester.nodeRepository.nodes().list(Node.State.active).owner(tenantHostApp.getApplicationId()).asList()));
assertEquals(capacity1.minResources().nodes(), tester.nodeRepository.nodes().list(Node.State.active).owner(app1).size());
assertEquals(capacity2.minResources().nodes(), tester.nodeRepository.nodes().list(Node.State.active).owner(app2).size());
- Map<ApplicationId, MockDeployer.ApplicationContext> apps = Map.of(
- tenantHostApp, new MockDeployer.ApplicationContext(tenantHostApp, clusterNodeAdminApp, allHosts),
- app1, new MockDeployer.ApplicationContext(app1, clusterApp1, capacity1),
- app2, new MockDeployer.ApplicationContext(app2, clusterApp2, capacity2));
+ List<MockDeployer.ApplicationContext> apps = List.of(
+ new MockDeployer.ApplicationContext(tenantHostApp, version),
+ new MockDeployer.ApplicationContext(app1, clusterApp1, capacity1),
+ new MockDeployer.ApplicationContext(app2, clusterApp2, capacity2));
tester.initializeMaintainers(apps);
return tester;
}
@@ -139,24 +144,24 @@ public class NodeFailTester {
tester.tester.makeReadyNodes(numberOfHosts, new NodeResources(4, 16, 400, 10), NodeType.host, 8);
// Create applications
- ClusterSpec clusterNodeAdminApp = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("node-admin")).vespaVersion("6.42").build();
- ClusterSpec clusterApp1 = ClusterSpec.request(ClusterSpec.Type.container, testCluster).vespaVersion("6.75.0").build();
- ClusterSpec clusterApp2 = ClusterSpec.request(ClusterSpec.Type.content, testCluster).vespaVersion("6.75.0").build();
- Capacity allHosts = Capacity.fromRequiredNodeType(NodeType.host);
+ Version version = Version.fromString("6.75.0");
+ TenantHostApplication tenantHostApp = new TenantHostApplication();
+ ClusterSpec clusterApp1 = ClusterSpec.request(ClusterSpec.Type.container, testCluster).vespaVersion(version).build();
+ ClusterSpec clusterApp2 = ClusterSpec.request(ClusterSpec.Type.content, testCluster).vespaVersion(version).build();
Capacity capacity1 = Capacity.from(new ClusterResources(3, 1, new NodeResources(1, 4, 100, 0.3)), false, true);
Capacity capacity2 = Capacity.from(new ClusterResources(5, 1, new NodeResources(1, 4, 100, 0.3)), false, true);
- tester.activate(tenantHostApp, clusterNodeAdminApp, allHosts);
+ tester.tester.prepareAndActivateInfraApplication(tenantHostApp, version);
tester.activate(app1, clusterApp1, capacity1);
tester.activate(app2, clusterApp2, capacity2);
assertEquals(Set.of(tester.nodeRepository.nodes().list().nodeType(NodeType.host).asList()),
- Set.of(tester.nodeRepository.nodes().list(Node.State.active).owner(tenantHostApp).asList()));
+ Set.of(tester.nodeRepository.nodes().list(Node.State.active).owner(tenantHostApp.getApplicationId()).asList()));
assertEquals(capacity1.minResources().nodes(), tester.nodeRepository.nodes().list(Node.State.active).owner(app1).size());
assertEquals(capacity2.minResources().nodes(), tester.nodeRepository.nodes().list(Node.State.active).owner(app2).size());
- Map<ApplicationId, MockDeployer.ApplicationContext> apps = Map.of(
- tenantHostApp, new MockDeployer.ApplicationContext(tenantHostApp, clusterNodeAdminApp, allHosts),
- app1, new MockDeployer.ApplicationContext(app1, clusterApp1, capacity1),
- app2, new MockDeployer.ApplicationContext(app2, clusterApp2, capacity2));
+ List<MockDeployer.ApplicationContext> apps = List.of(
+ new MockDeployer.ApplicationContext(tenantHostApp, version),
+ new MockDeployer.ApplicationContext(app1, clusterApp1, capacity1),
+ new MockDeployer.ApplicationContext(app2, clusterApp2, capacity2));
tester.initializeMaintainers(apps);
return tester;
}
@@ -167,7 +172,7 @@ public class NodeFailTester {
public static NodeFailTester withOneUndeployedApplication(Capacity capacity, ClusterSpec spec) {
NodeFailTester tester = new NodeFailTester();
- Map<ApplicationId, MockDeployer.ApplicationContext> apps = Map.of(app1, new MockDeployer.ApplicationContext(app1, spec, capacity));
+ List<MockDeployer.ApplicationContext> apps = List.of(new MockDeployer.ApplicationContext(app1, spec, capacity));
tester.initializeMaintainers(apps);
return tester;
}
@@ -177,23 +182,16 @@ public class NodeFailTester {
tester.createReadyNodes(count, nodeType);
// Create application
- Capacity allNodes = Capacity.fromRequiredNodeType(nodeType);
- ClusterSpec clusterApp1 = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("test")).vespaVersion("6.42").build();
- tester.activate(app1, clusterApp1, allNodes);
+ InfraApplication application = ProvisioningTester.infraApplication(nodeType);
+ Version version = Version.fromString("6.42");
+ tester.tester.prepareAndActivateInfraApplication(application, version);
assertEquals(count, tester.nodeRepository.nodes().list(Node.State.active).nodeType(nodeType).size());
- Map<ApplicationId, MockDeployer.ApplicationContext> apps = Map.of(
- app1, new MockDeployer.ApplicationContext(app1, clusterApp1, allNodes));
+ List<MockDeployer.ApplicationContext> apps = List.of(new MockDeployer.ApplicationContext(application, version));
tester.initializeMaintainers(apps);
return tester;
}
- public static NodeFailTester withNoApplications() {
- NodeFailTester tester = new NodeFailTester();
- tester.initializeMaintainers(Map.of());
- return tester;
- }
-
public void runMaintainers() {
updater.maintain();
failer.maintain();
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OsUpgradeActivatorTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OsUpgradeActivatorTest.java
index be43d39cdeb..55cb2a7baae 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OsUpgradeActivatorTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OsUpgradeActivatorTest.java
@@ -2,7 +2,6 @@
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.component.Version;
-import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ClusterMembership;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.NodeType;
@@ -38,13 +37,11 @@ public class OsUpgradeActivatorTest {
var version0 = Version.fromString("7.0");
// Create infrastructure nodes
- var configHostApplication = ApplicationId.from("hosted-vespa", "configserver-host", "default");
var configHostNodes = tester.makeReadyNodes(3, "default", NodeType.confighost, 1);
- tester.prepareAndActivateInfraApplication(configHostApplication, NodeType.confighost, version0);
+ tester.prepareAndActivateInfraApplication(NodeType.confighost, version0);
- var tenantHostApplication = ApplicationId.from("hosted-vespa", "tenant-host", "default");
var tenantHostNodes = tester.makeReadyNodes(3, "default", NodeType.host, 1);
- tester.prepareAndActivateInfraApplication(tenantHostApplication, NodeType.host, version0);
+ tester.prepareAndActivateInfraApplication(NodeType.host, version0);
tester.clock().advance(Duration.ofDays(1).plusSeconds(1)); // Let grace period pass
var allNodes = new ArrayList<>(configHostNodes);
@@ -67,7 +64,7 @@ public class OsUpgradeActivatorTest {
// Tenant hosts start upgrading to next Vespa version
var version1 = Version.fromString("7.1");
- tester.prepareAndActivateInfraApplication(tenantHostApplication, NodeType.host, version1);
+ tester.prepareAndActivateInfraApplication(NodeType.host, version1);
assertEquals("Wanted version of " + NodeType.host + " is raised", version1,
minWantedVersion(tenantHostNodes));
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java
index 2df38a38d49..cad5a87acfd 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java
@@ -26,7 +26,6 @@ import org.junit.Test;
import java.time.Duration;
import java.time.Instant;
import java.util.List;
-import java.util.Map;
import static org.junit.Assert.assertEquals;
@@ -221,9 +220,9 @@ public class PeriodicApplicationMaintainerTest {
Fixture() {
this.tester = new ProvisioningTester.Builder().build();
this.nodeRepository = tester.nodeRepository();
- Map<ApplicationId, MockDeployer.ApplicationContext> apps = Map.of(
- app1, new MockDeployer.ApplicationContext(app1, clusterApp1, Capacity.from(new ClusterResources(wantedNodesApp1, 1, nodeResources))),
- app2, new MockDeployer.ApplicationContext(app2, clusterApp2, Capacity.from(new ClusterResources(wantedNodesApp2, 1, nodeResources))));
+ List<MockDeployer.ApplicationContext> apps = List.of(
+ new MockDeployer.ApplicationContext(app1, clusterApp1, Capacity.from(new ClusterResources(wantedNodesApp1, 1, nodeResources))),
+ new MockDeployer.ApplicationContext(app2, clusterApp2, Capacity.from(new ClusterResources(wantedNodesApp2, 1, nodeResources))));
this.deployer = new MockDeployer(tester.provisioner(), nodeRepository.clock(), apps);
this.maintainer = new TestablePeriodicApplicationMaintainer(deployer, nodeRepository, Duration.ofDays(1), // Long duration to prevent scheduled runs during test
Duration.ofMinutes(30));
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RebalancerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RebalancerTest.java
index 5bdff2d3a3a..bd2cc98cea7 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RebalancerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RebalancerTest.java
@@ -28,7 +28,6 @@ import org.junit.Test;
import java.time.Duration;
import java.util.Comparator;
import java.util.List;
-import java.util.Map;
import java.util.Optional;
import static com.yahoo.vespa.hosted.provision.maintenance.Rebalancer.waitTimeAfterPreviousDeployment;
@@ -139,7 +138,7 @@ public class RebalancerTest {
@Test
public void testRebalancingDoesNotReduceSwitchExclusivity() {
Capacity capacity = Capacity.from(new ClusterResources(4, 1, RebalancerTester.cpuResources), true, false);
- Map<ApplicationId, ApplicationContext> apps = Map.of(cpuApp, new ApplicationContext(cpuApp, RebalancerTester.clusterSpec("c"), capacity));
+ List<ApplicationContext> apps = List.of(new ApplicationContext(cpuApp, RebalancerTester.clusterSpec("c"), capacity));
RebalancerTester tester = new RebalancerTester(4, apps);
// Application is deployed and balanced across exclusive switches
@@ -177,11 +176,11 @@ public class RebalancerTest {
RebalancerTester() {
this(3,
- Map.of(cpuApp, new ApplicationContext(cpuApp, clusterSpec("c"), Capacity.from(new ClusterResources(1, 1, cpuResources))),
- memoryApp, new ApplicationContext(memoryApp, clusterSpec("c"), Capacity.from(new ClusterResources(1, 1, memResources)))));
+ List.of(new ApplicationContext(cpuApp, clusterSpec("c"), Capacity.from(new ClusterResources(1, 1, cpuResources))),
+ new ApplicationContext(memoryApp, clusterSpec("c"), Capacity.from(new ClusterResources(1, 1, memResources)))));
}
- RebalancerTester(int hostCount, Map<ApplicationId, ApplicationContext> apps) {
+ RebalancerTester(int hostCount, List<ApplicationContext> apps) {
deployer = new MockDeployer(tester.provisioner(), tester.clock(), apps);
rebalancer = new Rebalancer(deployer, tester.nodeRepository(), metric, Duration.ofMinutes(1));
List<Node> hosts = tester.makeReadyNodes(hostCount, "flat", NodeType.host, 8);
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java
index aaa4bffc000..f42044c2944 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java
@@ -36,7 +36,6 @@ import org.junit.Test;
import java.time.Duration;
import java.time.Instant;
-import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -99,9 +98,9 @@ public class RetiredExpirerTest {
MockDeployer deployer =
new MockDeployer(provisioner,
clock,
- Collections.singletonMap(applicationId, new MockDeployer.ApplicationContext(applicationId,
- cluster,
- Capacity.from(new ClusterResources(wantedNodes, 1, nodeResources)))));
+ List.of(new MockDeployer.ApplicationContext(applicationId,
+ cluster,
+ Capacity.from(new ClusterResources(wantedNodes, 1, nodeResources)))));
createRetiredExpirer(deployer).run();
assertEquals(3, nodeRepository.nodes().list(Node.State.active).owner(applicationId).size());
assertEquals(4, nodeRepository.nodes().list(Node.State.inactive).owner(applicationId).size());
@@ -133,11 +132,9 @@ public class RetiredExpirerTest {
MockDeployer deployer =
new MockDeployer(provisioner,
clock,
- Collections.singletonMap(
- applicationId,
- new MockDeployer.ApplicationContext(applicationId,
- cluster,
- Capacity.from(new ClusterResources(wantedNodes, 1, nodeResources)))));
+ List.of(new MockDeployer.ApplicationContext(applicationId,
+ cluster,
+ Capacity.from(new ClusterResources(wantedNodes, 1, nodeResources)))));
// Allow the 1st and 3rd retired nodes permission to inactivate
doNothing()
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SwitchRebalancerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SwitchRebalancerTest.java
index 6895f5eeae7..ec49828241b 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SwitchRebalancerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SwitchRebalancerTest.java
@@ -23,9 +23,7 @@ import org.junit.Test;
import java.time.Duration;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.Set;
-import java.util.stream.Collectors;
import java.util.stream.Stream;
import static org.junit.Assert.assertEquals;
@@ -235,7 +233,7 @@ public class SwitchRebalancerTest {
.map(spec -> new ClusterContext(app, spec, capacity))
.toList();
ApplicationContext context = new ApplicationContext(app, clusterContexts);
- return new MockDeployer(tester.provisioner(), tester.clock(), Map.of(app, context));
+ return new MockDeployer(tester.provisioner(), tester.clock(), List.of(context));
}
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java
index ada96b3f793..0fa9aa610a4 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java
@@ -219,7 +219,7 @@ public class OsVersionsTest {
var versions = new OsVersions(tester.nodeRepository(), Cloud.builder().dynamicProvisioning(true).build());
setMaxActiveUpgrades(Integer.MAX_VALUE);
int hostCount = 3;
- provisionInfraApplication(hostCount, infraApplication, NodeType.host);
+ provisionInfraApplication(hostCount, NodeType.host);
Supplier<NodeList> hostNodes = () -> tester.nodeRepository().nodes().list()
.nodeType(NodeType.host)
.not().state(Node.State.deprovisioned);
@@ -326,7 +326,7 @@ public class OsVersionsTest {
.account(CloudAccount.from("000000000000"))
.build());
- provisionInfraApplication(hostCount, infraApplication, NodeType.host, NodeResources.StorageType.remote, NodeResources.Architecture.x86_64);
+ provisionInfraApplication(hostCount, NodeType.host, NodeResources.StorageType.remote, NodeResources.Architecture.x86_64);
Supplier<NodeList> hostNodes = () -> tester.nodeRepository().nodes().list().nodeType(NodeType.host);
// New target is set
@@ -371,8 +371,8 @@ public class OsVersionsTest {
setMaxActiveUpgrades(1);
var versions = new OsVersions(tester.nodeRepository(), Cloud.defaultCloud());
int hostCount = 3;
- provisionInfraApplication(hostCount, infraApplication, NodeType.host);
- provisionInfraApplication(hostCount, ApplicationId.from("hosted-vespa", "confighost", "default"), NodeType.confighost);
+ provisionInfraApplication(hostCount, NodeType.host);
+ provisionInfraApplication(hostCount, NodeType.confighost);
Supplier<NodeList> hosts = () -> tester.nodeRepository().nodes().list().nodeType(NodeType.host,
NodeType.confighost);
@@ -406,7 +406,7 @@ public class OsVersionsTest {
int hostCount = 5;
ApplicationId app1 = ApplicationId.from("t1", "a1", "i1");
ApplicationId app2 = ApplicationId.from("t2", "a2", "i2");
- provisionInfraApplication(hostCount, infraApplication, NodeType.host);
+ provisionInfraApplication(hostCount, NodeType.host);
deployApplication(app1);
deployApplication(app2);
Supplier<NodeList> hosts = () -> tester.nodeRepository().nodes().list().nodeType(NodeType.host);
@@ -481,7 +481,7 @@ public class OsVersionsTest {
int hostCount = 3;
setMaxActiveUpgrades(hostCount);
var versions = new OsVersions(tester.nodeRepository(), Cloud.defaultCloud());
- provisionInfraApplication(hostCount, infraApplication, NodeType.proxyhost);
+ provisionInfraApplication(hostCount, NodeType.proxyhost);
Supplier<NodeList> hosts = () -> tester.nodeRepository().nodes().list().nodeType(NodeType.proxyhost);
// All hosts are on initial version
@@ -532,25 +532,23 @@ public class OsVersionsTest {
}
private List<Node> provisionInfraApplication(int nodeCount) {
- return provisionInfraApplication(nodeCount, infraApplication, NodeType.host);
+ return provisionInfraApplication(nodeCount, NodeType.host);
}
- private List<Node> provisionInfraApplication(int nodeCount, ApplicationId application,
- NodeType nodeType) {
- return provisionInfraApplication(nodeCount, application, nodeType, NodeResources.StorageType.local);
+ private List<Node> provisionInfraApplication(int nodeCount, NodeType nodeType) {
+ return provisionInfraApplication(nodeCount, nodeType, NodeResources.StorageType.local);
}
- private List<Node> provisionInfraApplication(int nodeCount, ApplicationId application,
- NodeType nodeType, NodeResources.StorageType storageType) {
- return provisionInfraApplication(nodeCount, application, nodeType, storageType, NodeResources.Architecture.x86_64);
+ private List<Node> provisionInfraApplication(int nodeCount, NodeType nodeType, NodeResources.StorageType storageType) {
+ return provisionInfraApplication(nodeCount, nodeType, storageType, NodeResources.Architecture.x86_64);
}
- private List<Node> provisionInfraApplication(int nodeCount, ApplicationId application, NodeType nodeType,
+ private List<Node> provisionInfraApplication(int nodeCount, NodeType nodeType,
NodeResources.StorageType storageType, NodeResources.Architecture architecture) {
var nodes = tester.makeReadyNodes(nodeCount, new NodeResources(48, 128, 2000, 10,
NodeResources.DiskSpeed.fast, storageType, architecture),
nodeType, 10);
- tester.prepareAndActivateInfraApplication(application, nodeType);
+ tester.prepareAndActivateInfraApplication(nodeType);
tester.clock().advance(Duration.ofDays(1).plusSeconds(1)); // Let grace period pass
return nodes.stream()
.map(Node::hostname)
@@ -587,11 +585,10 @@ public class OsVersionsTest {
tester.patchNodes(nodes, (node) -> {
Optional<Version> wantedOsVersion = node.status().osVersion().wanted();
if (node.status().wantToDeprovision()) {
- ApplicationId application = node.allocation().get().owner();
tester.nodeRepository().nodes().park(node.hostname(), true, Agent.system,
getClass().getSimpleName());
tester.nodeRepository().nodes().removeRecursively(node.hostname());
- node = provisionInfraApplication(1, application, nodeType).get(0);
+ node = provisionInfraApplication(1, nodeType).get(0);
}
return node.with(node.status().withOsVersion(node.status().osVersion().withCurrent(wantedOsVersion)));
});
@@ -602,7 +599,6 @@ public class OsVersionsTest {
tester.patchNodes(nodes, (node) -> {
Optional<Version> wantedOsVersion = node.status().osVersion().wanted();
if (node.status().wantToRebuild()) {
- ApplicationId application = node.allocation().get().owner();
tester.nodeRepository().nodes().park(node.hostname(), true, Agent.system,
getClass().getSimpleName());
tester.nodeRepository().nodes().removeRecursively(node.hostname());
@@ -610,7 +606,7 @@ public class OsVersionsTest {
.build();
node = tester.nodeRepository().nodes().addNodes(List.of(newNode), Agent.system).get(0);
node = tester.move(Node.State.ready, node);
- tester.prepareAndActivateInfraApplication(application, nodeType);
+ tester.prepareAndActivateInfraApplication(nodeType);
node = tester.nodeRepository().nodes().node(node.hostname()).get();
}
return node.with(node.status().withOsVersion(node.status().osVersion().withCurrent(wantedOsVersion)));
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java
index ab99a44cbab..50eeef69448 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java
@@ -44,8 +44,7 @@ public class AclProvisioningTest {
// Populate repo
tester.makeReadyNodes(10, new NodeResources(1, 4, 10, 1));
List<Node> host = tester.makeReadyNodes(1, new NodeResources(1, 4, 10, 1), NodeType.host);
- ApplicationId zoneApplication = ProvisioningTester.applicationId();
- tester.deploy(zoneApplication, Capacity.fromRequiredNodeType(NodeType.host));
+ tester.activateTenantHosts();
tester.makeReadyChildren(1, new NodeResources(1, 4, 10, 1),
host.get(0).hostname());
List<Node> proxyNodes = tester.makeReadyNodes(3, new NodeResources(1, 4, 10, 1), NodeType.proxy);
@@ -136,11 +135,10 @@ public class AclProvisioningTest {
tester.makeReadyNodes(3, "default", NodeType.proxy);
// Deploy zone application
- ApplicationId zoneApplication = ProvisioningTester.applicationId();
- tester.deploy(zoneApplication, Capacity.fromRequiredNodeType(NodeType.proxy));
+ tester.prepareAndActivateInfraApplication(NodeType.proxy);
// Get trusted nodes for first proxy node
- NodeList proxyNodes = tester.nodeRepository().nodes().list().owner(zoneApplication);
+ NodeList proxyNodes = tester.nodeRepository().nodes().list().nodeType(NodeType.proxy);
Node node = proxyNodes.first().get();
NodeAcl nodeAcl = node.acl(tester.nodeRepository().nodes().list(), tester.nodeRepository().loadBalancers(), tester.nodeRepository().zone());
@@ -180,8 +178,8 @@ public class AclProvisioningTest {
tester.makeReadyNodes(3, "default", NodeType.controller);
// Allocate
- ApplicationId controllerApplication = ProvisioningTester.applicationId();
- List<Node> controllers = tester.deploy(controllerApplication, Capacity.fromRequiredNodeType(NodeType.controller));
+ tester.prepareAndActivateInfraApplication(NodeType.controller);
+ List<Node> controllers = tester.nodeRepository().nodes().list().nodeType(NodeType.controller).asList();
// Controllers and hosts all trust each other
NodeAcl controllerAcl = controllers.get(0).acl(tester.nodeRepository().nodes().list(), tester.nodeRepository().loadBalancers(), tester.nodeRepository().zone());
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InPlaceResizeProvisionTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InPlaceResizeProvisionTest.java
index a03811778d2..0bb6dc61d1b 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InPlaceResizeProvisionTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InPlaceResizeProvisionTest.java
@@ -5,9 +5,9 @@ import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.Environment;
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.RegionName;
import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.flags.InMemoryFlagSource;
@@ -57,7 +57,6 @@ public class InPlaceResizeProvisionTest {
private final ProvisioningTester tester = new ProvisioningTester.Builder()
.flagSource(flagSource)
.zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
- private final ApplicationId infraApp = ProvisioningTester.applicationId();
private final ApplicationId app = ProvisioningTester.applicationId();
@Test
@@ -243,7 +242,7 @@ public class InPlaceResizeProvisionTest {
private void addParentHosts(int count, NodeResources resources) {
tester.makeReadyNodes(count, resources, NodeType.host, 4);
- tester.prepareAndActivateInfraApplication(infraApp, NodeType.host);
+ tester.activateTenantHosts();
}
private void assertSizeAndResources(ClusterSpec cluster, int clusterSize, NodeResources resources) {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java
index 673e7610514..53054ba3f24 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java
@@ -3,6 +3,7 @@ package com.yahoo.vespa.hosted.provision.provisioning;
import ai.vespa.http.DomainName;
import com.google.common.collect.Iterators;
+import com.yahoo.component.Version;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.Capacity;
import com.yahoo.config.provision.Cloud;
@@ -61,7 +62,6 @@ public class LoadBalancerProvisionerTest {
private final ApplicationId app1 = ApplicationId.from("tenant1", "application1", "default");
private final ApplicationId app2 = ApplicationId.from("tenant2", "application2", "default");
- private final ApplicationId infraApp1 = ApplicationId.from("vespa", "tenant-host", "default");
private final NodeResources nodeResources = new NodeResources(2, 4, 10, 0.3);
private final InMemoryFlagSource flagSource = new InMemoryFlagSource();
@@ -212,11 +212,10 @@ public class LoadBalancerProvisionerTest {
@Test
public void does_not_provision_load_balancers_for_non_tenant_node_type() {
- tester.activate(infraApp1, prepare(infraApp1, Capacity.fromRequiredNodeType(NodeType.host),
- clusterRequest(ClusterSpec.Type.container,
- ClusterSpec.Id.from("tenant-host"))));
+ var tenantHostApp = ProvisioningTester.infraApplication(NodeType.host);
+ tester.prepareAndActivateInfraApplication(tenantHostApp);
assertTrue("No load balancer provisioned", tester.loadBalancerService().instances().isEmpty());
- assertEquals(List.of(), tester.nodeRepository().loadBalancers().list(infraApp1).asList());
+ assertEquals(List.of(), tester.nodeRepository().loadBalancers().list(tenantHostApp.getApplicationId()).asList());
}
@Test
@@ -242,12 +241,12 @@ public class LoadBalancerProvisionerTest {
@Test
public void provision_load_balancer_config_server_cluster() {
- provisionInfrastructureLoadBalancer(infraApp1, NodeType.config);
+ provisionInfrastructureLoadBalancer(NodeType.config);
}
@Test
public void provision_load_balancer_controller_cluster() {
- provisionInfrastructureLoadBalancer(infraApp1, NodeType.controller);
+ provisionInfrastructureLoadBalancer(NodeType.controller);
}
@Test
@@ -438,16 +437,16 @@ public class LoadBalancerProvisionerTest {
activeNodes, reals);
}
- private void provisionInfrastructureLoadBalancer(ApplicationId application, NodeType nodeType) {
- Supplier<List<LoadBalancer>> lbs = () -> tester.nodeRepository().loadBalancers().list(application).asList();
- var cluster = ClusterSpec.Id.from("infra-cluster");
- ClusterSpec.Type clusterType = nodeType == NodeType.config ? ClusterSpec.Type.admin : ClusterSpec.Type.container;
- var nodes = prepare(application, Capacity.fromRequiredNodeType(nodeType), clusterRequest(clusterType, cluster));
+ private void provisionInfrastructureLoadBalancer(NodeType nodeType) {
+ var infraApp = ProvisioningTester.infraApplication(nodeType);
+ Supplier<List<LoadBalancer>> lbs = () -> tester.nodeRepository().loadBalancers().list(infraApp.getApplicationId()).asList();
+ tester.prepareAndActivateInfraApplication(infraApp);
+ var nodes = prepare(infraApp.getApplicationId(), infraApp.getCapacity(), infraApp.getClusterSpecWithVersion(Version.fromString("7.1")));
assertEquals(1, lbs.get().size());
- tester.activate(application, nodes);
+ tester.activate(infraApp.getApplicationId(), nodes);
assertEquals("Prepare provisions load balancer with reserved nodes", 3, lbs.get().get(0).instance().get().reals().size());
assertSame(LoadBalancer.State.active, lbs.get().get(0).state());
- assertEquals(cluster, lbs.get().get(0).id().cluster());
+ assertEquals(infraApp.getClusterSpecId(), lbs.get().get(0).id().cluster());
}
private void dirtyNodesOf(ApplicationId application) {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java
index 3db8a71e4a7..cfd7a3511de 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java
@@ -19,7 +19,6 @@ import org.junit.Ignore;
import org.junit.Test;
import java.time.Duration;
-import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -233,8 +232,7 @@ public class MultigroupProvisioningTest {
MockDeployer deployer =
new MockDeployer(tester.provisioner(),
tester.clock(),
- Collections.singletonMap(application1,
- new MockDeployer.ApplicationContext(application1, cluster(),
+ List.of(new MockDeployer.ApplicationContext(application1, cluster(),
Capacity.from(new ClusterResources(8, 1, large), false, true))));
new RetiredExpirer(tester.nodeRepository(),
deployer,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java
index 4af5728f167..38e38dc319b 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java
@@ -1,10 +1,7 @@
// Copyright Yahoo. 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.Capacity;
-import com.yahoo.config.provision.ClusterSpec;
-import com.yahoo.config.provision.HostSpec;
+import com.yahoo.component.Version;
import com.yahoo.config.provision.NodeType;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeList;
@@ -12,12 +9,11 @@ import com.yahoo.vespa.hosted.provision.maintenance.RetiredExpirer;
import com.yahoo.vespa.hosted.provision.maintenance.TestMetric;
import com.yahoo.vespa.hosted.provision.node.Agent;
import com.yahoo.vespa.hosted.provision.testutils.MockDeployer;
+import com.yahoo.vespa.service.duper.InfraApplication;
import org.junit.Before;
import org.junit.Test;
import java.time.Duration;
-import java.util.Collections;
-import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@@ -34,9 +30,7 @@ public class NodeTypeProvisioningTest {
private final ProvisioningTester tester = new ProvisioningTester.Builder().build();
- private final ApplicationId application = ProvisioningTester.applicationId(); // application using proxy nodes
- private final Capacity capacity = Capacity.fromRequiredNodeType(NodeType.proxy);
- private final ClusterSpec clusterSpec = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("test")).vespaVersion("6.42").build();
+ private final InfraApplication proxyApp = ProvisioningTester.infraApplication(NodeType.proxy);
@Before
public void setup() {
@@ -51,26 +45,20 @@ public class NodeTypeProvisioningTest {
@Test
public void proxy_deployment() {
{ // Deploy
- List<HostSpec> hosts = deployProxies(application, tester);
- assertEquals("Reserved all proxies", 11, hosts.size());
- tester.activate(application, new HashSet<>(hosts));
+ tester.prepareAndActivateInfraApplication(proxyApp);
NodeList nodes = tester.nodeRepository().nodes().list(Node.State.active).nodeType(NodeType.proxy);
assertEquals("Activated all proxies", 11, nodes.size());
}
{ // Redeploy with no changes
- List<HostSpec> hosts = deployProxies(application, tester);
- assertEquals(11, hosts.size());
- tester.activate(application, new HashSet<>(hosts));
+ tester.prepareAndActivateInfraApplication(proxyApp);
NodeList nodes = tester.nodeRepository().nodes().list(Node.State.active).nodeType(NodeType.proxy);
assertEquals(11, nodes.size());
}
{ // Add 2 ready proxies then redeploy
tester.makeReadyNodes(2, "small", NodeType.proxy);
- List<HostSpec> hosts = deployProxies(application, tester);
- assertEquals(13, hosts.size());
- tester.activate(application, new HashSet<>(hosts));
+ tester.prepareAndActivateInfraApplication(proxyApp);
NodeList nodes = tester.nodeRepository().nodes().list(Node.State.active).nodeType(NodeType.proxy);
assertEquals(13, nodes.size());
}
@@ -81,9 +69,7 @@ public class NodeTypeProvisioningTest {
tester.nodeRepository().nodes().fail(nodes.asList().get(1).hostname(), Agent.system, "Failing to unit test");
tester.nodeRepository().nodes().fail(nodes.asList().get(5).hostname(), Agent.system, "Failing to unit test");
- List<HostSpec> hosts = deployProxies(application, tester);
- assertEquals(10, hosts.size());
- tester.activate(application, new HashSet<>(hosts));
+ tester.prepareAndActivateInfraApplication(proxyApp);
nodes = tester.nodeRepository().nodes().list(Node.State.active).nodeType(NodeType.proxy);
assertEquals(10, nodes.size());
}
@@ -93,10 +79,7 @@ public class NodeTypeProvisioningTest {
public void retire_proxy() {
MockDeployer deployer = new MockDeployer(tester.provisioner(),
tester.clock(),
- Collections.singletonMap(application,
- new MockDeployer.ApplicationContext(application,
- clusterSpec,
- capacity)));
+ List.of(new MockDeployer.ApplicationContext(proxyApp, Version.fromString("6.42"))));
RetiredExpirer retiredExpirer = new RetiredExpirer(tester.nodeRepository(),
deployer,
new TestMetric(),
@@ -104,9 +87,7 @@ public class NodeTypeProvisioningTest {
Duration.ofMinutes(10));
{ // Deploy
- List<HostSpec> hosts = deployProxies(application, tester);
- assertEquals("Reserved all proxies", 11, hosts.size());
- tester.activate(application, new HashSet<>(hosts));
+ tester.prepareAndActivateInfraApplication(proxyApp);
NodeList nodes = tester.nodeRepository().nodes().list(Node.State.active).nodeType(NodeType.proxy);
assertEquals("Activated all proxies", 11, nodes.size());
}
@@ -115,9 +96,7 @@ public class NodeTypeProvisioningTest {
{ // Pick out a node and retire it
tester.nodeRepository().nodes().write(nodeToRetire.withWantToRetire(true, Agent.system, tester.clock().instant()), () -> {});
- List<HostSpec> hosts = deployProxies(application, tester);
- assertEquals(11, hosts.size());
- tester.activate(application, new HashSet<>(hosts));
+ tester.prepareAndActivateInfraApplication(proxyApp);
NodeList nodes = tester.nodeRepository().nodes().list(Node.State.active).nodeType(NodeType.proxy);
assertEquals(11, nodes.size());
@@ -129,9 +108,7 @@ public class NodeTypeProvisioningTest {
}
{ // Redeploying while the node is still retiring has no effect
- List<HostSpec> hosts = deployProxies(application, tester);
- assertEquals(11, hosts.size());
- tester.activate(application, new HashSet<>(hosts));
+ tester.prepareAndActivateInfraApplication(proxyApp);
NodeList nodes = tester.nodeRepository().nodes().list(Node.State.active).nodeType(NodeType.proxy);
assertEquals(11, nodes.size());
@@ -146,9 +123,7 @@ public class NodeTypeProvisioningTest {
tester.advanceTime(Duration.ofMinutes(11));
retiredExpirer.run();
- List<HostSpec> hosts = deployProxies(application, tester);
- assertEquals(10, hosts.size());
- tester.activate(application, new HashSet<>(hosts));
+ tester.prepareAndActivateInfraApplication(proxyApp);
NodeList nodes = tester.nodeRepository().nodes().list(Node.State.active).nodeType(NodeType.proxy);
assertEquals(10, nodes.size());
@@ -162,8 +137,7 @@ public class NodeTypeProvisioningTest {
public void retire_multiple_proxy_simultaneously() {
MockDeployer deployer = new MockDeployer(tester.provisioner(),
tester.clock(),
- Collections.singletonMap(application,
- new MockDeployer.ApplicationContext(application, clusterSpec, capacity)));
+ List.of(new MockDeployer.ApplicationContext(proxyApp, Version.fromString("6.42"))));
RetiredExpirer retiredExpirer = new RetiredExpirer(tester.nodeRepository(),
deployer,
new TestMetric(),
@@ -172,9 +146,7 @@ public class NodeTypeProvisioningTest {
final int numNodesToRetire = 5;
{ // Deploy
- List<HostSpec> hosts = deployProxies(application, tester);
- assertEquals("Reserved all proxies", 11, hosts.size());
- tester.activate(application, new HashSet<>(hosts));
+ tester.prepareAndActivateInfraApplication(proxyApp);
NodeList nodes = tester.nodeRepository().nodes().list(Node.State.active).nodeType(NodeType.proxy);
assertEquals("Activated all proxies", 11, nodes.size());
}
@@ -185,9 +157,7 @@ public class NodeTypeProvisioningTest {
nodesToRetire.forEach(nodeToRetire ->
tester.nodeRepository().nodes().write(nodeToRetire.withWantToRetire(true, Agent.system, tester.clock().instant()), () -> {}));
- List<HostSpec> hosts = deployProxies(application, tester);
- assertEquals(11, hosts.size());
- tester.activate(application, new HashSet<>(hosts));
+ tester.prepareAndActivateInfraApplication(proxyApp);
NodeList nodes = tester.nodeRepository().nodes().list(Node.State.active).nodeType(NodeType.proxy);
assertEquals(11, nodes.size());
@@ -202,9 +172,7 @@ public class NodeTypeProvisioningTest {
}
{ // Redeploying while the nodes are still retiring has no effect
- List<HostSpec> hosts = deployProxies(application, tester);
- assertEquals(11, hosts.size());
- tester.activate(application, new HashSet<>(hosts));
+ tester.prepareAndActivateInfraApplication(proxyApp);
NodeList nodes = tester.nodeRepository().nodes().list(Node.State.active).nodeType(NodeType.proxy);
assertEquals(11, nodes.size());
@@ -220,9 +188,7 @@ public class NodeTypeProvisioningTest {
tester.advanceTime(Duration.ofMinutes(11));
retiredExpirer.run();
- List<HostSpec> hosts = deployProxies(application, tester);
- assertEquals(6, hosts.size());
- tester.activate(application, new HashSet<>(hosts));
+ tester.prepareAndActivateInfraApplication(proxyApp);
// All currently active proxy nodes are not marked with wantToRetire or as retired
long numRetiredActiveProxyNodes = tester.nodeRepository().nodes().list(Node.State.active).nodeType(NodeType.proxy).stream()
@@ -237,8 +203,4 @@ public class NodeTypeProvisioningTest {
}
}
- private List<HostSpec> deployProxies(ApplicationId application, ProvisioningTester tester) {
- return tester.prepare(application, clusterSpec, capacity);
- }
-
}
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 67760d8cdf3..477101e10e2 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
@@ -189,7 +189,7 @@ public class ProvisioningTest {
ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build();
tester.makeReadyHosts(4, defaultResources);
- tester.prepareAndActivateInfraApplication(ProvisioningTester.applicationId(), NodeType.host);
+ tester.activateTenantHosts();
// deploy
ApplicationId application1 = ProvisioningTester.applicationId();
@@ -214,7 +214,7 @@ public class ProvisioningTest {
ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build();
tester.makeReadyHosts(4, defaultResources);
- tester.prepareAndActivateInfraApplication(ProvisioningTester.applicationId(), NodeType.host);
+ tester.activateTenantHosts();
// deploy
ApplicationId application1 = ProvisioningTester.applicationId();
@@ -388,7 +388,7 @@ public class ProvisioningTest {
ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build();
tester.makeReadyHosts(4, defaultResources);
- tester.prepareAndActivateInfraApplication(ProvisioningTester.applicationId(), NodeType.host);
+ tester.activateTenantHosts();
ApplicationId application = ProvisioningTester.applicationId();
SystemState state = prepare(application, 2, 2, 3, 3, defaultResources, tester);
@@ -401,7 +401,7 @@ public class ProvisioningTest {
ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
tester.makeReadyHosts(13, defaultResources).activateTenantHosts();
- tester.prepareAndActivateInfraApplication(ProvisioningTester.applicationId(), NodeType.host);
+ tester.activateTenantHosts();
ApplicationId application = ProvisioningTester.applicationId();
{
@@ -444,7 +444,7 @@ public class ProvisioningTest {
ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build();
tester.makeReadyHosts(4, defaultResources).activateTenantHosts();
- tester.prepareAndActivateInfraApplication(ProvisioningTester.applicationId(), NodeType.host);
+ tester.activateTenantHosts();
ApplicationId application = ProvisioningTester.applicationId();
SystemState state = prepare(application, tester, 2, 2, 3, 3, defaultResources, "6.91");
@@ -457,7 +457,7 @@ public class ProvisioningTest {
ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build();
tester.makeReadyHosts(4, defaultResources).activateTenantHosts();
- tester.prepareAndActivateInfraApplication(ProvisioningTester.applicationId(), NodeType.host);
+ tester.activateTenantHosts();
ApplicationId application = ProvisioningTester.applicationId();
String dockerImageRepo = "docker.domain.tld/my/image";
@@ -602,7 +602,7 @@ public class ProvisioningTest {
ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build();
tester.makeReadyHosts(4, new NodeResources(2, 4, 10, 2));
- tester.prepareAndActivateInfraApplication(ProvisioningTester.applicationId(), NodeType.host);
+ tester.activateTenantHosts();
ApplicationId application = ProvisioningTester.applicationId();
SystemState state = prepare(application, 2, 2, 3, 3,
@@ -900,8 +900,7 @@ public class ProvisioningTest {
@Test
public void allow_unretire_nodes_allocated_through_type_spec() {
ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
- ApplicationId tenantHostAppId = ProvisioningTester.applicationId();
- tester.makeReadyHosts(10, defaultResources).prepareAndActivateInfraApplication(tenantHostAppId, NodeType.host);
+ tester.makeReadyHosts(10, defaultResources).activateTenantHosts();
NodeList list = tester.nodeRepository().nodes().list();
assertEquals(10, list.state(Node.State.active).nodeType(NodeType.host).size());
@@ -909,13 +908,13 @@ public class ProvisioningTest {
// Pick out 5 random nodes and retire those
Set<String> retiredHostnames = list.shuffle(new Random()).first(5).hostnames();
tester.patchNodes(node -> retiredHostnames.contains(node.hostname()), node -> node.withWantToRetire(true, Agent.system, tester.clock().instant()));
- tester.prepareAndActivateInfraApplication(tenantHostAppId, NodeType.host);
+ tester.activateTenantHosts();
assertEquals(retiredHostnames, tester.nodeRepository().nodes().list().retired().hostnames());
Set<String> unretiredHostnames = retiredHostnames.stream().limit(2).collect(Collectors.toSet());
tester.patchNodes(node -> unretiredHostnames.contains(node.hostname()), node -> node.withWantToRetire(false, Agent.system, tester.clock().instant()));
- tester.prepareAndActivateInfraApplication(tenantHostAppId, NodeType.host);
+ tester.activateTenantHosts();
assertEquals(3, tester.nodeRepository().nodes().list().retired().size());
}
@@ -1078,7 +1077,7 @@ public class ProvisioningTest {
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);
+ tester.activateTenantHosts();
ApplicationId application = ProvisioningTester.applicationId();
SystemState state = prepare(application, 1, 1, 1, 1, nodeResources, tester);
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 dd8f97d82de..7e85131eaf4 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
@@ -30,6 +30,8 @@ import com.yahoo.config.provision.Zone;
import com.yahoo.config.provisioning.FlavorsConfig;
import com.yahoo.test.ManualClock;
import com.yahoo.transaction.NestedTransaction;
+import com.yahoo.vespa.applicationmodel.InfrastructureApplication;
+import com.yahoo.vespa.applicationmodel.ServiceType;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.mock.MockCurator;
import com.yahoo.vespa.curator.transaction.CuratorTransaction;
@@ -50,6 +52,12 @@ import com.yahoo.vespa.hosted.provision.testutils.MockProvisionServiceProvider;
import com.yahoo.vespa.hosted.provision.testutils.OrchestratorMock;
import com.yahoo.vespa.orchestrator.Orchestrator;
import com.yahoo.vespa.service.duper.ConfigServerApplication;
+import com.yahoo.vespa.service.duper.ConfigServerHostApplication;
+import com.yahoo.vespa.service.duper.ControllerApplication;
+import com.yahoo.vespa.service.duper.ControllerHostApplication;
+import com.yahoo.vespa.service.duper.InfraApplication;
+import com.yahoo.vespa.service.duper.ProxyHostApplication;
+import com.yahoo.vespa.service.duper.TenantHostApplication;
import java.time.temporal.TemporalAmount;
import java.util.ArrayList;
@@ -78,8 +86,6 @@ import static org.junit.Assert.assertTrue;
*/
public class ProvisioningTester {
- public static final ApplicationId tenantHostApp = ApplicationId.from("hosted-vespa", "tenant-host", "default");
-
private final Curator curator;
private final NodeFlavors nodeFlavors;
private final ManualClock clock;
@@ -242,20 +248,24 @@ public class ProvisioningTester {
}
}
- public List<HostSpec> prepareAndActivateInfraApplication(ApplicationId application, NodeType nodeType, Version version) {
- ClusterSpec cluster = ClusterSpec.request(nodeType.isConfigServerLike() ? ClusterSpec.Type.admin : ClusterSpec.Type.container,
- ClusterSpec.Id.from(nodeType == NodeType.config ? "zone-config-servers" : nodeType.toString()))
- .vespaVersion(version)
- .stateful(nodeType == NodeType.config || nodeType == NodeType.controller)
- .build();
- Capacity capacity = Capacity.fromRequiredNodeType(nodeType);
- List<HostSpec> hostSpecs = prepare(application, cluster, capacity);
- activate(application, hostSpecs);
+ public List<HostSpec> prepareAndActivateInfraApplication(InfraApplication application, Version version) {
+ ClusterSpec cluster = application.getClusterSpecWithVersion(version);
+ Capacity capacity = application.getCapacity();
+ List<HostSpec> hostSpecs = prepare(application.getApplicationId(), cluster, capacity);
+ activate(application.getApplicationId(), hostSpecs);
return hostSpecs;
}
- public List<HostSpec> prepareAndActivateInfraApplication(ApplicationId application, NodeType nodeType) {
- return prepareAndActivateInfraApplication(application, nodeType, Version.fromString("6.42"));
+ public List<HostSpec> prepareAndActivateInfraApplication(InfraApplication application) {
+ return prepareAndActivateInfraApplication(application, Version.fromString("6.42"));
+ }
+
+ public List<HostSpec> prepareAndActivateInfraApplication(NodeType nodeType) {
+ return prepareAndActivateInfraApplication(infraApplication(nodeType));
+ }
+
+ public List<HostSpec> prepareAndActivateInfraApplication(NodeType nodeType, Version version) {
+ return prepareAndActivateInfraApplication(infraApplication(nodeType), version);
}
public void deactivate(ApplicationId applicationId) {
@@ -556,7 +566,7 @@ public class ProvisioningTester {
}
public void activateTenantHosts() {
- prepareAndActivateInfraApplication(tenantHostApp, NodeType.host);
+ prepareAndActivateInfraApplication(NodeType.host);
}
public static ClusterSpec containerClusterSpec() {
@@ -809,4 +819,31 @@ public class ProvisioningTester {
}
+ public static InfraApplication infraApplication(NodeType nodeType) {
+ return switch (nodeType) {
+ case controllerhost -> new ControllerHostApplication();
+ case controller -> new ControllerApplication();
+ case confighost -> new ConfigServerHostApplication();
+ case config -> new ConfigServerApplication();
+ case proxyhost -> new ProxyHostApplication();
+ case proxy -> new ProxyApplication();
+ case host -> new TenantHostApplication();
+ default -> throw new IllegalArgumentException("Infrastructure application not defined for node type " + nodeType);
+ };
+ }
+
+ // This is not in service-monitor because it's not really an infrastructure application like the others
+ // (proxy is deployed with a real application package)
+ private static class ProxyApplication extends InfraApplication {
+ private ProxyApplication() {
+ super(InfrastructureApplication.PROXY, ClusterSpec.Type.container, ClusterSpec.Id.from("routing"), ServiceType.CONTAINER, 4443);
+ }
+
+ @Override
+ public ClusterSpec getClusterSpecWithVersion(Version version) {
+ // Not exclusive
+ return ClusterSpec.request(getClusterSpecType(), getClusterSpecId()).exclusive(false).vespaVersion(version).build();
+ }
+ }
+
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java
index 0b4d345b8a5..62f42b0d035 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java
@@ -91,7 +91,7 @@ public class VirtualNodeProvisioningTest {
@Test
public void allow_same_parent_host_for_nodes_in_a_cluster_in_cd_and_non_prod() {
- ProvisioningTester tester = new ProvisioningTester.Builder().build();
+ ProvisioningTester tester;
final int containerNodeCount = 2;
final int contentNodeCount = 2;
@@ -102,7 +102,7 @@ public class VirtualNodeProvisioningTest {
NodeResources flavor = new NodeResources(1, 4, 10, 1);
tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build();
tester.makeReadyNodes(4, flavor, NodeType.host, 1);
- tester.prepareAndActivateInfraApplication(ProvisioningTester.applicationId(), NodeType.host);
+ tester.activateTenantHosts();
List<HostSpec> containerHosts = tester.prepare(applicationId, containerClusterSpec, containerNodeCount, groups, flavor);
List<HostSpec> contentHosts = tester.prepare(applicationId, contentClusterSpec, contentNodeCount, groups, flavor);
@@ -116,7 +116,7 @@ public class VirtualNodeProvisioningTest {
{
tester = new ProvisioningTester.Builder().zone(new Zone(SystemName.cd, Environment.prod, RegionName.from("us-east"))).build();
tester.makeReadyNodes(4, resources1, NodeType.host, 1);
- tester.prepareAndActivateInfraApplication(ProvisioningTester.applicationId(), NodeType.host);
+ tester.activateTenantHosts();
List<HostSpec> containerHosts = tester.prepare(applicationId, containerClusterSpec, containerNodeCount, groups, resources1);
List<HostSpec> contentHosts = tester.prepare(applicationId, contentClusterSpec, contentNodeCount, groups, resources1);
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/ArchiveApiTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/ArchiveApiTest.java
index 7fe2d77b647..4dbf9ff85c0 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/ArchiveApiTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/ArchiveApiTest.java
@@ -46,7 +46,7 @@ public class ArchiveApiTest {
tester.assertPartialResponse(new Request("http://localhost:8080/nodes/v2/node/host4.yahoo.com"), "\"archiveUri\":\"ftp://host/dir/tenant3/application3/instance3/id3/host4/\"", true);
- tester.assertPartialResponse(new Request("http://localhost:8080/nodes/v2/node/dockerhost2.yahoo.com"), "\"archiveUri\":\"s3://acc-bucket/zoneapp/zoneapp/zoneapp/node-admin/dockerhost2/\"", true);
+ tester.assertPartialResponse(new Request("http://localhost:8080/nodes/v2/node/dockerhost2.yahoo.com"), "\"archiveUri\":\"s3://acc-bucket/hosted-vespa/tenant-host/default/tenant-host/dockerhost2/\"", true);
assertFile(new Request("http://localhost:8080/nodes/v2/archive"), "archives.json");
tester.assertResponse(new Request("http://localhost:8080/nodes/v2/archive/tenant/tenant3", new byte[0], Request.Method.DELETE), "{\"message\":\"Removed archive URI for tenant3\"}");
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg1.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg1.json
index 30b0347f2ba..bd251567f16 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg1.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg1.json
@@ -26,13 +26,13 @@
},
"environment": "BARE_METAL",
"owner": {
- "tenant": "cfg",
- "application": "cfg",
- "instance": "cfg"
+ "tenant": "hosted-vespa",
+ "application": "zone-config-servers",
+ "instance": "default"
},
"membership": {
- "clustertype": "container",
- "clusterid": "configservers",
+ "clustertype": "admin",
+ "clusterid": "zone-config-servers",
"group": "0",
"index": 0,
"retired": false
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg2.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg2.json
index f47e5d4919b..022512359cd 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg2.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg2.json
@@ -26,13 +26,13 @@
},
"environment": "BARE_METAL",
"owner": {
- "tenant": "cfg",
- "application": "cfg",
- "instance": "cfg"
+ "tenant": "hosted-vespa",
+ "application": "zone-config-servers",
+ "instance": "default"
},
"membership": {
- "clustertype": "container",
- "clusterid": "configservers",
+ "clustertype": "admin",
+ "clusterid": "zone-config-servers",
"group": "0",
"index": 1,
"retired": false
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-os-upgrade-complete.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-os-upgrade-complete.json
index 6e166e6c5d1..84b34a72e78 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-os-upgrade-complete.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-os-upgrade-complete.json
@@ -26,13 +26,13 @@
},
"environment": "BARE_METAL",
"owner": {
- "tenant": "zoneapp",
- "application": "zoneapp",
- "instance": "zoneapp"
+ "tenant": "hosted-vespa",
+ "application": "tenant-host",
+ "instance": "default"
},
"membership": {
"clustertype": "container",
- "clusterid": "node-admin",
+ "clusterid": "tenant-host",
"group": "0",
"index": 0,
"retired": false
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-2.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-2.json
index 9dad2b3df19..bc1c11c8d06 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-2.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-2.json
@@ -26,13 +26,13 @@
},
"environment": "BARE_METAL",
"owner": {
- "tenant": "zoneapp",
- "application": "zoneapp",
- "instance": "zoneapp"
+ "tenant": "hosted-vespa",
+ "application": "tenant-host",
+ "instance": "default"
},
"membership": {
"clustertype": "container",
- "clusterid": "node-admin",
+ "clusterid": "tenant-host",
"group": "0",
"index": 0,
"retired": false
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-3.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-3.json
index 024569f344c..3b7970a9ec0 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-3.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-3.json
@@ -26,13 +26,13 @@
},
"environment": "BARE_METAL",
"owner": {
- "tenant": "zoneapp",
- "application": "zoneapp",
- "instance": "zoneapp"
+ "tenant": "hosted-vespa",
+ "application": "tenant-host",
+ "instance": "default"
},
"membership": {
"clustertype": "container",
- "clusterid": "node-admin",
+ "clusterid": "tenant-host",
"group": "0",
"index": 0,
"retired": false
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-4.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-4.json
index 314a976724b..d99e71bab49 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-4.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-4.json
@@ -26,13 +26,13 @@
},
"environment": "BARE_METAL",
"owner": {
- "tenant": "zoneapp",
- "application": "zoneapp",
- "instance": "zoneapp"
+ "tenant": "hosted-vespa",
+ "application": "tenant-host",
+ "instance": "default"
},
"membership": {
"clustertype": "container",
- "clusterid": "node-admin",
+ "clusterid": "tenant-host",
"group": "0",
"index": 0,
"retired": false
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports.json
index e2050e9fc70..88bfd9d9418 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports.json
@@ -26,13 +26,13 @@
},
"environment": "BARE_METAL",
"owner": {
- "tenant": "zoneapp",
- "application": "zoneapp",
- "instance": "zoneapp"
+ "tenant": "hosted-vespa",
+ "application": "tenant-host",
+ "instance": "default"
},
"membership": {
"clustertype": "container",
- "clusterid": "node-admin",
+ "clusterid": "tenant-host",
"group": "0",
"index": 0,
"retired": false
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1.json
index 7458c189e27..f70b2dc1b72 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1.json
@@ -26,13 +26,13 @@
},
"environment": "BARE_METAL",
"owner": {
- "tenant": "zoneapp",
- "application": "zoneapp",
- "instance": "zoneapp"
+ "tenant": "hosted-vespa",
+ "application": "tenant-host",
+ "instance": "default"
},
"membership": {
"clustertype": "container",
- "clusterid": "node-admin",
+ "clusterid": "tenant-host",
"group": "0",
"index": 0,
"retired": false
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node2.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node2.json
index a86805d1a71..c1c1ba0cae8 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node2.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node2.json
@@ -26,13 +26,13 @@
},
"environment": "BARE_METAL",
"owner": {
- "tenant": "zoneapp",
- "application": "zoneapp",
- "instance": "zoneapp"
+ "tenant": "hosted-vespa",
+ "application": "tenant-host",
+ "instance": "default"
},
"membership": {
"clustertype": "container",
- "clusterid": "node-admin",
+ "clusterid": "tenant-host",
"group": "0",
"index": 1,
"retired": false
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node3.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node3.json
index 8d0d1649ed0..c597b7afa14 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node3.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node3.json
@@ -26,13 +26,13 @@
},
"environment": "BARE_METAL",
"owner": {
- "tenant": "zoneapp",
- "application": "zoneapp",
- "instance": "zoneapp"
+ "tenant": "hosted-vespa",
+ "application": "tenant-host",
+ "instance": "default"
},
"membership": {
"clustertype": "container",
- "clusterid": "node-admin",
+ "clusterid": "tenant-host",
"group": "0",
"index": 2,
"retired": false
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node4.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node4.json
index 1dd7d583bb0..8a85d55e0df 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node4.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node4.json
@@ -26,13 +26,13 @@
},
"environment": "BARE_METAL",
"owner": {
- "tenant": "zoneapp",
- "application": "zoneapp",
- "instance": "zoneapp"
+ "tenant": "hosted-vespa",
+ "application": "tenant-host",
+ "instance": "default"
},
"membership": {
"clustertype": "container",
- "clusterid": "node-admin",
+ "clusterid": "tenant-host",
"group": "0",
"index": 3,
"retired": false
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node5.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node5.json
index 080c162f7e7..70b5e465de8 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node5.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node5.json
@@ -26,13 +26,13 @@
},
"environment": "BARE_METAL",
"owner": {
- "tenant": "zoneapp",
- "application": "zoneapp",
- "instance": "zoneapp"
+ "tenant": "hosted-vespa",
+ "application": "tenant-host",
+ "instance": "default"
},
"membership": {
"clustertype": "container",
- "clusterid": "node-admin",
+ "clusterid": "tenant-host",
"group": "0",
"index": 4,
"retired": false
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/dockerhost1-with-firmware-data.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/dockerhost1-with-firmware-data.json
index 362a9bfbf1c..85b49dd5113 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/dockerhost1-with-firmware-data.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/dockerhost1-with-firmware-data.json
@@ -26,13 +26,13 @@
},
"environment": "BARE_METAL",
"owner": {
- "tenant": "zoneapp",
- "application": "zoneapp",
- "instance": "zoneapp"
+ "tenant": "hosted-vespa",
+ "application": "tenant-host",
+ "instance": "default"
},
"membership": {
"clustertype": "container",
- "clusterid": "node-admin",
+ "clusterid": "tenant-host",
"group": "0",
"index": 0,
"retired": false
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/load-balancers.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/load-balancers.json
index eef381e8df7..96213dea0a7 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/load-balancers.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/load-balancers.json
@@ -41,14 +41,14 @@
"public": false
},
{
- "id": "cfg:cfg:cfg:configservers",
- "state": "reserved",
+ "id": "hosted-vespa:zone-config-servers:default:zone-config-servers",
+ "state": "active",
"changedAt": 123,
- "application": "cfg",
- "tenant": "cfg",
- "instance": "cfg",
- "cluster": "configservers",
- "hostname": "lb-cfg.cfg.cfg-configservers",
+ "application": "zone-config-servers",
+ "tenant": "hosted-vespa",
+ "instance": "default",
+ "cluster": "zone-config-servers",
+ "hostname": "lb-hosted-vespa.zone-config-servers-zone-config-servers",
"dnsZone": "zone-id-1",
"networks": [
"10.2.3.0/24",
@@ -57,7 +57,18 @@
"ports": [
4443
],
- "reals": [],
+ "reals": [
+ {
+ "hostname": "cfg1.yahoo.com",
+ "ipAddress": "127.0.201.1",
+ "port": 4443
+ },
+ {
+ "hostname": "cfg2.yahoo.com",
+ "ipAddress": "127.0.202.1",
+ "port": 4443
+ }
+ ],
"public": true
},
{