diff options
author | Jon Marius Venstad <jonmv@users.noreply.github.com> | 2020-01-06 11:07:20 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-06 11:07:20 +0100 |
commit | 44cb0815efd0c477ceeb7058d96d2eb9bfb2e49b (patch) | |
tree | 02901869ec87572cfe99b832353dc9c7f46b409b | |
parent | 85b4bec296463e1ff0d2391cfe7ff3f2d24a266a (diff) | |
parent | 07c2b674e2bc61e004bbaf4b9ab979e056d23320 (diff) |
Merge pull request #11631 from vespa-engine/hakonhall/add-steps-to-the-run-rest-api
Adds steps to the run REST API
8 files changed, 112 insertions, 11 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java index 4c61b341c20..83173fc32a7 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java @@ -13,7 +13,6 @@ import com.yahoo.vespa.hosted.controller.deployment.StepRunner; import org.jetbrains.annotations.TestOnly; import java.time.Duration; -import java.time.Instant; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; @@ -40,7 +39,8 @@ public class JobRunner extends Maintainer { } @TestOnly - public JobRunner(Controller controller, Duration duration, JobControl jobControl, ExecutorService executors, StepRunner runner) { + public JobRunner(Controller controller, Duration duration, JobControl jobControl, ExecutorService executors, + StepRunner runner) { super(controller, duration, jobControl); this.jobs = controller.jobController(); this.jobs.setRunner(this::advance); @@ -102,7 +102,7 @@ public class JobRunner extends Maintainer { StepInfo stepInfo = run.stepInfo(lockedStep.get()).orElseThrow(); if (stepInfo.startTime().isEmpty()) { - jobs.setStartTimestamp(run.id(), Instant.now(), lockedStep); + jobs.setStartTimestamp(run.id(), controller().clock().instant(), lockedStep); } runner.run(lockedStep, run.id()).ifPresent(status -> { 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 6413be181c3..6e22acd65a1 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 @@ -445,6 +445,13 @@ class JobControllerApiHandlerHelper { } runLog.lastId().ifPresent(id -> detailsObject.setLong("lastId", id)); + Cursor stepsObject = detailsObject.setObject("steps"); + run.steps().forEach((step, info) -> { + Cursor stepCursor = stepsObject.setObject(step.name()); + stepCursor.setString("status", info.status().name()); + info.startTime().ifPresent(startTime -> stepCursor.setLong("startMillis", startTime.toEpochMilli())); + }); + return new SlimeJsonResponse(slime); } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java index 038a2afb306..5b5c6b61357 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java @@ -12,7 +12,6 @@ import com.yahoo.vespa.hosted.controller.ControllerTester; import com.yahoo.vespa.hosted.controller.Instance; import com.yahoo.vespa.hosted.controller.api.identifiers.DeploymentId; import com.yahoo.vespa.hosted.controller.api.integration.athenz.AthenzDbMock; -import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationVersion; import com.yahoo.vespa.hosted.controller.api.integration.deployment.TesterId; import com.yahoo.vespa.hosted.controller.api.integration.routing.RoutingGeneratorMock; import com.yahoo.vespa.hosted.controller.api.integration.stubs.MockTesterCloud; @@ -29,9 +28,7 @@ import com.yahoo.vespa.hosted.controller.maintenance.Upgrader; import java.time.DayOfWeek; import java.time.Duration; import java.time.Instant; -import java.time.LocalDateTime; import java.time.ZoneOffset; -import java.time.ZonedDateTime; import java.time.temporal.TemporalAdjusters; import java.util.Collections; import java.util.logging.Logger; diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelperTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelperTest.java index b53a4862192..07888ec1609 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelperTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelperTest.java @@ -2,7 +2,6 @@ package com.yahoo.vespa.hosted.controller.restapi.application; import com.yahoo.component.Version; -import com.yahoo.config.provision.InstanceName; import com.yahoo.config.provision.zone.ZoneId; import com.yahoo.container.jdisc.HttpResponse; import com.yahoo.vespa.hosted.controller.api.application.v4.model.DeployOptions; diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-us-east-1-log-first-part.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-us-east-1-log-first-part.json index 21ef5035481..e5b2fef2120 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-us-east-1-log-first-part.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-us-east-1-log-first-part.json @@ -59,5 +59,18 @@ }, "active": true, "lastId": 9, + "steps": { + "deployReal": { + "startMillis": 0, + "status": "succeeded" + }, + "installReal": { + "startMillis": 0, + "status": "unfinished" + }, + "copyVespaLogs": { + "status": "unfinished" + } + }, "status": "running" } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-us-east-1-log-second-part.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-us-east-1-log-second-part.json index 6f0c5c8a384..3248bfa78a1 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-us-east-1-log-second-part.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-us-east-1-log-second-part.json @@ -50,5 +50,19 @@ }, "active": false, "lastId": 18, + "steps": { + "deployReal": { + "startMillis": 0, + "status": "succeeded" + }, + "installReal": { + "startMillis": 0, + "status": "succeeded" + }, + "copyVespaLogs": { + "startMillis": 0, + "status": "succeeded" + } + }, "status": "success" } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/system-test-details.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/system-test-details.json index 993c53b52d8..986109cd1be 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/system-test-details.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/system-test-details.json @@ -399,6 +399,48 @@ } ] }, - "lastId": 75 + "lastId": 75, + "steps": { + "deployTester": { + "status": "succeeded", + "startMillis": "(ignore)" + }, + "deployReal": { + "status": "succeeded", + "startMillis": "(ignore)" + }, + "installTester": { + "status": "succeeded", + "startMillis": "(ignore)" + }, + "installReal": { + "status": "succeeded", + "startMillis": "(ignore)" + }, + "startTests": { + "status": "succeeded", + "startMillis": "(ignore)" + }, + "endTests": { + "status": "succeeded", + "startMillis": "(ignore)" + }, + "copyVespaLogs": { + "status": "succeeded", + "startMillis": "(ignore)" + }, + "deactivateReal": { + "status": "succeeded", + "startMillis": "(ignore)" + }, + "deactivateTester": { + "status": "succeeded", + "startMillis": "(ignore)" + }, + "report": { + "status": "succeeded", + "startMillis": "(ignore)" + } + } } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/us-east-3-log-without-first.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/us-east-3-log-without-first.json index e344ef07762..4e501410324 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/us-east-3-log-without-first.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/us-east-3-log-without-first.json @@ -1,6 +1,4 @@ { - "active": false, - "status": "deploymentFailed", "log": { "deployTester": [ { @@ -17,5 +15,36 @@ } ] }, - "lastId": 2 + "active": false, + "lastId": 2, + "steps": { + "startTests": { + "status": "unfinished" + }, + "deployTester": { + "startMillis": 1000, + "status": "failed" + }, + "report": { + "startMillis": 1000, + "status": "succeeded" + }, + "installTester": { + "status": "unfinished" + }, + "deployReal": { + "status": "unfinished" + }, + "installReal": { + "status": "unfinished" + }, + "deactivateTester": { + "startMillis": 1000, + "status": "succeeded" + }, + "endTests": { + "status": "unfinished" + } + }, + "status": "deploymentFailed" } |