diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-09-09 13:19:36 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-09 13:19:36 +0200 |
commit | 4f855e1a28ed559800fa87ce1509b0d642957d0c (patch) | |
tree | 675fc8d4bbc1d5b13af199857e67b1c19aeecbbf /controller-server | |
parent | 77470a24d8d4a8ca95ec5ddc4d26b460b908e595 (diff) | |
parent | 99d2c13d5bb32b969759067b6c08a9923e8189da (diff) |
Merge pull request #19018 from vespa-engine/bjorncs/service-dump
Bjorncs/service dump
Diffstat (limited to 'controller-server')
2 files changed, 13 insertions, 2 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 60f9ab8dc2a..65a9e2ae282 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 @@ -2085,10 +2085,20 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler { if (configId.isEmpty()) { throw new IllegalArgumentException("Missing configId"); } + Cursor artifactsCursor = requestPayloadCursor.field("artifacts"); + int artifactEntries = artifactsCursor.entries(); + if (artifactEntries == 0) { + throw new IllegalArgumentException("Missing or empty 'artifacts'"); + } + Slime dumpRequest = new Slime(); Cursor dumpRequestCursor = dumpRequest.setObject(); dumpRequestCursor.setLong("createdMillis", controller.clock().millis()); dumpRequestCursor.setString("configId", configId); + Cursor dumpRequestArtifactsCursor = dumpRequestCursor.setArray("artifacts"); + for (int i = 0; i < artifactEntries; i++) { + dumpRequestArtifactsCursor.addString(artifactsCursor.entry(i).asString()); + } if (expiresAt > 0) { dumpRequestCursor.setLong("expiresAt", expiresAt); } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java index ed6fc776e8d..9f366aa25e0 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java @@ -614,13 +614,14 @@ public class ApplicationApiTest extends ControllerContainerTest { // POST to request a service dump tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/instance/instance1/environment/prod/region/us-central-1/node/host-tenant1:application1:instance1-prod.us-central-1/service-dump", POST) .userIdentity(HOSTED_VESPA_OPERATOR) - .data("{\"configId\":\"default/container.1\"}"), + .data("{\"configId\":\"default/container.1\",\"artifacts\":[\"jvm-dump\"]}"), "{\"message\":\"Request created\"}"); // GET to get status of service dump tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/instance/instance1/environment/prod/region/us-central-1/node/host-tenant1:application1:instance1-prod.us-central-1/service-dump", GET) .userIdentity(HOSTED_VESPA_OPERATOR), - "{\"createdMillis\":" + tester.controller().clock().millis() + ",\"configId\":\"default/container.1\"}"); + "{\"createdMillis\":" + tester.controller().clock().millis() + ",\"configId\":\"default/container.1\"" + + ",\"artifacts\":[\"jvm-dump\"]}"); // POST a 'restart application' command tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/environment/prod/region/us-central-1/instance/instance1/restart", POST) |