aboutsummaryrefslogtreecommitdiffstats
path: root/controller-api
diff options
context:
space:
mode:
authorValerij Fredriksen <valerij92@gmail.com>2021-03-01 16:01:58 +0100
committerValerij Fredriksen <valerijf@verizonmedia.com>2021-03-01 16:06:20 +0100
commitd7668b577f801945f93effd61963fab0c3a5db66 (patch)
treeecd885c55faad8dd62ba0cfa7578897ff096e1e1 /controller-api
parented4efd875596969e177fee409c311a4fc35a7b0c (diff)
Define ArchiveService
Diffstat (limited to 'controller-api')
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/ServiceRegistry.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/ArchiveService.java22
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/MockArchiveService.java26
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/package-info.java8
4 files changed, 58 insertions, 0 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/ServiceRegistry.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/ServiceRegistry.java
index c02943c7774..b2fd4a5d76c 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/ServiceRegistry.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/ServiceRegistry.java
@@ -1,6 +1,7 @@
// 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.api.integration;
+import com.yahoo.vespa.hosted.controller.api.integration.archive.ArchiveService;
import com.yahoo.vespa.hosted.controller.api.integration.aws.RoleService;
import com.yahoo.vespa.hosted.controller.api.integration.aws.AwsEventFetcher;
import com.yahoo.vespa.hosted.controller.api.integration.aws.ResourceTagger;
@@ -88,4 +89,5 @@ public interface ServiceRegistry {
TenantSecretService tenantSecretService();
+ ArchiveService archiveService();
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/ArchiveService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/ArchiveService.java
new file mode 100644
index 00000000000..c7384bf85d8
--- /dev/null
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/ArchiveService.java
@@ -0,0 +1,22 @@
+package com.yahoo.vespa.hosted.controller.api.integration.archive;
+
+import com.yahoo.config.provision.TenantName;
+import com.yahoo.config.provision.zone.ZoneId;
+
+import java.net.URI;
+import java.util.Optional;
+
+/**
+ * Service that manages archive storage URIs for tenant nodes.
+ *
+ * @author freva
+ */
+public interface ArchiveService {
+
+ Optional<URI> archiveUriFor(ZoneId zoneId, TenantName tenant);
+
+ // TODO: Method to configure archive permissions/access for a tenant
+
+ // TODO: Method to revoke permission/access for a tenant
+
+}
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
new file mode 100644
index 00000000000..6859c7a8645
--- /dev/null
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/MockArchiveService.java
@@ -0,0 +1,26 @@
+package com.yahoo.vespa.hosted.controller.api.integration.archive;
+
+import com.yahoo.config.provision.TenantName;
+import com.yahoo.config.provision.zone.ZoneId;
+
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Optional;
+import java.util.Map;
+
+/**
+ * @author freva
+ */
+public class MockArchiveService implements ArchiveService {
+
+ private final Map<ZoneId, Map<TenantName, URI>> archiveUris = new HashMap<>();
+
+ @Override
+ public Optional<URI> archiveUriFor(ZoneId zoneId, TenantName tenant) {
+ return Optional.ofNullable(archiveUris.get(zoneId)).map(uris -> uris.get(tenant));
+ }
+
+ public void setArchiveUri(ZoneId zone, TenantName tenantName, URI archiveUri) {
+ archiveUris.computeIfAbsent(zone, z -> new HashMap<>()).put(tenantName, archiveUri);
+ }
+}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/package-info.java
new file mode 100644
index 00000000000..067d05cd14e
--- /dev/null
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/package-info.java
@@ -0,0 +1,8 @@
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+/**
+ * @author freva
+ */
+@ExportPackage
+package com.yahoo.vespa.hosted.controller.api.integration.archive;
+
+import com.yahoo.osgi.annotation.ExportPackage; \ No newline at end of file