diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2019-10-12 20:11:32 +0200 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2019-10-12 20:11:32 +0200 |
commit | 4d4d0679cd3734b2d78402308c938a04764c7b5d (patch) | |
tree | a8b35d928afe4b26430fc4a55e5a2d2add30c608 /controller-server | |
parent | c5aa24842adc1c51bd806973d6260adf703c42be (diff) |
Disallow multi-instance deployment specs in submit handler
Diffstat (limited to 'controller-server')
2 files changed, 13 insertions, 0 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 f2025235082..b7e9dff579b 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 @@ -1867,6 +1867,8 @@ public class ApplicationApiHandler extends LoggingRequestHandler { ApplicationPackage applicationPackage = new ApplicationPackage(dataParts.get(EnvironmentResource.APPLICATION_ZIP)); if (DeploymentSpec.empty.equals(applicationPackage.deploymentSpec())) throw new IllegalArgumentException("Missing required file 'deployment.xml'"); + if (applicationPackage.deploymentSpec().instances().size() != 1) + throw new IllegalArgumentException("Only single-instance deployment specs are currently supported"); controller.applications().verifyApplicationIdentityConfiguration(TenantName.from(tenant), applicationPackage, 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 53a8187e6d0..ea96a839959 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 @@ -651,6 +651,17 @@ public class ApplicationApiTest extends ControllerContainerTest { .data(streamer), "{\"message\":\"Application package version: 1.0.45-d00d, source revision of repository 'repo', branch 'master' with commit 'd00d', by a@b, built against 6.1 at 1970-01-01T00:00:01Z\"}"); + // Sixth attempt has a multi-instance deployment spec, and fails. + ApplicationPackage multiInstanceSpec = new ApplicationPackageBuilder() + .instances("instance1,instance2") + .environment(Environment.prod) + .region("us-west-1") + .build(); + tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/instance/instance1/submit", POST) + .screwdriverIdentity(SCREWDRIVER_ID) + .data(createApplicationSubmissionData(multiInstanceSpec)), + "{\"error-code\":\"BAD_REQUEST\",\"message\":\"Only single-instance deployment specs are currently supported\"}", 400); + ApplicationId app1 = ApplicationId.from("tenant1", "application1", "instance1"); tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/instance/instance1/jobreport", POST) .screwdriverIdentity(SCREWDRIVER_ID) |