diff options
author | Øyvind Grønnesby <oyving@verizonmedia.com> | 2021-03-09 13:05:39 +0100 |
---|---|---|
committer | Øyvind Grønnesby <oyving@verizonmedia.com> | 2021-03-09 13:05:39 +0100 |
commit | a90392ff5effea5171334af1eb2d6bd7fa69d9f1 (patch) | |
tree | e63c72877821edb152a62cf46a68a222b00cd7ce /controller-server | |
parent | 97050a0a332b833aed42d3e5494cd799f636bf8e (diff) |
Make controller emit JSON from secret store validation
Diffstat (limited to 'controller-server')
3 files changed, 14 insertions, 5 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 228a7bab439..611de8fc2b3 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 @@ -33,6 +33,7 @@ import com.yahoo.restapi.SlimeJsonResponse; import com.yahoo.security.KeyUtils; import com.yahoo.slime.Cursor; import com.yahoo.slime.Inspector; +import com.yahoo.slime.JsonParseException; import com.yahoo.slime.Slime; import com.yahoo.slime.SlimeUtils; import com.yahoo.vespa.hosted.controller.Controller; @@ -602,7 +603,17 @@ public class ApplicationApiHandler extends LoggingRequestHandler { return ErrorResponse.notFoundError("No secret store '" + name + "' configured for tenant '" + tenantName + "'"); var response = controller.serviceRegistry().configServer().validateSecretStore(deployment.get(), tenantSecretStore.get(), region, parameterName); - return new MessageResponse(response); + try { + var responseRoot = new Slime(); + var responseCursor = responseRoot.setObject(); + responseCursor.setString("target", deployment.get().toString()); + var responseResultCursor = responseCursor.setObject("result"); + var responseSlime = SlimeUtils.jsonToSlime(response); + SlimeUtils.copyObject(responseSlime.get(), responseResultCursor); + return new SlimeJsonResponse(responseRoot); + } catch (JsonParseException e) { + return new MessageResponse(response); + } } private Optional<DeploymentId> getActiveDeployment(TenantName tenant) { diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java index a5c2176b321..b219ee7ee9f 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java @@ -577,7 +577,7 @@ public class ConfigServerMock extends AbstractComponent implements ConfigServer @Override public String validateSecretStore(DeploymentId deployment, TenantSecretStore tenantSecretStore, String region, String parameterName) { - return deployment.toString() + " - " + tenantSecretStore.toString(); + return "{\"settings\":{\"name\":\"foo\",\"role\":\"vespa-secretstore-access\",\"awsId\":\"892075328880\",\"externalId\":\"*****\",\"region\":\"us-east-1\"},\"status\":\"ok\"}"; } public static class Application { diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiCloudTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiCloudTest.java index 84ef800b2f2..605abf63a66 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiCloudTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiCloudTest.java @@ -177,9 +177,7 @@ public class ApplicationApiCloudTest extends ControllerContainerCloudTest { secretStoreRequest = request("/application/v4/tenant/scoober/secret-store/secret-foo/region/us-west-1/parameter-name/foo/validate", GET) .roles(Set.of(Role.administrator(tenantName))); - tester.assertResponse(secretStoreRequest, "{" + - "\"message\":\"scoober.albums in prod.us-central-1 - TenantSecretStore{name='secret-foo', awsId='123', role='some-role'}\"" + - "}", 200); + tester.assertResponse(secretStoreRequest, "{\"target\":\"scoober.albums in prod.us-central-1\",\"result\":{\"settings\":{\"name\":\"foo\",\"role\":\"vespa-secretstore-access\",\"awsId\":\"892075328880\",\"externalId\":\"*****\",\"region\":\"us-east-1\"},\"status\":\"ok\"}}", 200); } @Test |