summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@oath.com>2018-07-24 09:54:53 +0200
committerValerij Fredriksen <valerijf@oath.com>2018-07-24 09:58:59 +0200
commit8bd33c8b9d64d474a011c74b346702a41635d301 (patch)
tree69ee6177bc3ed96a28dcd426719ea84cd974379f /controller-server
parenta5c6acd172c61dbc318c236f55f2c5e821391a03 (diff)
Tenant pipelines submit API
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java4
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java13
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java17
3 files changed, 32 insertions, 2 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java
index b35b166f6b1..ba79364fa34 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java
@@ -188,8 +188,8 @@ public class JobController {
// controller.applications().artifacts().putApplicationPackage(id, version.toString(), applicationPackage);
// controller.applications().artifacts().putTesterPackage(
// InternalStepRunner.testerOf(id), version.toString(), applicationTestPackage);
-
- notifyOfNewSubmission(id, revision, run);
+//
+// notifyOfNewSubmission(id, revision, run);
});
return version.get();
}
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 622761bc64f..ce16b31981c 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
@@ -203,6 +203,7 @@ public class ApplicationApiHandler extends LoggingRequestHandler {
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/promote")) return promoteApplication(path.get("tenant"), path.get("application"), request);
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/deploying")) return deploy(path.get("tenant"), path.get("application"), request);
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/jobreport")) return notifyJobCompletion(path.get("tenant"), path.get("application"), request);
+ if (path.matches("/application/v4/tenant/{tenant}/application/{application}/submit")) return submit(path.get("tenant"), path.get("application"), request);
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/environment/{environment}/region/{region}/instance/{instance}")) return deploy(path.get("tenant"), path.get("application"), path.get("instance"), path.get("environment"), path.get("region"), request);
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/environment/{environment}/region/{region}/instance/{instance}/deploy")) return deploy(path.get("tenant"), path.get("application"), path.get("instance"), path.get("environment"), path.get("region"), request); // legacy synonym of the above
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/environment/{environment}/region/{region}/instance/{instance}/restart")) return restart(path.get("tenant"), path.get("application"), path.get("instance"), path.get("environment"), path.get("region"), request);
@@ -1244,4 +1245,16 @@ public class ApplicationApiHandler extends LoggingRequestHandler {
return jobMap;
}
+
+ private HttpResponse submit(String tenant, String application, HttpRequest request) {
+ Map<String, byte[]> dataParts = new MultipartParser().parse(request);
+ Inspector submitOptions = SlimeUtils.jsonToSlime(dataParts.get(EnvironmentResource.SUBMIT_OPTIONS)).get();
+ SourceRevision sourceRevision = toSourceRevision(submitOptions).orElseThrow(() ->
+ new IllegalArgumentException("Must specify 'repository', 'branch' and 'commit"));
+
+ return JobControllerApiHandlerHelper.submitResponse(controller.jobController(), tenant, application,
+ sourceRevision,
+ dataParts.get(EnvironmentResource.APPLICATION_ZIP),
+ dataParts.get(EnvironmentResource.APPLICATION_TEST_ZIP));
+ }
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java
index bff67501ea3..281e59ef19f 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java
@@ -101,5 +101,22 @@ class JobControllerApiHandlerHelper {
return new SlimeJsonResponse(slime);
}
+
+ /**
+ * Unpack payload and submit to job controller. Defaults instance to 'default' and renders the
+ * application version on success.
+ *
+ * @return Response with the new application version
+ */
+ static HttpResponse submitResponse(JobController jobController, String tenant, String application,
+ SourceRevision sourceRevision, byte[] appPackage, byte[] testPackage) {
+ ApplicationVersion version = jobController.submit(ApplicationId.from(tenant, application, "default"),
+ sourceRevision, appPackage, testPackage);
+
+ Slime slime = new Slime();
+ Cursor responseObject = slime.setObject();
+ responseObject.setString("version", version.id());
+ return new SlimeJsonResponse(slime);
+ }
}