summaryrefslogtreecommitdiffstats
path: root/controller-api/src/main/java/com/yahoo
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@yahooinc.com>2023-03-02 15:56:44 +0100
committerValerij Fredriksen <valerijf@yahooinc.com>2023-03-02 15:57:32 +0100
commit690da313785c232c601bbc9264a49dd462f785e2 (patch)
tree5db0ab3d7f2bea5eb66b254ca7f9cad9e1fd783a /controller-api/src/main/java/com/yahoo
parent51dd527f03628a0fe37babdb9a105111a7c7d40a (diff)
Find archive URI for given account from ZK cache or ArchiveService
Diffstat (limited to 'controller-api/src/main/java/com/yahoo')
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/MockArchiveService.java25
1 files changed, 24 insertions, 1 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/MockArchiveService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/MockArchiveService.java
index 4bed7c5177f..7461d3aa47e 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/MockArchiveService.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/MockArchiveService.java
@@ -7,6 +7,7 @@ import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.tenant.ArchiveAccess;
import java.net.URI;
+import java.time.Clock;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -19,9 +20,16 @@ import java.util.Set;
*/
public class MockArchiveService implements ArchiveService {
+ private final Map<ZoneId, Set<TenantManagedArchiveBucket>> tenantArchiveBucketsByZone = new HashMap<>();
public Set<VespaManagedArchiveBucket> archiveBuckets = new HashSet<>();
public Map<TenantName, ArchiveAccess> authorizeAccessByTenantName = new HashMap<>();
+ private final Clock clock;
+
+ public MockArchiveService(Clock clock) {
+ this.clock = clock;
+ }
+
@Override
public VespaManagedArchiveBucket createArchiveBucketFor(ZoneId zoneId) {
return new VespaManagedArchiveBucket("bucketName", "keyArn");
@@ -40,11 +48,26 @@ public class MockArchiveService implements ArchiveService {
@Override
public Optional<String> findEnclaveArchiveBucket(ZoneId zoneId, CloudAccount cloudAccount) {
- return Optional.empty();
+ return tenantArchiveBucketsByZone.getOrDefault(zoneId, Set.of()).stream()
+ .filter(bucket -> bucket.cloudAccount().equals(cloudAccount))
+ .findFirst()
+ .map(TenantManagedArchiveBucket::bucketName);
}
@Override
public URI bucketURI(ZoneId zoneId, String bucketName) {
return URI.create(String.format("s3://%s/", bucketName));
}
+
+
+ public void setEnclaveArchiveBucket(ZoneId zoneId, CloudAccount cloudAccount, String bucketName) {
+ removeEnclaveArchiveBucket(zoneId, cloudAccount);
+ tenantArchiveBucketsByZone.computeIfAbsent(zoneId, z -> new HashSet<>())
+ .add(new TenantManagedArchiveBucket(bucketName, cloudAccount, clock.instant()));
+ }
+
+ public void removeEnclaveArchiveBucket(ZoneId zoneId, CloudAccount cloudAccount) {
+ Optional.ofNullable(tenantArchiveBucketsByZone.get(zoneId))
+ .ifPresent(set -> set.removeIf(bucket -> bucket.cloudAccount().equals(cloudAccount)));
+ }
}