diff options
author | Jon Bratseth <bratseth@oath.com> | 2019-10-13 00:25:50 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-13 00:25:50 +0200 |
commit | fef3449937c173ef8128b6085829e0bbe3f97ce4 (patch) | |
tree | 457423cbfa4a140cf076447fc86d218b88ea4df9 | |
parent | 9461c83b6e89323b4755cf7033484642d271ab22 (diff) | |
parent | 4d4d0679cd3734b2d78402308c938a04764c7b5d (diff) |
Merge pull request #10970 from vespa-engine/jvenstad/disallow-multi-instance-specs-for-now
Disallow multi-instance deployment specs in submit handler
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) |