diff options
author | Valerij Fredriksen <valerijf@verizonmedia.com> | 2019-06-04 11:22:42 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@verizonmedia.com> | 2019-06-04 11:22:42 +0200 |
commit | dd359e0143899abbcfeef5922985c936ff24ed73 (patch) | |
tree | 950f9a46a6a9f8406da0a7c1a4106979976ec46c /node-repository | |
parent | 8587e088b0f1fda759fb1a394f15f9f0aa415e06 (diff) |
Special handle the tenant-host application where needed
Diffstat (limited to 'node-repository')
2 files changed, 24 insertions, 29 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveExpirer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveExpirer.java index 013fd169f45..9efde8cf673 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveExpirer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveExpirer.java @@ -1,6 +1,7 @@ // Copyright 2017 Yahoo Holdings. 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.config.provision.NodeType; import com.yahoo.vespa.hosted.provision.Node; import com.yahoo.vespa.hosted.provision.NodeRepository; import com.yahoo.vespa.hosted.provision.node.Agent; @@ -50,7 +51,8 @@ public class InactiveExpirer extends Expirer { @Override protected boolean isExpired(Node node) { return super.isExpired(node) - || node.allocation().get().owner().instance().isTester(); + || node.allocation().get().owner().instance().isTester() + || node.type() == NodeType.host; // TODO: Remove after removing tenant hosts from zone-app } } 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 3e42a0efad7..f8dfb6e3e39 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 @@ -3,19 +3,16 @@ 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; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.HostSpec; -import com.yahoo.config.provision.InstanceName; import com.yahoo.config.provision.NodeFlavors; import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; import com.yahoo.config.provision.RegionName; -import com.yahoo.config.provision.TenantName; import com.yahoo.config.provision.Zone; import com.yahoo.test.ManualClock; import com.yahoo.transaction.NestedTransaction; @@ -40,10 +37,6 @@ import com.yahoo.vespa.orchestrator.Orchestrator; import java.time.Clock; import java.time.Duration; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Optional; @@ -59,9 +52,9 @@ public class NodeFailTester { public static final NodeResources nodeResources = new NodeResources(2, 8, 50); // Immutable components - public static final ApplicationId nodeAdminApp = ApplicationId.from(TenantName.from("hosted-vespa"), ApplicationName.from("routing"), InstanceName.from("default")); - public static final ApplicationId app1 = ApplicationId.from(TenantName.from("foo1"), ApplicationName.from("bar"), InstanceName.from("fuz")); - public static final ApplicationId app2 = ApplicationId.from(TenantName.from("foo2"), ApplicationName.from("bar"), InstanceName.from("fuz")); + 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 NodeFlavors nodeFlavors = FlavorConfigBuilder.createDummies("default", "docker"); private static final Zone zone = new Zone(Environment.prod, RegionName.from("us-east")); private static final Duration downtimeLimitOneHour = Duration.ofMinutes(60); @@ -95,8 +88,8 @@ public class NodeFailTester { tester.createHostNodes(3); // Create applications - ClusterSpec clusterApp1 = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("test"), Version.fromString("6.42"), false, Collections.emptySet()); - ClusterSpec clusterApp2 = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("test"), Version.fromString("6.42"), false, Collections.emptySet()); + ClusterSpec clusterApp1 = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("test"), Version.fromString("6.42"), false, Set.of()); + ClusterSpec clusterApp2 = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("test"), Version.fromString("6.42"), false, Set.of()); int wantedNodesApp1 = 5; int wantedNodesApp2 = 7; tester.activate(app1, clusterApp1, wantedNodesApp1); @@ -104,9 +97,9 @@ public class NodeFailTester { assertEquals(wantedNodesApp1, tester.nodeRepository.getNodes(app1, Node.State.active).size()); assertEquals(wantedNodesApp2, tester.nodeRepository.getNodes(app2, Node.State.active).size()); - Map<ApplicationId, MockDeployer.ApplicationContext> apps = new HashMap<>(); - apps.put(app1, new MockDeployer.ApplicationContext(app1, clusterApp1, Capacity.fromCount(wantedNodesApp1, nodeResources, false, true), 1)); - apps.put(app2, new MockDeployer.ApplicationContext(app2, clusterApp2, Capacity.fromCount(wantedNodesApp2, nodeResources, false, true), 1)); + Map<ApplicationId, MockDeployer.ApplicationContext> apps = Map.of( + app1, new MockDeployer.ApplicationContext(app1, clusterApp1, Capacity.fromCount(wantedNodesApp1, nodeResources, false, true), 1), + app2, new MockDeployer.ApplicationContext(app2, clusterApp2, Capacity.fromCount(wantedNodesApp2, nodeResources, false, true), 1)); tester.deployer = new MockDeployer(tester.provisioner, tester.clock(), apps); tester.serviceMonitor = new ServiceMonitorStub(apps, tester.nodeRepository); tester.metric = new MetricsReporterTest.TestMetric(); @@ -125,24 +118,24 @@ public class NodeFailTester { } // Create applications - ClusterSpec clusterNodeAdminApp = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("node-admin"), Version.fromString("6.42"), false, Collections.emptySet()); - ClusterSpec clusterApp1 = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("test"), Version.fromString("6.75.0"), false, Collections.emptySet()); - ClusterSpec clusterApp2 = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("test"), Version.fromString("6.75.0"), false, Collections.emptySet()); + ClusterSpec clusterNodeAdminApp = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("node-admin"), Version.fromString("6.42"), false, Set.of()); + ClusterSpec clusterApp1 = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("test"), Version.fromString("6.75.0"), false, Set.of()); + ClusterSpec clusterApp2 = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("test"), Version.fromString("6.75.0"), false, Set.of()); Capacity allHosts = Capacity.fromRequiredNodeType(NodeType.host); Capacity capacity1 = Capacity.fromCount(3, new NodeResources(1, 1, 1), false, true); Capacity capacity2 = Capacity.fromCount(5, new NodeResources(1, 1, 1), false, true); - tester.activate(nodeAdminApp, clusterNodeAdminApp, allHosts); + tester.activate(tenantHostApp, clusterNodeAdminApp, allHosts); tester.activate(app1, clusterApp1, capacity1); tester.activate(app2, clusterApp2, capacity2); - assertEquals(new HashSet<>(tester.nodeRepository.getNodes(NodeType.host)), - new HashSet<>(tester.nodeRepository.getNodes(nodeAdminApp, Node.State.active))); + assertEquals(Set.of(tester.nodeRepository.getNodes(NodeType.host)), + Set.of(tester.nodeRepository.getNodes(tenantHostApp, Node.State.active))); assertEquals(capacity1.nodeCount(), tester.nodeRepository.getNodes(app1, Node.State.active).size()); assertEquals(capacity2.nodeCount(), tester.nodeRepository.getNodes(app2, Node.State.active).size()); - Map<ApplicationId, MockDeployer.ApplicationContext> apps = new HashMap<>(); - apps.put(nodeAdminApp, new MockDeployer.ApplicationContext(nodeAdminApp, clusterNodeAdminApp, allHosts, 1)); - apps.put(app1, new MockDeployer.ApplicationContext(app1, clusterApp1, capacity1, 1)); - apps.put(app2, new MockDeployer.ApplicationContext(app2, clusterApp2, capacity2, 1)); + Map<ApplicationId, MockDeployer.ApplicationContext> apps = Map.of( + tenantHostApp, new MockDeployer.ApplicationContext(tenantHostApp, clusterNodeAdminApp, allHosts, 1), + app1, new MockDeployer.ApplicationContext(app1, clusterApp1, capacity1, 1), + app2, new MockDeployer.ApplicationContext(app2, clusterApp2, capacity2, 1)); tester.deployer = new MockDeployer(tester.provisioner, tester.clock(), apps); tester.serviceMonitor = new ServiceMonitorStub(apps, tester.nodeRepository); tester.metric = new MetricsReporterTest.TestMetric(); @@ -174,8 +167,8 @@ public class NodeFailTester { public static NodeFailTester withNoApplications() { NodeFailTester tester = new NodeFailTester(); - tester.deployer = new MockDeployer(tester.provisioner, tester.clock(), Collections.emptyMap()); - tester.serviceMonitor = new ServiceMonitorStub(Collections.emptyMap(), tester.nodeRepository); + tester.deployer = new MockDeployer(tester.provisioner, tester.clock(), Map.of()); + tester.serviceMonitor = new ServiceMonitorStub(Map.of(), tester.nodeRepository); tester.metric = new MetricsReporterTest.TestMetric(); tester.failer = tester.createFailer(); return tester; @@ -202,7 +195,7 @@ public class NodeFailTester { } public void allNodesMakeAConfigRequestExcept(Node ... deadNodeArray) { - allNodesMakeAConfigRequestExcept(Arrays.asList(deadNodeArray)); + allNodesMakeAConfigRequestExcept(List.of(deadNodeArray)); } public void allNodesMakeAConfigRequestExcept(List<Node> deadNodes) { |