diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2020-02-14 09:33:50 +0100 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2020-02-14 09:54:57 +0100 |
commit | e8c73cb09347b6170e8dd114a898d0234f93caa1 (patch) | |
tree | 730cc97cdf62ec14e2e1bf632b3f8421458fff4c /controller-server | |
parent | c2d7a2936f9a6c92b086dbb738306bc1d690115d (diff) |
Add "deployment" array with dev jobs in new format to instance jobs path
Diffstat (limited to 'controller-server')
6 files changed, 140 insertions, 24 deletions
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 339facec231..0b96d8a7307 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 @@ -45,6 +45,8 @@ import java.net.URI; import java.time.Instant; import java.time.format.TextStyle; import java.util.ArrayDeque; +import java.util.Arrays; +import java.util.Collection; import java.util.Comparator; import java.util.Deque; import java.util.LinkedHashMap; @@ -181,6 +183,20 @@ class JobControllerApiHandlerHelper { devJobObject.setString("url", baseUriForJobs.resolve(baseUriForJobs.getPath() + "/" + type.jobName()).normalize().toString()); }); + Cursor jobsArray = responseObject.setArray("deployment"); + Arrays.stream(JobType.values()) + .filter(type -> type.environment().isManuallyDeployed()) + .map(devType -> new JobId(instance.id(), devType)) + .forEach(job -> { + Collection<Run> runs = controller.jobController().runs(job).descendingMap().values(); + if (runs.isEmpty()) + return; + + Cursor jobObject = jobsArray.addObject(); + jobObject.setString("name", job.type().jobName()); + toSlime(jobObject.setArray("runs"), runs, baseUriForJobs.toString()); + }); + return new SlimeJsonResponse(slime); } @@ -592,7 +608,7 @@ class JobControllerApiHandlerHelper { Cursor latestVersionsObject = stepObject.setObject("latestVersions"); List<ChangeBlocker> blockers = application.deploymentSpec().requireInstance(stepStatus.instance()).changeBlocker(); - latestVersionPreferablyWithNormalConfidenceNAndotNewerThanSystem(controller.versionStatus().versions()) + latestVersionPreferablyWithNormalConfidenceAndNotNewerThanSystem(controller.versionStatus().versions()) .ifPresent(latestPlatform -> { Cursor latestPlatformObject = latestVersionsObject.setObject("platform"); latestPlatformObject.setString("platform", latestPlatform.versionNumber().toFullString()); @@ -642,22 +658,7 @@ class JobControllerApiHandlerHelper { toSlime(runObject.setObject("versions"), versions); } - Cursor runsArray = stepObject.setArray("runs"); - jobStatus.runs().descendingMap().values().stream().limit(10).forEach(run -> { - Cursor runObject = runsArray.addObject(); - runObject.setLong("id", run.id().number()); - runObject.setString("url", baseUriForJob + "/run/" + run.id()); - runObject.setLong("start", run.start().toEpochMilli()); - run.end().ifPresent(end -> runObject.setLong("end", end.toEpochMilli())); - runObject.setString("status", run.status().name()); - toSlime(runObject.setObject("versions"), run.versions()); - Cursor runStepsArray = runObject.setArray("steps"); - run.steps().forEach((step, info) -> { - Cursor runStepObject = runStepsArray.addObject(); - runStepObject.setString("name", step.name()); - runStepObject.setString("status", info.status().name()); - }); - }); + toSlime(stepObject.setArray("runs"), jobStatus.runs().descendingMap().values(), baseUriForJob); }); } @@ -690,7 +691,7 @@ class JobControllerApiHandlerHelper { }); } - private static Optional<VespaVersion> latestVersionPreferablyWithNormalConfidenceNAndotNewerThanSystem(List<VespaVersion> versions) { + private static Optional<VespaVersion> latestVersionPreferablyWithNormalConfidenceAndNotNewerThanSystem(List<VespaVersion> versions) { int i; for (i = versions.size(); i-- > 0; ) if (versions.get(i).isSystemVersion()) @@ -706,5 +707,22 @@ class JobControllerApiHandlerHelper { return Optional.of(versions.get(i)); } -} + private static void toSlime(Cursor runsArray, Collection<Run> runs, String baseUriForJob) { + runs.stream().limit(10).forEach(run -> { + Cursor runObject = runsArray.addObject(); + runObject.setLong("id", run.id().number()); + runObject.setString("url", baseUriForJob + "/run/" + run.id()); + runObject.setLong("start", run.start().toEpochMilli()); + run.end().ifPresent(end -> runObject.setLong("end", end.toEpochMilli())); + runObject.setString("status", run.status().name()); + toSlime(runObject.setObject("versions"), run.versions()); + Cursor runStepsArray = runObject.setArray("steps"); + run.steps().forEach((step, info) -> { + Cursor runStepObject = runStepsArray.addObject(); + runStepObject.setString("name", step.name()); + runStepObject.setString("status", info.status().name()); + }); + }); + } +} diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-overview.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-overview.json index bfaa62a602d..892734a007f 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-overview.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-overview.json @@ -29,5 +29,37 @@ ], "url": "https://some.url:43/root/dev-us-east-1" } - } + }, + "deployment": [ + { + "name": "dev-us-east-1", + "runs": [ + { + "id": 1, + "url": "https://some.url:43/root/run/run 1 of dev-us-east-1 for tenant.application", + "start": 0, + "end": 0, + "status": "success", + "versions": { + "targetPlatform": "6.1.0", + "targetApplication": {} + }, + "steps": [ + { + "name": "deployReal", + "status": "succeeded" + }, + { + "name": "installReal", + "status": "succeeded" + }, + { + "name": "copyVespaLogs", + "status": "succeeded" + } + ] + } + ] + } + ] } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs-direct-deployment.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs-direct-deployment.json index 85a3245c308..e97c76668d3 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs-direct-deployment.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs-direct-deployment.json @@ -3,5 +3,6 @@ "deployments": [], "lastVersions": {}, "deploying": {}, - "jobs": {} + "jobs": {}, + "deployment": [] } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs.json index 3ab7078ae6a..60b7c568b19 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs.json @@ -328,5 +328,37 @@ ], "url": "http://localhost:8080/application/v4/tenant/tenant1/application/application1/instance/instance1/job/dev-us-east-1" } - } + }, + "deployment": [ + { + "name": "dev-us-east-1", + "runs": [ + { + "id": 1, + "url": "http://localhost:8080/application/v4/tenant/tenant1/application/application1/instance/instance1/job/run/run 1 of dev-us-east-1 for tenant1.application1.instance1", + "start": "(ignore)", + "end": "(ignore)", + "status": "success", + "versions": { + "targetPlatform": "6.1.0", + "targetApplication": {} + }, + "steps": [ + { + "name": "deployReal", + "status": "succeeded" + }, + { + "name": "installReal", + "status": "succeeded" + }, + { + "name": "copyVespaLogs", + "status": "succeeded" + } + ] + } + ] + } + ] } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview-user-instance.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview-user-instance.json index 95afb12dcbf..c2e12c655f8 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview-user-instance.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview-user-instance.json @@ -50,5 +50,37 @@ ], "url": "https://some.url:43/root/dev-aws-us-east-2a" } - } + }, + "deployment": [ + { + "name": "dev-aws-us-east-2a", + "runs": [ + { + "id": 1, + "url": "https://some.url:43/root//run/run 1 of dev-aws-us-east-2a for tenant.application.user", + "start": 3703000, + "end": 3703000, + "status": "success", + "versions": { + "targetPlatform": "7.1.0", + "targetApplication": {} + }, + "steps": [ + { + "name": "deployReal", + "status": "succeeded" + }, + { + "name": "installReal", + "status": "succeeded" + }, + { + "name": "copyVespaLogs", + "status": "succeeded" + } + ] + } + ] + } + ] } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview.json index 9510b06fb42..1e1a4549006 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview.json @@ -945,5 +945,6 @@ "url": "https://some.url:43/root/production-us-east-3" } }, - "devJobs": {} + "devJobs": {}, + "deployment": [] } |