diff options
6 files changed, 31 insertions, 18 deletions
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/zone/ZoneList.java b/config-provisioning/src/main/java/com/yahoo/config/provision/zone/ZoneList.java index 3e75842984f..c6ace00b90c 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/zone/ZoneList.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/zone/ZoneList.java @@ -35,7 +35,7 @@ public interface ZoneList extends ZoneFilter { /** Returns the ZoneIds of all zones in this list. */ default List<ZoneId> ids() { - return zones().stream().map(ZoneApi::getId).collect(Collectors.toList()); + return zones().stream().map(ZoneApi::getVirtualId).collect(Collectors.toList()); } } diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneRegistry.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneRegistry.java index 7ac7a36d742..8b4c00e9b9d 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneRegistry.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneRegistry.java @@ -37,6 +37,9 @@ public interface ZoneRegistry { /** Returns a list containing the id of all zones in this registry */ ZoneFilter zones(); + /** Returns a list containing the id of all zones in this registry, including the system. */ + ZoneFilter zonesIncludingSystem(); + /** Returns the default region for the given environment, if one is configured */ Optional<RegionName> getDefaultRegion(Environment environment); diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveAccessMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveAccessMaintainer.java index 0c2324d1a0d..bd69ea41b05 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveAccessMaintainer.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveAccessMaintainer.java @@ -18,7 +18,6 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; -import java.util.stream.Stream; import static java.util.stream.Collectors.groupingBy; @@ -47,14 +46,11 @@ public class ArchiveAccessMaintainer extends ControllerMaintainer { @Override protected double maintain() { // Count buckets - so we can alert if we get close to the account limit of 1000 - Stream.concat(Stream.of(zoneRegistry.systemZone().getVirtualId()), - zoneRegistry.zones().all().ids().stream()) - .forEach(zoneId -> metric.set(bucketCountMetricName, archiveBucketDb.buckets(zoneId).size(), - metric.createContext(Map.of("zone", zoneId.value())))); + zoneRegistry.zonesIncludingSystem().all().ids().forEach(zoneId -> + metric.set(bucketCountMetricName, archiveBucketDb.buckets(zoneId).size(), + metric.createContext(Map.of("zone", zoneId.value())))); - Stream.concat(Stream.of(zoneRegistry.systemZone()), - zoneRegistry.zones().controllerUpgraded().zones().stream()) - .forEach(z -> { + zoneRegistry.zonesIncludingSystem().controllerUpgraded().zones().forEach(z -> { ZoneId zoneId = z.getVirtualId(); try { var tenantArchiveAccessRoles = cloudTenantArchiveExternalAccessRoles(); 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 9e08e774744..d173fcb0e18 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 @@ -35,15 +35,15 @@ public class ZoneApiMock implements ZoneApi { } public static ZoneApiMock fromId(String id) { - return newBuilder().withId(id).build(); + return from(ZoneId.from(id)); } public static ZoneApiMock from(Environment environment, RegionName region) { - return newBuilder().with(ZoneId.from(environment, region)).build(); + return from(ZoneId.from(environment, region)); } - public static ZoneApiMock from(ZoneId zone) { - return newBuilder().with(zone).build(); + public static ZoneApiMock from(ZoneId id) { + return newBuilder().with(id).build(); } @Override @@ -80,7 +80,7 @@ public class ZoneApiMock implements ZoneApi { private SystemName systemName = SystemName.defaultSystem(); private ZoneId id = ZoneId.defaultId(); - private ZoneId virtualId ; + private ZoneId virtualId = null; private CloudName cloudName = CloudName.defaultName(); private String cloudNativeRegionName = id.region().value(); diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneRegistryMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneRegistryMock.java index 5b8e25cbfe8..849503ae8d1 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneRegistryMock.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneRegistryMock.java @@ -25,6 +25,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.zone.ZoneRegistry; import java.net.URI; import java.time.Duration; +import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -51,7 +52,7 @@ public class ZoneRegistryMock extends AbstractComponent implements ZoneRegistry /** * This sets the default list of zones contained in this. If your test need a particular set of zones, use - * {@link #setZones(List)} instead of changing the default set.} + * {@link #setZones(List)} instead of changing the default set. */ public ZoneRegistryMock(SystemName system) { this.system = system; @@ -156,6 +157,21 @@ public class ZoneRegistryMock extends AbstractComponent implements ZoneRegistry } @Override + public ZoneFilter zonesIncludingSystem() { + var fullZones = new ArrayList<ZoneApi>(1 + zones.size()); + fullZones.add(systemAsZone()); + fullZones.addAll(zones); + return ZoneFilterMock.from(fullZones, zoneRoutingMethods, reprovisionToUpgradeOs); + } + + private ZoneApiMock systemAsZone() { + return ZoneApiMock.newBuilder() + .with(ZoneId.from("prod.us-east-1")) + .withVirtualId(ZoneId.from("prod.controller")) + .build(); + } + + @Override public AthenzService getConfigServerHttpsIdentity(ZoneId zone) { return new AthenzService("vespadomain", "provider-" + zone.environment().value() + "-" + zone.region().value()); } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveAccessMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveAccessMaintainerTest.java index e73d66b0329..5571f957e83 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveAccessMaintainerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveAccessMaintainerTest.java @@ -17,7 +17,6 @@ import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; -import java.util.stream.Stream; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; @@ -49,8 +48,7 @@ public class ArchiveAccessMaintainerTest { assertEquals(Set.of(tenant1role), archiveService.authorizedIamRolesForKey.get(testBucket.keyArn())); var expected = Map.of("archive.bucketCount", - Stream.concat(Stream.of(tester.controller().zoneRegistry().systemZone().getVirtualId()), - tester.controller().zoneRegistry().zones().all().ids().stream()) + tester.controller().zoneRegistry().zonesIncludingSystem().all().ids().stream() .collect(Collectors.toMap( zone -> Map.of("zone", zone.value()), zone -> zone.equals(testZone) ? 1d : 0d))); |