diff options
author | Valerij Fredriksen <freva@users.noreply.github.com> | 2019-08-14 14:24:49 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-14 14:24:49 +0200 |
commit | 4135bb0abbbe1eb6cf2e3607ca457a57d8c77d12 (patch) | |
tree | 15be18fd58ce94f95aadcdfc320ce42c0734225e /controller-server | |
parent | 228ed0616d9844ccab02bef7795aed1c71dbdf53 (diff) | |
parent | ac4c7672bd74867858b4b046e5d6f72941019600 (diff) |
Merge pull request #10270 from vespa-engine/freva/add-aws-region
Add Cloud region name to ZoneApi
Diffstat (limited to 'controller-server')
2 files changed, 24 insertions, 15 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/AwsEventReporterMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/AwsEventReporterMaintainer.java index 14a39109c61..12bee2a7954 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/AwsEventReporterMaintainer.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/AwsEventReporterMaintainer.java @@ -1,7 +1,7 @@ package com.yahoo.vespa.hosted.controller.maintenance; import com.yahoo.config.provision.CloudName; -import com.yahoo.config.provision.zone.ZoneList; +import com.yahoo.config.provision.zone.ZoneApi; import com.yahoo.vespa.hosted.controller.Controller; import com.yahoo.vespa.hosted.controller.api.integration.aws.AwsEventFetcher; import com.yahoo.vespa.hosted.controller.api.integration.aws.CloudEvent; @@ -10,8 +10,10 @@ import com.yahoo.vespa.hosted.controller.api.integration.organization.IssueHandl import java.time.Duration; import java.util.List; +import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; +import java.util.stream.Collectors; /** * @author mgimle @@ -22,27 +24,26 @@ public class AwsEventReporterMaintainer extends Maintainer { private final IssueHandler issueHandler; private final AwsEventFetcher eventFetcher; - private final ZoneList cloudZones; + private final Set<String> awsRegions; AwsEventReporterMaintainer(Controller controller, Duration interval, JobControl jobControl, IssueHandler issueHandler, AwsEventFetcher eventFetcher) { super(controller, interval, jobControl); - this.cloudZones = awsZones(controller); this.issueHandler = issueHandler; this.eventFetcher = eventFetcher; - } - - private ZoneList awsZones(Controller controller) { - return controller.zoneRegistry().zones() + this.awsRegions = controller.zoneRegistry().zones() .ofCloud(CloudName.from("aws")) - .reachable(); + .reachable() + .zones().stream() + .map(ZoneApi::getCloudNativeRegionName) + .collect(Collectors.toSet()); } @Override protected void maintain() { log.log(Level.INFO, "Fetching events for cloud hosts."); - for (var cloudZoneId : cloudZones.ids()) { - List<CloudEvent> events = eventFetcher.getEvents(cloudZoneId); + for (var awsRegion : awsRegions) { + List<CloudEvent> events = eventFetcher.getEvents(awsRegion); for (var event : events) { Issue issue = eventFetcher.createIssue(event); if (!issueHandler.issueExists(issue)) { diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneApiMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneApiMock.java index 4705982e1f2..269bdcc5dca 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneApiMock.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneApiMock.java @@ -1,15 +1,12 @@ // Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.controller.integration; -import com.yahoo.cloud.config.SentinelConfig; -import com.yahoo.config.model.graph.ModelGraphBuilder; import com.yahoo.config.provision.CloudName; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.RegionName; import com.yahoo.config.provision.SystemName; import com.yahoo.config.provision.zone.ZoneApi; import com.yahoo.config.provision.zone.ZoneId; -import com.yahoo.messagebus.MessagebusConfig; /** * @author hakonhall @@ -18,13 +15,15 @@ public class ZoneApiMock implements ZoneApi { private final SystemName systemName; private final ZoneId id; private final CloudName cloudName; + private final String cloudNativeRegionName; public static Builder newBuilder() { return new Builder(); } - private ZoneApiMock(SystemName systemName, ZoneId id, CloudName cloudName) { + private ZoneApiMock(SystemName systemName, ZoneId id, CloudName cloudName, String cloudNativeRegionName) { this.systemName = systemName; this.id = id; this.cloudName = cloudName; + this.cloudNativeRegionName = cloudNativeRegionName; } public static ZoneApiMock fromId(String id) { @@ -44,10 +43,14 @@ public class ZoneApiMock implements ZoneApi { @Override public CloudName getCloudName() { return cloudName; } + @Override + public String getCloudNativeRegionName() { return cloudNativeRegionName; } + public static class Builder { private SystemName systemName = SystemName.defaultSystem(); private ZoneId id = ZoneId.defaultId(); private CloudName cloudName = CloudName.defaultName(); + private String cloudNativeRegionName = id.region().value(); public Builder with(ZoneId id) { this.id = id; @@ -63,8 +66,13 @@ public class ZoneApiMock implements ZoneApi { public Builder withCloud(String cloud) { return with(CloudName.from(cloud)); } + public Builder withCloudNativeRegionName(String cloudRegionName) { + this.cloudNativeRegionName = cloudRegionName; + return this; + } + public ZoneApiMock build() { - return new ZoneApiMock(systemName, id, cloudName); + return new ZoneApiMock(systemName, id, cloudName, cloudNativeRegionName); } } } |