summaryrefslogtreecommitdiffstats
path: root/controller-api
diff options
context:
space:
mode:
authorOla Aunrønning <olaa@verizonmedia.com>2021-02-15 10:37:20 +0100
committerGitHub <noreply@github.com>2021-02-15 10:37:20 +0100
commit1e83a0f397f9a895f3e397a9dca1c52333a7e415 (patch)
tree651289f91f97c4bfb20253cf210a78e248e4a44e /controller-api
parent9c519b1d3f14fb40f3d66487d6c1dcd6e63e1128 (diff)
parent4d8b5f024046be72949b04820b541db842fe9f01 (diff)
Merge pull request #16399 from vespa-engine/olaa/store-cloud-id
Allow configuration of secret stores
Diffstat (limited to 'controller-api')
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/ServiceRegistry.java3
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/NoopTenantSecretService.java12
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/TenantSecretService.java11
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/TenantSecretStore.java62
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/package-info.java5
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java1
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}/{*}"),