summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorOla Aunrønning <olaa@verizonmedia.com>2021-07-09 14:37:36 +0200
committerGitHub <noreply@github.com>2021-07-09 14:37:36 +0200
commit69d8d5cd460a0df75e4957bfbbeae26f495b5eeb (patch)
treeffebcef66aadd99e84a817baff80f2fe510a76a8 /controller-server
parent9a3b7f1dad328200c9f0062c5e3d0735fc7c8613 (diff)
parentefccb5322e8f33f88a0a700a51d4a158c60af463 (diff)
Merge pull request #18574 from vespa-engine/olaa/applicationid-is-non-optional
ResourceTagger differentiates shared hosts and infrastructure
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceTagMaintainer.java16
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceTagMaintainerTest.java7
2 files changed, 17 insertions, 6 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceTagMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceTagMaintainer.java
index ab988bcf0ac..e0441df025b 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceTagMaintainer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceTagMaintainer.java
@@ -4,6 +4,7 @@ package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.CloudName;
import com.yahoo.config.provision.HostName;
+import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.api.integration.aws.ResourceTagger;
@@ -20,6 +21,9 @@ import java.util.stream.Collectors;
*/
public class ResourceTagMaintainer extends ControllerMaintainer {
+ static final ApplicationId SHARED_HOST_APPLICATION = ApplicationId.from("hosted-vespa", "shared-host", "default");
+ static final ApplicationId INFRASTRUCTURE_APPLICATION = ApplicationId.from("hosted-vespa", "infrastructure", "default");
+
private final ResourceTagger resourceTagger;
public ResourceTagMaintainer(Controller controller, Duration interval, ResourceTagger resourceTagger) {
@@ -33,7 +37,7 @@ public class ResourceTagMaintainer extends ControllerMaintainer {
.ofCloud(CloudName.from("aws"))
.reachable()
.zones().forEach(zone -> {
- Map<HostName, Optional<ApplicationId>> applicationOfHosts = getTenantOfParentHosts(zone.getId());
+ Map<HostName, ApplicationId> applicationOfHosts = getTenantOfParentHosts(zone.getId());
int taggedResources = resourceTagger.tagResources(zone, applicationOfHosts);
if (taggedResources > 0)
log.log(Level.INFO, "Tagged " + taggedResources + " resources in " + zone.getId());
@@ -41,15 +45,21 @@ public class ResourceTagMaintainer extends ControllerMaintainer {
return 1.0;
}
- private Map<HostName, Optional<ApplicationId>> getTenantOfParentHosts(ZoneId zoneId) {
+ private Map<HostName, ApplicationId> getTenantOfParentHosts(ZoneId zoneId) {
return controller().serviceRegistry().configServer().nodeRepository()
.list(zoneId, false)
.stream()
.filter(node -> node.type().isHost())
.collect(Collectors.toMap(
Node::hostname,
- Node::exclusiveTo,
+ this::getApplicationId,
(node1, node2) -> node1
));
}
+
+ private ApplicationId getApplicationId(Node node) {
+ if (node.type() == NodeType.host)
+ return node.exclusiveTo().orElse(SHARED_HOST_APPLICATION);
+ return INFRASTRUCTURE_APPLICATION;
+ }
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceTagMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceTagMaintainerTest.java
index 814dc2a3f50..516c28ab5cd 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceTagMaintainerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceTagMaintainerTest.java
@@ -17,6 +17,7 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
+import static com.yahoo.vespa.hosted.controller.maintenance.ResourceTagMaintainer.SHARED_HOST_APPLICATION;
import static org.junit.Assert.assertEquals;
/**
@@ -35,9 +36,9 @@ public class ResourceTagMaintainerTest {
mockResourceTagger);
resourceTagMaintainer.maintain();
assertEquals(2, mockResourceTagger.getValues().size());
- Map<HostName, Optional<ApplicationId>> applicationForHost = mockResourceTagger.getValues().get(ZoneId.from("prod.region-2"));
- assertEquals(ApplicationId.from("t1", "a1", "i1"), applicationForHost.get(HostName.from("parentHostA.prod.region-2")).get());
- assertEquals(Optional.empty(), applicationForHost.get(HostName.from("parentHostB.prod.region-2")));
+ Map<HostName, ApplicationId> applicationForHost = mockResourceTagger.getValues().get(ZoneId.from("prod.region-2"));
+ assertEquals(ApplicationId.from("t1", "a1", "i1"), applicationForHost.get(HostName.from("parentHostA.prod.region-2")));
+ assertEquals(SHARED_HOST_APPLICATION, applicationForHost.get(HostName.from("parentHostB.prod.region-2")));
}
private void setUpZones() {