From 8bd33c8b9d64d474a011c74b346702a41635d301 Mon Sep 17 00:00:00 2001 From: Valerij Fredriksen Date: Tue, 24 Jul 2018 09:54:53 +0200 Subject: Tenant pipelines submit API --- .../hosted/controller/deployment/JobController.java | 4 ++-- .../restapi/application/ApplicationApiHandler.java | 13 +++++++++++++ .../application/JobControllerApiHandlerHelper.java | 17 +++++++++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) (limited to 'controller-server') 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 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); + } } -- cgit v1.2.3