summaryrefslogtreecommitdiffstats
path: root/controller-api
diff options
context:
space:
mode:
authorValerij Fredriksen <freva@users.noreply.github.com>2020-11-03 18:57:25 +0100
committerGitHub <noreply@github.com>2020-11-03 18:57:25 +0100
commitbd4909c4f3dd0175e82d75f4cb529e29fd55a6b0 (patch)
tree480399a3b3b497a3631f60154028241c7f493d5f /controller-api
parent0997ddfd9b032f44fa9767b1602f5f9f2bd744b5 (diff)
parent3a2ddaa4153c560f8c2c8d4aae2a55d5303c2718 (diff)
Merge pull request #15165 from vespa-engine/freva/tag-instances-with-exclusive-to
Tag instances with exclusiveTo
Diffstat (limited to 'controller-api')
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/MockResourceTagger.java9
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/ResourceTagger.java3
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java16
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java1
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepositoryNode.java1
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 +
'}';
}
}