diff options
author | Valerij Fredriksen <valerij92@gmail.com> | 2021-03-01 16:01:58 +0100 |
---|---|---|
committer | Valerij Fredriksen <valerijf@verizonmedia.com> | 2021-03-01 16:06:20 +0100 |
commit | d7668b577f801945f93effd61963fab0c3a5db66 (patch) | |
tree | ecd885c55faad8dd62ba0cfa7578897ff096e1e1 /controller-api | |
parent | ed4efd875596969e177fee409c311a4fc35a7b0c (diff) |
Define ArchiveService
Diffstat (limited to 'controller-api')
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 |