aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server/src
diff options
context:
space:
mode:
authorØyvind Grønnesby <oyving@verizonmedia.com>2021-03-23 10:07:07 +0100
committerØyvind Grønnesby <oyving@verizonmedia.com>2021-03-23 10:07:07 +0100
commitddbe7fbd37a4794295278db1f7e9e43d8bfa2d64 (patch)
tree811a16a99721735d3d0b73d6d2883b81f6411e87 /controller-server/src
parentbd073bcd6e51fc134d33e61bb8fafa9f356007ef (diff)
Update API to show secret store information
- Add information about the IAM role - Put everything inside its own object - TODO to remove the old structure after console update
Diffstat (limited to 'controller-server/src')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java25
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-with-keys.json4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-with-secrets.json10
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-without-applications.json4
4 files changed, 39 insertions, 4 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
index ca080078328..6472b7820a5 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
@@ -50,6 +50,7 @@ import com.yahoo.vespa.hosted.controller.api.application.v4.model.configserverbi
import com.yahoo.vespa.hosted.controller.api.application.v4.model.configserverbindings.ServiceInfo;
import com.yahoo.vespa.hosted.controller.api.identifiers.DeploymentId;
import com.yahoo.vespa.hosted.controller.api.identifiers.TenantId;
+import com.yahoo.vespa.hosted.controller.api.integration.aws.TenantRoles;
import com.yahoo.vespa.hosted.controller.api.integration.billing.Quota;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.ApplicationReindexing;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Cluster;
@@ -1974,8 +1975,13 @@ public class ApplicationApiHandler extends LoggingRequestHandler {
keyObject.setString("user", user.getName());
});
+ // TODO: remove this once console is updated
toSlime(object, cloudTenant.tenantSecretStores());
+ toSlime(object.setObject("secretStore"),
+ controller.serviceRegistry().roleService().getTenantRole(tenant.name()),
+ cloudTenant.tenantSecretStores());
+
var tenantQuota = controller.serviceRegistry().billingController().getQuota(tenant.name());
var usedQuota = applications.stream()
.map(Application::quotaUsage)
@@ -2249,13 +2255,24 @@ public class ApplicationApiHandler extends LoggingRequestHandler {
private void toSlime(Cursor object, List<TenantSecretStore> tenantSecretStores) {
Cursor secretStore = object.setArray("secretStores");
tenantSecretStores.forEach(store -> {
- Cursor storeObject = secretStore.addObject();
- storeObject.setString("name", store.getName());
- storeObject.setString("awsId", store.getAwsId());
- storeObject.setString("role", store.getRole());
+ toSlime(secretStore.addObject(), store);
+ });
+ }
+
+ private void toSlime(Cursor object, TenantRoles tenantRoles, List<TenantSecretStore> tenantSecretStores) {
+ object.setString("tenantRole", tenantRoles.containerRole());
+ var stores = object.setArray("stores");
+ tenantSecretStores.forEach(secretStore -> {
+ toSlime(stores.addObject(), secretStore);
});
}
+ private void toSlime(Cursor object, TenantSecretStore secretStore) {
+ object.setString("name", secretStore.getName());
+ object.setString("awsId", secretStore.getAwsId());
+ object.setString("role", secretStore.getRole());
+ }
+
private String readToString(InputStream stream) {
Scanner scanner = new Scanner(stream).useDelimiter("\\A");
if ( ! scanner.hasNext()) return null;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-with-keys.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-with-keys.json
index f94dc7c562b..36fb03d76b2 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-with-keys.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-with-keys.json
@@ -11,6 +11,10 @@
"user": "developer@tenant"
}],
"secretStores": [],
+ "secretStore": {
+ "tenantRole": "my-tenant-tenant-role",
+ "stores": []
+ },
"quota": {
"budget": null,
"budgetUsed": 0.0,
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-with-secrets.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-with-secrets.json
index 25891755323..952e9575d63 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-with-secrets.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-with-secrets.json
@@ -14,6 +14,16 @@
"role": "secret-role"
}
],
+ "secretStore": {
+ "tenantRole": "my-tenant-tenant-role",
+ "stores": [
+ {
+ "name": "secret-foo",
+ "awsId": "123",
+ "role": "secret-role"
+ }
+ ]
+ },
"quota": {
"budget": null,
"budgetUsed": 0.0,
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-without-applications.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-without-applications.json
index 5965d4b5b00..f0b7bf52d43 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-without-applications.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-without-applications.json
@@ -4,6 +4,10 @@
"creator": "administrator@tenant",
"pemDeveloperKeys": [],
"secretStores": [],
+ "secretStore": {
+ "tenantRole": "my-tenant-tenant-role",
+ "stores": []
+ },
"quota": {
"budget": null,
"budgetUsed": 0.0,