diff options
author | jonmv <venstad@gmail.com> | 2023-09-08 14:28:41 +0200 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2023-09-08 14:28:41 +0200 |
commit | 5b8ac53099efb36ced9ac00d3a0fe0e519e1f469 (patch) | |
tree | a9e35cc01a50da50bb209259574d669a353a83c8 /controller-server/src | |
parent | 8a9b19317d5ed16d0a6fd098f3665c4d2c7a90df (diff) |
Store and show in /app/v4/ the change and dependent prod job triggering tests
Diffstat (limited to 'controller-server/src')
16 files changed, 197 insertions, 45 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentStatus.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentStatus.java index ac896338643..02ecdcaad21 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentStatus.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentStatus.java @@ -26,6 +26,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.deployment.RevisionId; import com.yahoo.vespa.hosted.controller.api.integration.zone.ZoneRegistry; import com.yahoo.vespa.hosted.controller.application.Change; import com.yahoo.vespa.hosted.controller.application.Deployment; +import com.yahoo.vespa.hosted.controller.deployment.Run.Reason; import com.yahoo.vespa.hosted.controller.versions.VersionStatus; import com.yahoo.vespa.hosted.controller.versions.VespaVersion; import com.yahoo.vespa.hosted.controller.versions.VespaVersion.Confidence; @@ -308,7 +309,8 @@ public class DeploymentStatus { jobs.merge(job, List.of(new Job(typeWithZone, versions, readiness.okAt(now) && jobs().get(job).get().isRunning() ? readiness.running() : readiness, - change)), DeploymentStatus::union); + change, + null)), DeploymentStatus::union); } }); }); @@ -574,7 +576,7 @@ public class DeploymentStatus { // which is the case when the next versions to run that test with is not the same as we want to deploy here. List<Job> tests = job.type().isTest() ? null : jobs.get(new JobId(job.application(), JobType.productionTestOf(job.type().zone()))); readiness = tests != null && ! versions.targetsMatch(tests.get(0).versions) && readiness.okAt(now) ? readiness.blocked() : readiness; - toRun.add(new Job(job.type(), versions, readiness, partial)); + toRun.add(new Job(job.type(), versions, readiness, partial, null)); // Assume first partial change is applied before the second. existingPlatform = Optional.of(versions.targetPlatform()); existingRevision = Optional.of(versions.targetRevision()); @@ -700,7 +702,8 @@ public class DeploymentStatus { testJobs.merge(testJob, List.of(new Job(testJob.type(), productionJob.versions(), readiness.okAt(now) && jobs().get(testJob).get().isRunning() ? readiness.running() : readiness, - productionJob.change)), + productionJob.change, + job)), DeploymentStatus::union); } @@ -1192,12 +1195,14 @@ public class DeploymentStatus { private final Versions versions; private final Readiness readiness; private final Change change; + private final JobId dependent; - public Job(JobType type, Versions versions, Readiness readiness, Change change) { + public Job(JobType type, Versions versions, Readiness readiness, Change change, JobId dependent) { this.type = type; this.versions = type.isSystemTest() ? versions.withoutSources() : versions; this.readiness = readiness; this.change = change; + this.dependent = dependent; } public JobType type() { @@ -1212,6 +1217,10 @@ public class DeploymentStatus { return readiness; } + public Reason reason() { + return new Reason(Optional.empty(), Optional.ofNullable(dependent), Optional.ofNullable(change)); + } + @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java index 42044cf335a..e247d6baa09 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java @@ -22,6 +22,7 @@ import com.yahoo.vespa.hosted.controller.application.Deployment; import com.yahoo.vespa.hosted.controller.application.TenantAndApplicationId; import com.yahoo.vespa.hosted.controller.deployment.DeploymentStatus.DelayCause; import com.yahoo.vespa.hosted.controller.deployment.DeploymentStatus.Readiness; +import com.yahoo.vespa.hosted.controller.deployment.Run.Reason; import java.math.BigDecimal; import java.time.Clock; @@ -185,7 +186,12 @@ public class DeploymentTrigger { /** Attempts to trigger the given job. */ private boolean trigger(Job job) { try { - trigger(job, null); + log.log(Level.FINE, () -> "Triggering " + job); + applications().lockApplicationOrThrow(TenantAndApplicationId.from(job.applicationId()), application -> { + jobs.start(job.applicationId(), job.jobType, job.versions, false, job.reason); + applications().store(application.with(job.applicationId().instance(), instance -> + instance.withJobPause(job.jobType, OptionalLong.empty()))); + }); return true; } catch (Exception e) { @@ -194,16 +200,6 @@ public class DeploymentTrigger { } } - /** Attempts to trigger the given job. */ - private void trigger(Job job, String reason) { - log.log(Level.FINE, () -> "Triggering " + job); - applications().lockApplicationOrThrow(TenantAndApplicationId.from(job.applicationId()), application -> { - jobs.start(job.applicationId(), job.jobType, job.versions, false, Optional.ofNullable(reason)); - applications().store(application.with(job.applicationId().instance(), instance -> - instance.withJobPause(job.jobType, OptionalLong.empty()))); - }); - } - /** Force triggering of a job for given instance, with same versions as last run. */ public JobId reTrigger(ApplicationId applicationId, JobType jobType, String reason) { Application application = applications().requireApplication(TenantAndApplicationId.from(applicationId)); @@ -212,7 +208,8 @@ public class DeploymentTrigger { JobStatus jobStatus = jobs.jobStatus(new JobId(applicationId, jobType)); Run last = jobStatus.lastTriggered() .orElseThrow(() -> new IllegalArgumentException(job + " has never been triggered")); - trigger(deploymentJob(instance, last.versions(), last.id().type(), jobStatus.isNodeAllocationFailure(), clock.instant()), reason); + trigger(deploymentJob(instance, last.versions(), last.id().type(), jobStatus.isNodeAllocationFailure(), clock.instant(), + new Reason(Optional.ofNullable(reason), last.reason().dependent(), last.reason().change()))); return job; } @@ -236,7 +233,7 @@ public class DeploymentTrigger { if ( ! upgradeRevision && change.revision().isPresent()) change = change.withoutApplication(); if ( ! upgradePlatform && change.platform().isPresent()) change = change.withoutPlatform(); Versions versions = Versions.from(change, application, status.deploymentFor(job), status.fallbackPlatform(change, job)); - DeploymentStatus.Job toTrigger = new DeploymentStatus.Job(job.type(), versions, new Readiness(controller.clock().instant()), instance.change()); + DeploymentStatus.Job toTrigger = new DeploymentStatus.Job(job.type(), versions, new Readiness(controller.clock().instant()), instance.change(), null); Map<JobId, List<DeploymentStatus.Job>> testJobs = status.testJobs(Map.of(job, List.of(toTrigger))); Map<JobId, List<DeploymentStatus.Job>> jobs = testJobs.isEmpty() || ! requireTests @@ -245,13 +242,13 @@ public class DeploymentTrigger { .filter(entry -> controller.jobController().last(entry.getKey()).map(Run::hasEnded).orElse(true)) .collect(toMap(Map.Entry::getKey, Map.Entry::getValue)); - jobs.forEach((jobId, versionsList) -> { + jobs.forEach((jobId, jobList) -> { trigger(deploymentJob(application.require(jobId.application().instance()), - versionsList.get(0).versions(), + jobList.get(0).versions(), jobId.type(), status.jobs().get(jobId).get().isNodeAllocationFailure(), - clock.instant()), - reason); + clock.instant(), + new Reason(Optional.of(reason), jobList.get(0).reason().dependent(), jobList.get(0).reason().change()))); }); return List.copyOf(jobs.keySet()); } @@ -262,7 +259,7 @@ public class DeploymentTrigger { last.versions().targetRevision(), Optional.of(last.versions().targetPlatform()), Optional.of(last.versions().targetRevision())); - jobs.start(job.application(), job.type(), target, true, Optional.of(reason)); + jobs.start(job.application(), job.type(), target, true, Reason.because(reason)); return List.of(job); } @@ -383,7 +380,8 @@ public class DeploymentTrigger { job.versions(), job.type(), status.instanceJobs(jobId.application().instance()).get(jobId.type()).isNodeAllocationFailure(), - job.readiness().at())); + job.readiness().at(), + job.reason())); } }); return Collections.unmodifiableList(jobs); @@ -458,8 +456,8 @@ public class DeploymentTrigger { // ---------- Version and job helpers ---------- - private Job deploymentJob(Instance instance, Versions versions, JobType jobType, boolean isNodeAllocationFailure, Instant availableSince) { - return new Job(instance, versions, jobType, availableSince, isNodeAllocationFailure, instance.change().revision().isPresent()); + private Job deploymentJob(Instance instance, Versions versions, JobType jobType, boolean isNodeAllocationFailure, Instant availableSince, Reason reason) { + return new Job(instance, versions, jobType, availableSince, isNodeAllocationFailure, instance.change().revision().isPresent(), reason); } // ---------- Data containers ---------- @@ -473,15 +471,17 @@ public class DeploymentTrigger { private final Instant availableSince; private final boolean isRetry; private final boolean isApplicationUpgrade; + private final Run.Reason reason; private Job(Instance instance, Versions versions, JobType jobType, Instant availableSince, - boolean isRetry, boolean isApplicationUpgrade) { + boolean isRetry, boolean isApplicationUpgrade, Run.Reason reason) { this.instanceId = instance.id(); this.jobType = jobType; this.versions = versions; this.availableSince = availableSince; this.isRetry = isRetry; this.isApplicationUpgrade = isApplicationUpgrade; + this.reason = reason; } ApplicationId applicationId() { return instanceId; } @@ -489,6 +489,7 @@ public class DeploymentTrigger { Instant availableSince() { return availableSince; } // TODO jvenstad: This is 95% broken now. Change.at() can restore it. boolean isRetry() { return isRetry; } boolean applicationUpgrade() { return isApplicationUpgrade; } + Reason reason() { return reason; } @Override public String toString() { 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 589188bfc4f..0773c95e1f2 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 @@ -699,12 +699,12 @@ public class JobController { } /** Orders a run of the given type, or throws an IllegalStateException if that job type is already running. */ - public void start(ApplicationId id, JobType type, Versions versions, boolean isRedeployment, Optional<String> reason) { + public void start(ApplicationId id, JobType type, Versions versions, boolean isRedeployment, Reason reason) { start(id, type, versions, isRedeployment, JobProfile.of(type), reason); } /** Orders a run of the given type, or throws an IllegalStateException if that job type is already running. */ - public void start(ApplicationId id, JobType type, Versions versions, boolean isRedeployment, JobProfile profile, Optional<String> reason) { + public void start(ApplicationId id, JobType type, Versions versions, boolean isRedeployment, JobProfile profile, Reason reason) { ApplicationVersion revision = controller.applications().requireApplication(TenantAndApplicationId.from(id)).revisions().get(versions.targetRevision()); if (revision.compileVersion() .map(version -> controller.applications().versionCompatibility(id).refuse(versions.targetPlatform(), version)) @@ -718,8 +718,7 @@ public class JobController { throw new IllegalArgumentException("Cannot start " + type + " for " + id + "; it is already running!"); RunId newId = new RunId(id, type, last.map(run -> run.id().number()).orElse(0L) + 1); - curator.writeLastRun(Run.initial(newId, versions, isRedeployment, controller.clock().instant(), profile, - new Reason(reason, Optional.empty(), Optional.empty()))); + curator.writeLastRun(Run.initial(newId, versions, isRedeployment, controller.clock().instant(), profile, reason)); metric.jobStarted(newId.job()); }); } @@ -777,7 +776,7 @@ public class JobController { new Versions(targetPlatform, version.id(), lastRun.map(run -> run.versions().targetPlatform()), lastRun.map(run -> run.versions().targetRevision())), false, dryRun ? JobProfile.developmentDryRun : JobProfile.development, - Optional.empty()); + Reason.empty()); }); locked(id, type, __ -> { diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/Run.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/Run.java index 12e04df4790..76ab154688f 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/Run.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/Run.java @@ -344,6 +344,10 @@ public class Run { throw new IllegalStateException("This run ended at " + end.get() + " -- it can't be further modified!"); } - public record Reason(Optional<String> reason, Optional<JobId> dependent, Optional<Change> change) { } + public record Reason(Optional<String> reason, Optional<JobId> dependent, Optional<Change> change) { + private static final Reason empty = new Reason(Optional.empty(), Optional.empty(), Optional.empty()); + public static Reason empty() { return empty; } + public static Reason because(String reason) { return new Reason(Optional.of(reason), Optional.empty(), Optional.empty()); } + } } diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentUpgrader.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentUpgrader.java index 8a3a2a11e09..82cac1e7520 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentUpgrader.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentUpgrader.java @@ -71,7 +71,7 @@ public class DeploymentUpgrader extends ControllerMaintainer { log.log(Level.FINE, "Upgrading deployment of " + instance.id() + " in " + deployment.zone()); attempts.incrementAndGet(); - controller().jobController().start(instance.id(), JobType.deploymentTo(deployment.zone()), target, true, Optional.of("automated upgrade")); + controller().jobController().start(instance.id(), JobType.deploymentTo(deployment.zone()), target, true, Run.Reason.because("automated upgrade")); } catch (Exception e) { failures.incrementAndGet(); log.log(Level.WARNING, "Failed upgrading " + deployment + " of " + instance + 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 140cc142ceb..7555a020edc 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 @@ -126,6 +126,13 @@ class JobControllerApiHandlerHelper { detailsObject.setBool("active", ! run.hasEnded()); detailsObject.setString("status", nameOf(run.status())); run.reason().reason().ifPresent(reason -> detailsObject.setString("reason", reason)); + run.reason().dependent().ifPresent(dependent -> { + Cursor dependentObject = detailsObject.setObject("dependent"); + dependentObject.setString("instance", dependent.application().instance().value()); + dependentObject.setString("region", dependent.type().zone().region().value()); + run.reason().change().flatMap(Change::platform).ifPresent(platform -> dependentObject.setString("platform", platform.toFullString())); + run.reason().change().flatMap(Change::revision).ifPresent(revision -> dependentObject.setLong("revision", revision.number())); + }); try { jobController.updateTestLog(runId); jobController.updateVespaLog(runId); @@ -499,6 +506,13 @@ class JobControllerApiHandlerHelper { run.end().ifPresent(end -> runObject.setLong("end", end.toEpochMilli())); runObject.setString("status", nameOf(run.status())); run.reason().reason().ifPresent(reason -> runObject.setString("reason", reason)); + run.reason().dependent().ifPresent(dependent -> { + Cursor dependentObject = runObject.setObject("dependent"); + dependentObject.setString("instance", dependent.application().instance().value()); + dependentObject.setString("region", dependent.type().zone().region().value()); + run.reason().change().flatMap(Change::platform).ifPresent(platform -> dependentObject.setString("platform", platform.toFullString())); + run.reason().change().flatMap(Change::revision).ifPresent(revision -> dependentObject.setLong("revision", revision.number())); + }); toSlime(runObject.setObject("versions"), run.versions(), application); Cursor runStepsArray = runObject.setArray("steps"); run.steps().forEach((step, info) -> { diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentExpirerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentExpirerTest.java index 0c238ea7c9d..f39374a2a89 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentExpirerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentExpirerTest.java @@ -73,7 +73,7 @@ public class DeploymentExpirerTest { // Dev application expires when enough time has passed since most recent attempt // Redeployments done by DeploymentUpgrader do not affect this tester.clock().advance(Duration.ofDays(12).plus(Duration.ofSeconds(1))); - tester.jobs().start(devApp.instanceId(), DeploymentContext.devUsEast1, lastRun.versions(), true, Optional.of("upgrade")); + tester.jobs().start(devApp.instanceId(), DeploymentContext.devUsEast1, lastRun.versions(), true, Run.Reason.because("upgrade")); expirer.maintain(); assertEquals(0, permanentDeployments(devApp.instance())); assertEquals(1, permanentDeployments(prodApp.instance())); diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunnerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunnerTest.java index b0fe2867ab7..3ee6c7aadc3 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunnerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunnerTest.java @@ -14,6 +14,7 @@ import com.yahoo.vespa.hosted.controller.deployment.JobController; import com.yahoo.vespa.hosted.controller.deployment.JobMetrics; import com.yahoo.vespa.hosted.controller.deployment.JobProfile; import com.yahoo.vespa.hosted.controller.deployment.Run; +import com.yahoo.vespa.hosted.controller.deployment.Run.Reason; import com.yahoo.vespa.hosted.controller.deployment.RunStatus; import com.yahoo.vespa.hosted.controller.deployment.Step; import com.yahoo.vespa.hosted.controller.deployment.Step.Status; @@ -423,7 +424,7 @@ public class JobRunnerTest { } private void start(JobController jobs, ApplicationId id, JobType type) { - jobs.start(id, type, versions, false, Optional.empty()); + jobs.start(id, type, versions, false, Reason.empty()); } public static ExecutorService inThreadExecutor() { diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-overview-2.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-overview-2.json index 19b3d5dc2d7..8a22a7500d4 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-overview-2.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-overview-2.json @@ -167,6 +167,11 @@ "start": 14403000, "end": 14403000, "status": "success", + "dependent": { + "instance": "default", + "region": "us-central-1", + "revision": 3 + }, "versions": { "targetPlatform": "6.1.0", "targetApplication": { @@ -225,6 +230,11 @@ "start": 1000, "end": 1000, "status": "success", + "dependent": { + "instance": "default", + "region": "us-central-1", + "revision": 2 + }, "versions": { "targetPlatform": "6.1.0", "targetApplication": { @@ -283,6 +293,11 @@ "start": 0, "end": 0, "status": "success", + "dependent": { + "instance": "default", + "region": "us-central-1", + "revision": 1 + }, "versions": { "targetPlatform": "6.1.0", "targetApplication": { @@ -376,6 +391,11 @@ "start": 14503000, "end": 14503000, "status": "installationFailed", + "dependent": { + "instance": "default", + "region": "us-east-3", + "revision": 3 + }, "versions": { "targetPlatform": "6.1.0", "targetApplication": { @@ -457,6 +477,11 @@ "start": 14403000, "end": 14403000, "status": "installationFailed", + "dependent": { + "instance": "default", + "region": "us-east-3", + "revision": 3 + }, "versions": { "targetPlatform": "6.1.0", "targetApplication": { @@ -538,6 +563,11 @@ "start": 14403000, "end": 14403000, "status": "success", + "dependent": { + "instance": "default", + "region": "us-central-1", + "revision": 3 + }, "versions": { "targetPlatform": "6.1.0", "targetApplication": { @@ -619,6 +649,11 @@ "start": 1000, "end": 1000, "status": "success", + "dependent": { + "instance": "default", + "region": "us-central-1", + "revision": 2 + }, "versions": { "targetPlatform": "6.1.0", "targetApplication": { @@ -700,6 +735,11 @@ "start": 0, "end": 0, "status": "success", + "dependent": { + "instance": "default", + "region": "us-central-1", + "revision": 1 + }, "versions": { "targetPlatform": "6.1.0", "targetApplication": { diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-overview.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-overview.json index 1d115049b35..aa1ceaae2e8 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-overview.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-overview.json @@ -79,6 +79,11 @@ "url": "http://localhost:8080/application/v4/tenant/tenant1/application/application1/instance/instance1/job/system-test/run/2", "start": 1600000000000, "status": "running", + "dependent": { + "instance": "instance1", + "region": "us-central-1", + "revision": 4 + }, "versions": { "targetPlatform": "6.1.0", "targetApplication": { @@ -137,6 +142,11 @@ "start": 1600000000000, "end": 1600000000000, "status": "success", + "dependent": { + "instance": "instance1", + "region": "us-central-1", + "revision": 1 + }, "versions": { "targetPlatform": "6.1.0", "targetApplication": { @@ -209,6 +219,11 @@ "url": "http://localhost:8080/application/v4/tenant/tenant1/application/application1/instance/instance1/job/staging-test/run/2", "start": 1600000000000, "status": "running", + "dependent": { + "instance": "instance1", + "region": "us-central-1", + "revision": 4 + }, "versions": { "targetPlatform": "6.1.0", "targetApplication": { @@ -283,6 +298,11 @@ "start": 1600000000000, "end": 1600000000000, "status": "success", + "dependent": { + "instance": "instance1", + "region": "us-central-1", + "revision": 1 + }, "versions": { "targetPlatform": "6.1.0", "targetApplication": { diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview-enclave.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview-enclave.json index 9d82ed97849..733326fc8d1 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview-enclave.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview-enclave.json @@ -5,11 +5,11 @@ "steps": [ { "type": "instance", - "dependencies": [], + "dependencies": [ ], "declared": true, "instance": "default", "readyAt": 0, - "deploying": {}, + "deploying": { }, "latestVersions": { "platform": { "platform": "6.1.0", @@ -21,7 +21,7 @@ "upgrade": false } ], - "blockers": [] + "blockers": [ ] }, "application": { "application": { @@ -42,21 +42,21 @@ } } ], - "blockers": [] + "blockers": [ ] } }, "delayCause": null }, { "type": "test", - "dependencies": [], + "dependencies": [ ], "declared": true, "instance": "default", "readyAt": 0, "jobName": "staging-test", "url": "https://some.url:43/instance/default/job/staging-test", "environment": "staging", - "toRun": [], + "toRun": [ ], "enclave": { "cloudAccount": "aws:123456789012" }, @@ -67,6 +67,11 @@ "start": 1600000000000, "end": 1600000000000, "status": "success", + "dependent": { + "instance": "default", + "region": "aws-us-east-1c", + "revision": 1 + }, "versions": { "targetPlatform": "6.1.0", "targetApplication": { @@ -140,14 +145,14 @@ }, { "type": "test", - "dependencies": [], + "dependencies": [ ], "declared": true, "instance": "default", "readyAt": 0, "jobName": "system-test", "url": "https://some.url:43/instance/default/job/system-test", "environment": "test", - "toRun": [], + "toRun": [ ], "enclave": { "cloudAccount": "aws:123456789012" }, @@ -158,6 +163,11 @@ "start": 1600000000000, "end": 1600000000000, "status": "success", + "dependent": { + "instance": "default", + "region": "aws-us-east-1c", + "revision": 1 + }, "versions": { "targetPlatform": "6.1.0", "targetApplication": { @@ -215,7 +225,11 @@ }, { "type": "deployment", - "dependencies": [0, 1, 2], + "dependencies": [ + 0, + 1, + 2 + ], "declared": true, "instance": "default", "readyAt": 1600000000000, @@ -230,7 +244,7 @@ "sourceUrl": "repository1/tree/commit1", "commit": "commit1" }, - "toRun": [], + "toRun": [ ], "enclave": { "cloudAccount": "aws:123456789012" }, diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/staging-runs.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/staging-runs.json index 6c966f0de4d..5c6b95c4651 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/staging-runs.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/staging-runs.json @@ -6,6 +6,11 @@ "start": 14503000, "end": 14503000, "status": "installationFailed", + "dependent": { + "instance": "default", + "region": "us-east-3", + "revision": 3 + }, "versions": { "targetPlatform": "6.1.0", "targetApplication": { @@ -87,6 +92,11 @@ "start": 14403000, "end": 14403000, "status": "installationFailed", + "dependent": { + "instance": "default", + "region": "us-east-3", + "revision": 3 + }, "versions": { "targetPlatform": "6.1.0", "targetApplication": { @@ -168,6 +178,11 @@ "start": 14403000, "end": 14403000, "status": "success", + "dependent": { + "instance": "default", + "region": "us-central-1", + "revision": 3 + }, "versions": { "targetPlatform": "6.1.0", "targetApplication": { @@ -249,6 +264,11 @@ "start": 1000, "end": 1000, "status": "success", + "dependent": { + "instance": "default", + "region": "us-central-1", + "revision": 2 + }, "versions": { "targetPlatform": "6.1.0", "targetApplication": { @@ -330,6 +350,11 @@ "start": 0, "end": 0, "status": "success", + "dependent": { + "instance": "default", + "region": "us-central-1", + "revision": 1 + }, "versions": { "targetPlatform": "6.1.0", "targetApplication": { diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/staging-test-log.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/staging-test-log.json index ae44c851dc0..9a550170ae2 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/staging-test-log.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/staging-test-log.json @@ -1,6 +1,11 @@ { "active": false, "status": "installationFailed", + "dependent": { + "instance": "default", + "region": "us-east-3", + "revision": 3 + }, "log": { "deployTester": [ { 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 c79dcc99ecf..ffbbe3cc7b5 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 @@ -1,6 +1,11 @@ { "active": false, "status": "success", + "dependent": { + "instance": "instance1", + "region": "us-central-1", + "revision": 1 + }, "log": { "deployTester": [ { diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/system-test-job.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/system-test-job.json index 1ac4658ce10..49f0155340d 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/system-test-job.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/system-test-job.json @@ -5,6 +5,11 @@ "url": "http://localhost:8080/application/v4/tenant/tenant1/application/application1/instance/instance1/job/system-test/run/2", "start": 1600000000000, "status": "running", + "dependent": { + "instance": "instance1", + "region": "us-central-1", + "revision": 4 + }, "versions": { "targetPlatform": "6.1.0", "targetApplication": { @@ -63,6 +68,11 @@ "start": 1600000000000, "end": 1600000000000, "status": "success", + "dependent": { + "instance": "instance1", + "region": "us-central-1", + "revision": 1 + }, "versions": { "targetPlatform": "6.1.0", "targetApplication": { diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/system-test-log.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/system-test-log.json index 830512f2fcd..f284c1fecf2 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/system-test-log.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/system-test-log.json @@ -1,6 +1,11 @@ { "active": false, "status": "success", + "dependent": { + "instance": "default", + "region": "us-central-1", + "revision": 1 + }, "log": { "deployTester": [ { |