summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2019-10-13 00:25:50 +0200
committerGitHub <noreply@github.com>2019-10-13 00:25:50 +0200
commitfef3449937c173ef8128b6085829e0bbe3f97ce4 (patch)
tree457423cbfa4a140cf076447fc86d218b88ea4df9
parent9461c83b6e89323b4755cf7033484642d271ab22 (diff)
parent4d4d0679cd3734b2d78402308c938a04764c7b5d (diff)
Merge pull request #10970 from vespa-engine/jvenstad/disallow-multi-instance-specs-for-now
Disallow multi-instance deployment specs in submit handler
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java11
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)