diff options
author | Ola Aunrønning <olaa@verizonmedia.com> | 2021-02-04 18:44:08 +0100 |
---|---|---|
committer | Ola Aunrønning <olaa@verizonmedia.com> | 2021-02-04 18:44:08 +0100 |
commit | 4d8b5f024046be72949b04820b541db842fe9f01 (patch) | |
tree | 101654ae4f4eae7542a383e00ed2f3d71fdd740a /controller-api | |
parent | 0dc4d5d552893b6acd3b22073f15f57ea44d87b0 (diff) |
Allow configuration of secret stores
Diffstat (limited to 'controller-api')
6 files changed, 94 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 7100baea5a0..c02943c7774 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 @@ -23,6 +23,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.organization.SystemMoni import com.yahoo.vespa.hosted.controller.api.integration.resource.CostReportConsumer; import com.yahoo.vespa.hosted.controller.api.integration.resource.MeteringClient; import com.yahoo.vespa.hosted.controller.api.integration.routing.GlobalRoutingService; +import com.yahoo.vespa.hosted.controller.api.integration.secrets.TenantSecretService; import com.yahoo.vespa.hosted.controller.api.integration.zone.ZoneRegistry; import java.time.Clock; @@ -85,4 +86,6 @@ public interface ServiceRegistry { ContainerRegistry containerRegistry(); + TenantSecretService tenantSecretService(); + } diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/NoopTenantSecretService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/NoopTenantSecretService.java new file mode 100644 index 00000000000..f1721185899 --- /dev/null +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/NoopTenantSecretService.java @@ -0,0 +1,12 @@ +// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.vespa.hosted.controller.api.integration.secrets; + +/** + * @author olaa + */ +public class NoopTenantSecretService implements TenantSecretService { + + @Override + public void addSecretStore(TenantSecretStore tenantSecretStore, String externalId) {} + +} diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/TenantSecretService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/TenantSecretService.java new file mode 100644 index 00000000000..42df4796189 --- /dev/null +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/TenantSecretService.java @@ -0,0 +1,11 @@ +// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.vespa.hosted.controller.api.integration.secrets; + +/** + * @author olaa + */ +public interface TenantSecretService { + + void addSecretStore(TenantSecretStore tenantSecretStore, String externalId); + +} diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/TenantSecretStore.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/TenantSecretStore.java new file mode 100644 index 00000000000..b77de3cc9b8 --- /dev/null +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/TenantSecretStore.java @@ -0,0 +1,62 @@ +// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.vespa.hosted.controller.api.integration.secrets; + +import java.util.Objects; + +/** + * @author olaa + */ +public class TenantSecretStore { + + private final String name; + private final String awsId; + private final String role; + + public TenantSecretStore(String name, String awsId, String role) { + this.name = name; + this.awsId = awsId; + this.role = role; + } + + public String getName() { + return name; + } + + public String getAwsId() { + return awsId; + } + + public String getRole() { + return role; + } + + public boolean isValid() { + return !name.isBlank() && + !awsId.isBlank() && + !role.isBlank(); + } + + @Override + public String toString() { + return "TenantSecretStore{" + + "name='" + name + '\'' + + ", awsId='" + awsId + '\'' + + ", role='" + role + '\'' + + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + TenantSecretStore that = (TenantSecretStore) o; + return name.equals(that.name) && + awsId.equals(that.awsId) && + role.equals(that.role); + } + + @Override + public int hashCode() { + return Objects.hash(name, awsId, role); + } +} diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/package-info.java new file mode 100644 index 00000000000..25f09e45cdd --- /dev/null +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/package-info.java @@ -0,0 +1,5 @@ +// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +@ExportPackage +package com.yahoo.vespa.hosted.controller.api.integration.secrets; + +import com.yahoo.osgi.annotation.ExportPackage;
\ No newline at end of file diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java index 12df0a5e0a7..76ac0611328 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java @@ -57,6 +57,7 @@ enum PathGroup { tenantInfo(Matcher.tenant, PathPrefix.api, "/application/v4/tenant/{tenant}/application/", + "/application/v4/tenant/{tenant}/secret-store/", "/application/v4/tenant/{tenant}/info/", "/routing/v1/status/tenant/{tenant}/{*}"), |