summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2021-09-08 15:43:52 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2021-09-08 15:43:52 +0200
commit51aca4675a692acd885837decfd3e5d6ee060976 (patch)
treedd0f9a5953b9486375ff591ef775b4e14b1d88ec /controller-server
parent03adeb88b8cbd638f6f1bf52c6a4bf0350606903 (diff)
Prepare for multiple types of service dump artifacts
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java10
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java5
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)