summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2022-05-09 12:45:42 +0200
committerGitHub <noreply@github.com>2022-05-09 12:45:42 +0200
commitc03fd610dfbd865fea5573c5e76a448317935034 (patch)
treef13288037ff704cab0f6788097f3d4c78e56e85d
parent89979c5654ea16ceeb3df236e647be6de857136f (diff)
parent7feccb4136704ee8c7e31c6e17672b32ebb92b45 (diff)
Merge pull request #22508 from vespa-engine/revert-22451-revert-22382-hakonhall/maintain-archive-access-for-controller
Maintain archive access for controller, 2. try
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/zone/ZoneList.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneRegistry.java3
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveAccessMaintainer.java7
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneApiMock.java10
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneRegistryMock.java18
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveAccessMaintainerTest.java8
6 files changed, 33 insertions, 15 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 e3f69f59d24..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
@@ -46,13 +46,12 @@ 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
- zoneRegistry.zones().all().ids().forEach(zoneId ->
+ zoneRegistry.zonesIncludingSystem().all().ids().forEach(zoneId ->
metric.set(bucketCountMetricName, archiveBucketDb.buckets(zoneId).size(),
metric.createContext(Map.of("zone", zoneId.value()))));
-
- zoneRegistry.zones().controllerUpgraded().zones().forEach(z -> {
- ZoneId zoneId = z.getId();
+ zoneRegistry.zonesIncludingSystem().controllerUpgraded().zones().forEach(z -> {
+ ZoneId zoneId = z.getVirtualId();
try {
var tenantArchiveAccessRoles = cloudTenantArchiveExternalAccessRoles();
archiveBucketDb.buckets(zoneId).forEach(archiveBucket ->
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 df2b462914e..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
@@ -48,10 +48,10 @@ public class ArchiveAccessMaintainerTest {
assertEquals(Set.of(tenant1role), archiveService.authorizedIamRolesForKey.get(testBucket.keyArn()));
var expected = Map.of("archive.bucketCount",
- tester.controller().zoneRegistry().zones().all().ids().stream()
- .collect(Collectors.toMap(
- zone -> Map.of("zone", zone.value()),
- zone -> zone.equals(testZone) ? 1d : 0d)));
+ tester.controller().zoneRegistry().zonesIncludingSystem().all().ids().stream()
+ .collect(Collectors.toMap(
+ zone -> Map.of("zone", zone.value()),
+ zone -> zone.equals(testZone) ? 1d : 0d)));
assertEquals(expected, metric.metrics());
}