summaryrefslogtreecommitdiffstats
path: root/controller-api
diff options
context:
space:
mode:
authorOla Aunrønning <olaa@verizonmedia.com>2020-01-07 14:26:24 +0100
committerOla Aunrønning <olaa@verizonmedia.com>2020-01-07 15:00:59 +0100
commit406295ad6bfcd050017a4b4b90c2854b9f84e48d (patch)
tree4a61e0d025adeb51e88fe13ea989455f65bd0ed6 /controller-api
parent9ebceeaf35519f3f1edf8ad70d86a6b754feb457 (diff)
Deprovision tenant host affected by cloud event
Diffstat (limited to 'controller-api')
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/CloudEvent.java6
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/MockAwsEventFetcher.java15
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java2
3 files changed, 18 insertions, 5 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/CloudEvent.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/CloudEvent.java
index a7c8a680b73..defcda28a0f 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/CloudEvent.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/CloudEvent.java
@@ -14,10 +14,10 @@ public final class CloudEvent {
public final Optional<Date> notAfter;
public String awsRegionName;
- public Set<String> affectedHostnames;
+ public Set<String> affectedInstances;
public CloudEvent(String instanceEventId, String code, String description, Date notAfter, Date notBefore, Date notBeforeDeadline,
- String awsRegionName, Set<String> affectedHostnames) {
+ String awsRegionName, Set<String> affectedInstances) {
this.instanceEventId = instanceEventId;
this.code = code;
this.description = description;
@@ -26,6 +26,6 @@ public final class CloudEvent {
this.notAfter = Optional.ofNullable(notAfter);
this.awsRegionName = awsRegionName;
- this.affectedHostnames = affectedHostnames;
+ this.affectedInstances = affectedInstances;
}
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/MockAwsEventFetcher.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/MockAwsEventFetcher.java
index 79b332c093a..baf248fc31c 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/MockAwsEventFetcher.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/MockAwsEventFetcher.java
@@ -2,18 +2,29 @@
package com.yahoo.vespa.hosted.controller.api.integration.aws;
import com.yahoo.vespa.hosted.controller.api.integration.organization.Issue;
+import com.yahoo.vespa.hosted.controller.api.integration.organization.User;
import java.util.List;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.ArrayList;
import java.util.Optional;
public class MockAwsEventFetcher implements AwsEventFetcher {
+
+ private Map<String, List<CloudEvent>> mockedEvents = new HashMap<>();
+
@Override
public List<CloudEvent> getEvents(String awsRegionName) {
- return List.of();
+ return mockedEvents.getOrDefault(awsRegionName, new ArrayList<>());
}
@Override
public Issue createIssue(CloudEvent event) {
- return new Issue("summary", "description", "VESPA", Optional.empty());
+ return new Issue("summary", event.affectedInstances.toString(), "VESPA", Optional.empty()).with(User.from(event.awsRegionName));
+ }
+
+ public void addEvent(String awsRegionName, CloudEvent cloudEvent) {
+ mockedEvents.computeIfAbsent(awsRegionName, i -> new ArrayList<>()).add(cloudEvent);
}
}
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 94616fd27b2..d8b6b1be5ce 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
@@ -73,6 +73,8 @@ public interface NodeRepository {
/** Cancels firmware checks on all hosts in the given zone. */
void cancelFirmwareCheck(ZoneId zone);
+ void retireAndDeprovision(ZoneId zoneId, String hostName);
+
private static Node toNode(NodeRepositoryNode node) {
var application = Optional.ofNullable(node.getOwner())
.map(owner -> ApplicationId.from(owner.getTenant(), owner.getApplication(),