diff options
author | Ola Aunrønning <olaa@verizonmedia.com> | 2020-01-07 14:26:24 +0100 |
---|---|---|
committer | Ola Aunrønning <olaa@verizonmedia.com> | 2020-01-07 15:00:59 +0100 |
commit | 406295ad6bfcd050017a4b4b90c2854b9f84e48d (patch) | |
tree | 4a61e0d025adeb51e88fe13ea989455f65bd0ed6 /controller-api | |
parent | 9ebceeaf35519f3f1edf8ad70d86a6b754feb457 (diff) |
Deprovision tenant host affected by cloud event
Diffstat (limited to 'controller-api')
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(), |