diff options
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 |
commit | ddbe7fbd37a4794295278db1f7e9e43d8bfa2d64 (patch) | |
tree | 811a16a99721735d3d0b73d6d2883b81f6411e87 /controller-server/src | |
parent | bd073bcd6e51fc134d33e61bb8fafa9f356007ef (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')
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, |