diff options
author | Valerij Fredriksen <freva@users.noreply.github.com> | 2020-11-03 18:57:25 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-03 18:57:25 +0100 |
commit | bd4909c4f3dd0175e82d75f4cb529e29fd55a6b0 (patch) | |
tree | 480399a3b3b497a3631f60154028241c7f493d5f /controller-api | |
parent | 0997ddfd9b032f44fa9767b1602f5f9f2bd744b5 (diff) | |
parent | 3a2ddaa4153c560f8c2c8d4aae2a55d5303c2718 (diff) |
Merge pull request #15165 from vespa-engine/freva/tag-instances-with-exclusive-to
Tag instances with exclusiveTo
Diffstat (limited to 'controller-api')
5 files changed, 23 insertions, 7 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/MockResourceTagger.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/MockResourceTagger.java index 0fd114095d7..a74a362330b 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/MockResourceTagger.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/MockResourceTagger.java @@ -8,21 +8,22 @@ import com.yahoo.config.provision.zone.ZoneId; import java.util.HashMap; import java.util.Map; +import java.util.Optional; /** * @author olaa */ public class MockResourceTagger implements ResourceTagger { - Map<ZoneId, Map<HostName, ApplicationId>> values = new HashMap<>(); + Map<ZoneId, Map<HostName, Optional<ApplicationId>>> values = new HashMap<>(); @Override - public int tagResources(ZoneApi zone, Map<HostName, ApplicationId> tenantOfHosts) { - values.put(zone.getId(), tenantOfHosts); + public int tagResources(ZoneApi zone, Map<HostName, Optional<ApplicationId>> ownerOfHosts) { + values.put(zone.getId(), ownerOfHosts); return 0; } - public Map<ZoneId, Map<HostName, ApplicationId>> getValues() { + public Map<ZoneId, Map<HostName, Optional<ApplicationId>>> getValues() { return values; } } diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/ResourceTagger.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/ResourceTagger.java index 5b3cd18403b..61f8a57ac8b 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/ResourceTagger.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/ResourceTagger.java @@ -6,6 +6,7 @@ import com.yahoo.config.provision.HostName; import com.yahoo.config.provision.zone.ZoneApi; import java.util.Map; +import java.util.Optional; /** * @author olaa @@ -15,7 +16,7 @@ public interface ResourceTagger { /** * Returns number of tagged resources */ - int tagResources(ZoneApi zone, Map<HostName, ApplicationId> tenantOfHosts); + int tagResources(ZoneApi zone, Map<HostName, Optional<ApplicationId>> ownerOfHosts); static ResourceTagger empty() { return (zone, tenantOfHosts) -> 0; diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java index b57b2dbc496..d1faacaeba7 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java @@ -51,6 +51,7 @@ public class Node { private final boolean wantToRetire; private final boolean wantToDeprovision; private final Optional<TenantName> reservedTo; + private final Optional<ApplicationId> exclusiveTo; private final Map<String, JsonNode> reports; public Node(HostName hostname, Optional<HostName> parentHostname, State state, NodeType type, NodeResources resources, Optional<ApplicationId> owner, @@ -58,7 +59,8 @@ public class Node { Optional<Instant> currentFirmwareCheck, Optional<Instant> wantedFirmwareCheck, ServiceState serviceState, Optional<Instant> suspendedSince, long restartGeneration, long wantedRestartGeneration, long rebootGeneration, long wantedRebootGeneration, int cost, String flavor, String clusterId, ClusterType clusterType, boolean wantToRetire, boolean wantToDeprovision, - Optional<TenantName> reservedTo, DockerImage wantedDockerImage, DockerImage currentDockerImage, Map<String, JsonNode> reports) { + Optional<TenantName> reservedTo, Optional<ApplicationId> exclusiveTo, + DockerImage wantedDockerImage, DockerImage currentDockerImage, Map<String, JsonNode> reports) { this.hostname = hostname; this.parentHostname = parentHostname; this.state = state; @@ -84,6 +86,7 @@ public class Node { this.wantToRetire = wantToRetire; this.wantToDeprovision = wantToDeprovision; this.reservedTo = reservedTo; + this.exclusiveTo = exclusiveTo; this.wantedDockerImage = wantedDockerImage; this.currentDockerImage = currentDockerImage; this.reports = reports; @@ -193,6 +196,8 @@ public class Node { public Optional<TenantName> reservedTo() { return reservedTo; } + public Optional<ApplicationId> exclusiveTo() { return exclusiveTo; } + public Map<String, JsonNode> reports() { return reports; } @@ -267,6 +272,7 @@ public class Node { private boolean wantToRetire; private boolean wantToDeprovision; private Optional<TenantName> reservedTo = Optional.empty(); + private Optional<ApplicationId> exclusiveTo = Optional.empty(); private Map<String, JsonNode> reports = new HashMap<>(); public Builder() { } @@ -299,6 +305,7 @@ public class Node { this.wantToRetire = node.wantToRetire; this.wantToDeprovision = node.wantToDeprovision; this.reservedTo = node.reservedTo; + this.exclusiveTo = node.exclusiveTo; this.reports = node.reports; } @@ -437,11 +444,16 @@ public class Node { return this; } + public Builder exclusiveTo(ApplicationId exclusiveTo) { + this.exclusiveTo = Optional.of(exclusiveTo); + return this; + } + public Node build() { return new Node(hostname, parentHostname, state, type, resources, owner, currentVersion, wantedVersion, currentOsVersion, wantedOsVersion, currentFirmwareCheck, wantedFirmwareCheck, serviceState, suspendedSince, restartGeneration, wantedRestartGeneration, rebootGeneration, wantedRebootGeneration, - cost, flavor, clusterId, clusterType, wantToRetire, wantToDeprovision, reservedTo, + cost, flavor, clusterId, clusterType, wantToRetire, wantToDeprovision, reservedTo, exclusiveTo, wantedDockerImage, currentDockerImage, reports); } diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java index 6f4b39ac9b9..1285670d52c 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java @@ -129,6 +129,7 @@ public interface NodeRepository { node.getWantToRetire(), node.getWantToDeprovision(), Optional.ofNullable(node.getReservedTo()).map(TenantName::from), + Optional.ofNullable(node.getExclusiveTo()).map(ApplicationId::fromSerializedForm), dockerImageFrom(node.getWantedDockerImage()), dockerImageFrom(node.getCurrentDockerImage()), node.getReports()); diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepositoryNode.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepositoryNode.java index a57080324ca..2e5132fe17d 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepositoryNode.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepositoryNode.java @@ -418,6 +418,7 @@ public class NodeRepositoryNode { ", reports=" + reports + ", modelName=" + modelName + ", reservedTo=" + reservedTo + + ", exclusiveTo=" + exclusiveTo + '}'; } } |