summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2020-01-09 13:32:30 +0100
committerJon Marius Venstad <venstad@gmail.com>2020-01-09 13:32:30 +0100
commit7dadf68de87b6cbabffd248f306df521e90c125b (patch)
treec84ac2ec12dc0c907d32d2a81f1048dda5b38ae0
parent46d808803c2bf8bb974cdf3d38ef6ceab4fc95f7 (diff)
Accept, store and display optional sourceUrl and commit
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationVersion.java51
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java9
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java8
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializer.java22
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java12
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java25
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentContext.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunnerTest.java10
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java14
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializerTest.java21
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/application2-with-patches.json20
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/application2.json20
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-overview-2.json80
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-overview.json51
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/instance-with-routing-policy.json38
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/instance-without-change-multiple-deployments.json50
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/instance.json46
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/instance1-recursive.json46
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs.json40
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview-user-instance.json2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview.json168
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/staging-runs.json220
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/system-test-job.json8
23 files changed, 633 insertions, 330 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationVersion.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationVersion.java
index fb9745d90cb..7f61632ea4e 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationVersion.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationVersion.java
@@ -21,7 +21,8 @@ public class ApplicationVersion implements Comparable<ApplicationVersion> {
* environment)
*/
public static final ApplicationVersion unknown = new ApplicationVersion(Optional.empty(), OptionalLong.empty(),
- Optional.empty(), Optional.empty(), Optional.empty());
+ Optional.empty(), Optional.empty(), Optional.empty(),
+ Optional.empty(), Optional.empty());
// This never changes and is only used to create a valid semantic version number, as required by application bundles
private static final String majorVersion = "1.0";
@@ -31,9 +32,13 @@ public class ApplicationVersion implements Comparable<ApplicationVersion> {
private final OptionalLong buildNumber;
private final Optional<Version> compileVersion;
private final Optional<Instant> buildTime;
+ private final Optional<String> sourceUrl;
+ private final Optional<String> commit;
- private ApplicationVersion(Optional<SourceRevision> source, OptionalLong buildNumber, Optional<String> authorEmail,
- Optional<Version> compileVersion, Optional<Instant> buildTime) {
+ /** Public for serialisation only. */
+ public ApplicationVersion(Optional<SourceRevision> source, OptionalLong buildNumber, Optional<String> authorEmail,
+ Optional<Version> compileVersion, Optional<Instant> buildTime, Optional<String> sourceUrl,
+ Optional<String> commit) {
Objects.requireNonNull(source, "source cannot be null");
Objects.requireNonNull(buildNumber, "buildNumber cannot be null");
Objects.requireNonNull(authorEmail, "author cannot be null");
@@ -57,25 +62,34 @@ public class ApplicationVersion implements Comparable<ApplicationVersion> {
this.authorEmail = authorEmail;
this.compileVersion = compileVersion;
this.buildTime = buildTime;
+ this.sourceUrl = Objects.requireNonNull(sourceUrl, "sourceUrl cannot be null");
+ this.commit = Objects.requireNonNull(commit, "commit cannot be null");
}
/** Create an application package version from a completed build, without an author email */
public static ApplicationVersion from(SourceRevision source, long buildNumber) {
return new ApplicationVersion(Optional.of(source), OptionalLong.of(buildNumber), Optional.empty(),
- Optional.empty(), Optional.empty());
+ Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty());
}
/** Creates an version from a completed build and an author email. */
public static ApplicationVersion from(SourceRevision source, long buildNumber, String authorEmail) {
- return new ApplicationVersion(Optional.of(source), OptionalLong.of(buildNumber),
- Optional.of(authorEmail), Optional.empty(), Optional.empty());
+ return new ApplicationVersion(Optional.of(source), OptionalLong.of(buildNumber), Optional.of(authorEmail),
+ Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty());
}
/** Creates an version from a completed build, an author email, and build meta data. */
public static ApplicationVersion from(SourceRevision source, long buildNumber, String authorEmail,
Version compileVersion, Instant buildTime) {
return new ApplicationVersion(Optional.of(source), OptionalLong.of(buildNumber), Optional.of(authorEmail),
- Optional.of(compileVersion), Optional.of(buildTime));
+ Optional.of(compileVersion), Optional.of(buildTime), Optional.empty(), Optional.empty());
+ }
+
+ /** Creates an version from a completed build, an author email, and build meta data. */
+ public static ApplicationVersion from(SourceRevision source, long buildNumber, String authorEmail, Version compileVersion,
+ Instant buildTime, Optional<String> sourceUrl, Optional<String> commit) {
+ return new ApplicationVersion(Optional.of(source), OptionalLong.of(buildNumber), Optional.of(authorEmail),
+ Optional.of(compileVersion), Optional.of(buildTime), sourceUrl, commit);
}
/** Returns an unique identifier for this version or "unknown" if version is not known */
@@ -83,7 +97,12 @@ public class ApplicationVersion implements Comparable<ApplicationVersion> {
if (isUnknown()) {
return "unknown";
}
- return String.format("%s.%d-%s", majorVersion, buildNumber.getAsLong(), abbreviateCommit(source.get().commit()));
+ return String.format("%s.%d-%s",
+ majorVersion,
+ buildNumber.getAsLong(),
+ source.map(SourceRevision::commit).map(commit -> abbreviateCommit(commit))
+ .or(this::commit)
+ .orElse("unknown"));
}
/**
@@ -104,6 +123,21 @@ public class ApplicationVersion implements Comparable<ApplicationVersion> {
/** Returns the time this package was built, if known. */
public Optional<Instant> buildTime() { return buildTime; }
+ /** Returns the source URL for this application version. */
+ public Optional<String> sourceUrl() {
+ return sourceUrl.or(() -> source.map(source -> {
+ String repository = source.repository();
+ if (repository.startsWith("git@"))
+ repository = "https://" + repository.substring(4).replace(':', '/');
+ if (repository.endsWith(".git"))
+ repository = repository.substring(0, repository.length() - 4);
+ return repository + "/tree/" + source.commit();
+ }));
+ }
+
+ /** Returns the commit name of this application version. */
+ public Optional<String> commit() { return commit.or(() -> source.map(SourceRevision::commit)); }
+
/** Returns whether this is unknown */
public boolean isUnknown() {
return this.equals(unknown);
@@ -144,4 +178,5 @@ public class ApplicationVersion implements Comparable<ApplicationVersion> {
return Long.compare(buildNumber().getAsLong(), o.buildNumber().getAsLong());
}
+
}
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 f9ad2ebf553..472b4317e80 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
@@ -359,8 +359,9 @@ public class JobController {
/**
* Accepts and stores a new application package and test jar pair under a generated application version key.
*/
- public ApplicationVersion submit(TenantAndApplicationId id, SourceRevision revision, String authorEmail, long projectId,
- ApplicationPackage applicationPackage, byte[] testPackageBytes) {
+ public ApplicationVersion submit(TenantAndApplicationId id, SourceRevision revision, String authorEmail,
+ Optional<String> sourceUrl, Optional<String> commit,
+ long projectId, ApplicationPackage applicationPackage, byte[] testPackageBytes) {
AtomicReference<ApplicationVersion> version = new AtomicReference<>();
controller.applications().lockApplicationOrThrow(id, application -> {
long run = 1 + application.get().latestVersion()
@@ -369,7 +370,9 @@ public class JobController {
if (applicationPackage.compileVersion().isPresent() && applicationPackage.buildTime().isPresent())
version.set(ApplicationVersion.from(revision, run, authorEmail,
applicationPackage.compileVersion().get(),
- applicationPackage.buildTime().get()));
+ applicationPackage.buildTime().get(),
+ sourceUrl,
+ commit));
else
version.set(ApplicationVersion.from(revision, run, authorEmail));
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java
index acbae53ad2c..b730b63d426 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java
@@ -115,6 +115,7 @@ public class ApplicationSerializer {
private static final String authorEmailField = "authorEmailField";
private static final String compileVersionField = "compileVersion";
private static final String buildTimeField = "buildTime";
+ private static final String sourceUrlField = "sourceUrl";
private static final String lastQueriedField = "lastQueried";
private static final String lastWrittenField = "lastWritten";
private static final String lastQueriesPerSecondField = "lastQueriesPerSecond";
@@ -263,6 +264,8 @@ public class ApplicationSerializer {
applicationVersion.authorEmail().ifPresent(email -> object.setString(authorEmailField, email));
applicationVersion.compileVersion().ifPresent(version -> object.setString(compileVersionField, version.toString()));
applicationVersion.buildTime().ifPresent(time -> object.setLong(buildTimeField, time.toEpochMilli()));
+ applicationVersion.sourceUrl().ifPresent(url -> object.setString(sourceUrlField, url));
+ applicationVersion.commit().ifPresent(commit -> object.setString(commitField, commit));
}
}
@@ -478,6 +481,8 @@ public class ApplicationSerializer {
Optional<String> authorEmail = Serializers.optionalString(object.field(authorEmailField));
Optional<Version> compileVersion = Serializers.optionalString(object.field(compileVersionField)).map(Version::fromString);
Optional<Instant> buildTime = Serializers.optionalInstant(object.field(buildTimeField));
+ Optional<String> sourceUrl = Serializers.optionalString(object.field(sourceUrlField));
+ Optional<String> commit = Serializers.optionalString(object.field(commitField));
if (authorEmail.isEmpty())
return ApplicationVersion.from(sourceRevision.get(), applicationBuildNumber.getAsLong());
@@ -485,8 +490,7 @@ public class ApplicationSerializer {
if (compileVersion.isEmpty() || buildTime.isEmpty())
return ApplicationVersion.from(sourceRevision.get(), applicationBuildNumber.getAsLong(), authorEmail.get());
- return ApplicationVersion.from(sourceRevision.get(), applicationBuildNumber.getAsLong(), authorEmail.get(),
- compileVersion.get(), buildTime.get());
+ return new ApplicationVersion(sourceRevision, applicationBuildNumber, authorEmail, compileVersion, buildTime, sourceUrl, commit);
}
private Optional<SourceRevision> sourceRevisionFromSlime(Inspector object) {
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializer.java
index b777d6f52ed..8f2b274401c 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializer.java
@@ -25,6 +25,7 @@ import java.time.temporal.ChronoUnit;
import java.util.EnumMap;
import java.util.NavigableMap;
import java.util.Optional;
+import java.util.OptionalLong;
import java.util.TreeMap;
import static com.yahoo.vespa.hosted.controller.deployment.RunStatus.aborted;
@@ -84,6 +85,7 @@ class RunSerializer {
private static final String authorEmailField = "authorEmail";
private static final String compileVersionField = "compileVersion";
private static final String buildTimeField = "buildTime";
+ private static final String sourceUrlField = "sourceUrl";
private static final String buildField = "build";
private static final String sourceField = "source";
private static final String lastTestRecordField = "lastTestRecord";
@@ -158,16 +160,14 @@ class RunSerializer {
versionObject.field(branchField).asString(),
versionObject.field(commitField).asString());
long buildNumber = versionObject.field(buildField).asLong();
-
- if ( ! versionObject.field(authorEmailField).valid())
- return ApplicationVersion.from(revision, buildNumber);
-
- if ( ! versionObject.field(compileVersionField).valid() || ! versionObject.field(buildTimeField).valid())
- return ApplicationVersion.from(revision, buildNumber, versionObject.field(authorEmailField).asString());
-
- return ApplicationVersion.from(revision, buildNumber, versionObject.field(authorEmailField).asString(),
- Version.fromString(versionObject.field(compileVersionField).asString()),
- Instant.ofEpochMilli(versionObject.field(buildTimeField).asLong()));
+ Optional<String> authorEmail = Serializers.optionalString(versionObject.field(authorEmailField));
+ Optional<Version> compileVersion = Serializers.optionalString(versionObject.field(compileVersionField)).map(Version::fromString);
+ Optional<Instant> buildTime = Serializers.optionalInstant(versionObject.field(buildTimeField));
+ Optional<String> sourceUrl = Serializers.optionalString(versionObject.field(sourceUrlField));
+ Optional<String> commit = Serializers.optionalString(versionObject.field(commitField));
+
+ return new ApplicationVersion(Optional.of(revision), OptionalLong.of(buildNumber), authorEmail,
+ compileVersion, buildTime, sourceUrl, commit);
}
Slime toSlime(Iterable<Run> runs) {
@@ -224,6 +224,8 @@ class RunSerializer {
applicationVersion.authorEmail().ifPresent(email -> versionsObject.setString(authorEmailField, email));
applicationVersion.compileVersion().ifPresent(version -> versionsObject.setString(compileVersionField, version.toString()));
applicationVersion.buildTime().ifPresent(time -> versionsObject.setLong(buildTimeField, time.toEpochMilli()));
+ applicationVersion.sourceUrl().ifPresent(url -> versionsObject.setString(sourceUrlField, url));
+ applicationVersion.commit().ifPresent(commit -> versionsObject.setString(commitField, commit));
}
static String valueOf(Step step) {
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 0445b6c6230..5c5955cbe4f 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
@@ -854,7 +854,11 @@ public class ApplicationApiHandler extends LoggingRequestHandler {
"/instance/" + instance.id().instance().value() + "/job/",
request.getUri()).toString());
- application.latestVersion().ifPresent(version -> sourceRevisionToSlime(version.source(), object.setObject("source")));
+ application.latestVersion().ifPresent(version -> {
+ sourceRevisionToSlime(version.source(), object.setObject("source"));
+ version.sourceUrl().ifPresent(url -> object.setString("sourceUrl", url));
+ version.commit().ifPresent(commit -> object.setString("commit", commit));
+ });
application.projectId().ifPresent(id -> object.setLong("projectId", id));
@@ -1077,6 +1081,8 @@ public class ApplicationApiHandler extends LoggingRequestHandler {
object.setLong("buildNumber", applicationVersion.buildNumber().getAsLong());
object.setString("hash", applicationVersion.id());
sourceRevisionToSlime(applicationVersion.source(), object.setObject("source"));
+ applicationVersion.sourceUrl().ifPresent(url -> object.setString("sourceUrl", url));
+ applicationVersion.commit().ifPresent(commit -> object.setString("commit", commit));
}
}
@@ -1948,6 +1954,8 @@ public class ApplicationApiHandler extends LoggingRequestHandler {
SourceRevision sourceRevision = toSourceRevision(submitOptions);
String authorEmail = submitOptions.field("authorEmail").asString();
long projectId = Math.max(1, submitOptions.field("projectId").asLong());
+ Optional<String> commit = submitOptions.field("commit").valid() ? Optional.of(submitOptions.field("commit").asString()) : Optional.empty();
+ Optional<String> sourceUrl = submitOptions.field("sourceUrl").valid() ? Optional.of(submitOptions.field("sourceUrl").asString()) : Optional.empty();
ApplicationPackage applicationPackage = new ApplicationPackage(dataParts.get(EnvironmentResource.APPLICATION_ZIP), true);
@@ -1960,6 +1968,8 @@ public class ApplicationApiHandler extends LoggingRequestHandler {
application,
sourceRevision,
authorEmail,
+ sourceUrl,
+ commit,
projectId,
applicationPackage,
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 33038e3ea69..8c82308e894 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
@@ -416,6 +416,8 @@ class JobControllerApiHandlerHelper {
sourceObject.setString("gitRepository", version.source().get().repository());
sourceObject.setString("gitBranch", version.source().get().branch());
sourceObject.setString("gitCommit", version.source().get().commit());
+ version.sourceUrl().ifPresent(url -> versionObject.setString("sourceUrl", url));
+ version.commit().ifPresent(commit -> versionObject.setString("commit", commit));
}
/**
@@ -472,11 +474,14 @@ class JobControllerApiHandlerHelper {
* @return Response with the new application version
*/
static HttpResponse submitResponse(JobController jobController, String tenant, String application,
- SourceRevision sourceRevision, String authorEmail, long projectId,
+ SourceRevision sourceRevision, String authorEmail, Optional<String> sourceUrl,
+ Optional<String> commit, long projectId,
ApplicationPackage applicationPackage, byte[] testPackage) {
ApplicationVersion version = jobController.submit(TenantAndApplicationId.from(tenant, application),
sourceRevision,
authorEmail,
+ sourceUrl,
+ commit,
projectId,
applicationPackage,
testPackage);
@@ -601,8 +606,9 @@ class JobControllerApiHandlerHelper {
private static void toSlime(Cursor versionObject, ApplicationVersion version) {
version.buildNumber().ifPresent(id -> versionObject.setLong("id", id));
version.source().ifPresent(source -> versionObject.setString("commit", source.commit()));
- version.source().flatMap(source -> toUrl(source)).ifPresent(source -> versionObject.setString("source", source.toString()));
version.compileVersion().ifPresent(platform -> versionObject.setString("compileVersion", platform.toFullString()));
+ version.sourceUrl().ifPresent(url -> versionObject.setString("sourceUrl", url));
+ version.commit().ifPresent(commit -> versionObject.setString("commit", commit));
}
private static void toSlime(Cursor versionsObject, Versions versions) {
@@ -612,20 +618,5 @@ class JobControllerApiHandlerHelper {
versions.sourceApplication().ifPresent(application -> toSlime(versionsObject.setObject("sourceApplication"), application));
}
- // TODO jonmv: Remove this when source url is stored instead of SourceRevision.
- private static Optional<URI> toUrl(SourceRevision source) {
- try {
- String repository = source.repository();
- if (repository.startsWith("git@"))
- repository = "https://" + repository.substring(4);
- if (repository.endsWith(".git"))
- repository = repository.substring(0, repository.length() - 4);
- return Optional.of(URI.create(repository + "/tree/" + source.commit()));
- }
- catch (RuntimeException e) {
- return Optional.empty();
- }
- }
-
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentContext.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentContext.java
index 120b9bad468..035b6127b41 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentContext.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentContext.java
@@ -211,7 +211,7 @@ public class DeploymentContext {
.requireApplication(applicationId)
.projectId()
.orElse(1000); // These are really set through submission, so just pick one if it hasn't been set.
- lastSubmission = jobs.submit(applicationId, sourceRevision, "a@b", projectId, applicationPackage, new byte[0]);
+ lastSubmission = jobs.submit(applicationId, sourceRevision, "a@b", Optional.empty(), Optional.empty(), projectId, applicationPackage, new byte[0]);
return this;
}
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 51da78c835e..bdab81b3948 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
@@ -87,7 +87,7 @@ public class JobRunnerTest {
TenantAndApplicationId appId = tester.createApplication("tenant", "real", "default").id();
ApplicationId id = appId.defaultInstance();
- jobs.submit(appId, versions.targetApplication().source().get(), "a@b", 2, applicationPackage, new byte[0]);
+ jobs.submit(appId, versions.targetApplication().source().get(), "a@b", Optional.empty(), Optional.empty(), 2, applicationPackage, new byte[0]);
jobs.start(id, systemTest, versions);
try {
@@ -119,7 +119,7 @@ public class JobRunnerTest {
TenantAndApplicationId appId = tester.createApplication("tenant", "real", "default").id();
ApplicationId id = appId.defaultInstance();
- jobs.submit(appId, versions.targetApplication().source().get(), "a@b", 2, applicationPackage, new byte[0]);
+ jobs.submit(appId, versions.targetApplication().source().get(), "a@b", Optional.empty(), Optional.empty(), 2, applicationPackage, new byte[0]);
Supplier<Run> run = () -> jobs.last(id, systemTest).get();
jobs.start(id, systemTest, versions);
@@ -227,7 +227,7 @@ public class JobRunnerTest {
TenantAndApplicationId appId = tester.createApplication("tenant", "real", "default").id();
ApplicationId id = appId.defaultInstance();
- jobs.submit(appId, versions.targetApplication().source().get(), "a@b", 2, applicationPackage, new byte[0]);
+ jobs.submit(appId, versions.targetApplication().source().get(), "a@b", Optional.empty(), Optional.empty(), 2, applicationPackage, new byte[0]);
RunId runId = new RunId(id, systemTest, 1);
jobs.start(id, systemTest, versions);
@@ -265,7 +265,7 @@ public class JobRunnerTest {
TenantAndApplicationId appId = tester.createApplication("tenant", "real", "default").id();
ApplicationId instanceId = appId.defaultInstance();
JobId jobId = new JobId(instanceId, systemTest);
- jobs.submit(appId, versions.targetApplication().source().get(), "a@b", 2, applicationPackage, new byte[0]);
+ jobs.submit(appId, versions.targetApplication().source().get(), "a@b", Optional.empty(), Optional.empty(), 2, applicationPackage, new byte[0]);
assertFalse(jobs.lastSuccess(jobId).isPresent());
for (int i = 0; i < jobs.historyLength(); i++) {
@@ -343,7 +343,7 @@ public class JobRunnerTest {
TenantAndApplicationId appId = tester.createApplication("tenant", "real", "default").id();
ApplicationId id = appId.defaultInstance();
- jobs.submit(appId, versions.targetApplication().source().get(), "a@b", 2, applicationPackage, new byte[0]);
+ jobs.submit(appId, versions.targetApplication().source().get(), "a@b", Optional.empty(), Optional.empty(), 2, applicationPackage, new byte[0]);
jobs.start(id, systemTest, versions);
tester.clock().advance(JobRunner.jobTimeout.plus(Duration.ofSeconds(1)));
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java
index e485e60815b..c4cb01f8164 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java
@@ -84,7 +84,15 @@ public class ApplicationSerializerTest {
OptionalLong projectId = OptionalLong.of(123L);
List<Deployment> deployments = new ArrayList<>();
- ApplicationVersion applicationVersion1 = ApplicationVersion.from(new SourceRevision("repo1", "branch1", "commit1"), 31);
+ ApplicationVersion applicationVersion1 = new ApplicationVersion(Optional.of(new SourceRevision("git@github:org/repo.git", "branch1", "commit1")),
+ OptionalLong.of(31),
+ Optional.of("william@shakespeare"),
+ Optional.of(Version.fromString("1.2.3")),
+ Optional.of(Instant.ofEpochMilli(666)),
+ Optional.empty(),
+ Optional.of("best commit"));
+ assertEquals("https://github/org/repo/tree/commit1", applicationVersion1.sourceUrl().get());
+
ApplicationVersion applicationVersion2 = ApplicationVersion
.from(new SourceRevision("repo1", "branch1", "commit1"), 32, "a@b",
Version.fromString("6.3.1"), Instant.ofEpochMilli(496));
@@ -138,6 +146,10 @@ public class ApplicationSerializerTest {
assertEquals(original.id(), serialized.id());
assertEquals(original.createdAt(), serialized.createdAt());
assertEquals(original.latestVersion(), serialized.latestVersion());
+ assertEquals(original.latestVersion().get().authorEmail(), serialized.latestVersion().get().authorEmail());
+ assertEquals(original.latestVersion().get().buildTime(), serialized.latestVersion().get().buildTime());
+ assertEquals(original.latestVersion().get().sourceUrl(), serialized.latestVersion().get().sourceUrl());
+ assertEquals(original.latestVersion().get().commit(), serialized.latestVersion().get().commit());
assertEquals(original.deploymentSpec().xmlForm(), serialized.deploymentSpec().xmlForm());
assertEquals(original.validationOverrides().xmlForm(), serialized.validationOverrides().xmlForm());
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializerTest.java
index 1cd361b4d74..c1f8e2f0ffb 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializerTest.java
@@ -77,14 +77,19 @@ public class RunSerializerTest {
assertEquals(running, run.status());
assertEquals(3, run.lastTestLogEntry());
assertEquals(new Version(1, 2, 3), run.versions().targetPlatform());
- assertEquals(ApplicationVersion.from(new SourceRevision("git@github.com:user/repo.git",
- "master",
- "f00bad"),
- 123,
- "a@b",
- Version.fromString("6.3.1"),
- Instant.ofEpochMilli(100)),
- run.versions().targetApplication());
+ ApplicationVersion applicationVersion = ApplicationVersion.from(new SourceRevision("git@github.com:user/repo.git",
+ "master",
+ "f00bad"),
+ 123,
+ "a@b",
+ Version.fromString("6.3.1"),
+ Instant.ofEpochMilli(100));
+ assertEquals(applicationVersion, run.versions().targetApplication());
+ assertEquals(applicationVersion.authorEmail(), run.versions().targetApplication().authorEmail());
+ assertEquals(applicationVersion.buildTime(), run.versions().targetApplication().buildTime());
+ assertEquals(applicationVersion.compileVersion(), run.versions().targetApplication().compileVersion());
+ assertEquals("f00bad", run.versions().targetApplication().commit().get());
+ assertEquals("https://github.com/user/repo/tree/f00bad", run.versions().targetApplication().sourceUrl().get());
assertEquals(new Version(1, 2, 2), run.versions().sourcePlatform().get());
assertEquals(ApplicationVersion.from(new SourceRevision("git@github.com:user/repo.git",
"master",
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/application2-with-patches.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/application2-with-patches.json
index 16a5529a2ad..7b84780d64e 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/application2-with-patches.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/application2-with-patches.json
@@ -9,7 +9,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"projectId": 1000,
"compileVersion": "6.1.0",
@@ -33,7 +35,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
}
},
"deploymentJobs": [
@@ -50,7 +54,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -69,7 +75,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -88,7 +96,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/application2.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/application2.json
index 6382824175d..3242fd343de 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/application2.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/application2.json
@@ -9,7 +9,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"projectId": 1000,
"compileVersion": "6.1.0",
@@ -32,7 +34,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
}
},
"deploymentJobs": [
@@ -49,7 +53,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -68,7 +74,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -87,7 +95,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
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 8f68bde1a21..62d83ffe8e3 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
@@ -21,7 +21,7 @@
"targetApplication": {
"commit": "commit1",
"id": 3,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"sourcePlatform": "6.1.0",
@@ -29,7 +29,7 @@
"sourceApplication": {
"commit": "commit1",
"id": 2,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
}
},
@@ -86,7 +86,7 @@
"targetApplication": {
"commit": "commit1",
"id": 2,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"sourcePlatform": "6.1.0",
@@ -94,7 +94,7 @@
"sourceApplication": {
"commit": "commit1",
"id": 1,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
}
},
@@ -151,7 +151,7 @@
"targetApplication": {
"commit": "commit1",
"id": 1,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"targetPlatform": "6.1.0"
@@ -221,7 +221,7 @@
"targetApplication": {
"commit": "commit1",
"id": 3,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"sourcePlatform": "6.1.0",
@@ -229,7 +229,7 @@
"sourceApplication": {
"commit": "commit1",
"id": 1,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
}
},
@@ -244,7 +244,7 @@
"targetApplication": {
"commit": "commit1",
"id": 3,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"sourcePlatform": "6.1.0",
@@ -252,7 +252,7 @@
"sourceApplication": {
"commit": "commit1",
"id": 1,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
}
},
@@ -317,7 +317,7 @@
"targetApplication": {
"commit": "commit1",
"id": 3,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"sourcePlatform": "6.1.0",
@@ -325,7 +325,7 @@
"sourceApplication": {
"commit": "commit1",
"id": 1,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
}
},
@@ -390,7 +390,7 @@
"targetApplication": {
"commit": "commit1",
"id": 3,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"sourcePlatform": "6.1.0",
@@ -398,7 +398,7 @@
"sourceApplication": {
"commit": "commit1",
"id": 2,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
}
},
@@ -463,7 +463,7 @@
"targetApplication": {
"commit": "commit1",
"id": 2,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"sourcePlatform": "6.1.0",
@@ -471,7 +471,7 @@
"sourceApplication": {
"commit": "commit1",
"id": 1,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
}
},
@@ -536,7 +536,7 @@
"targetApplication": {
"commit": "commit1",
"id": 1,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"targetPlatform": "6.1.0"
@@ -611,7 +611,7 @@
"currentApplication": {
"commit": "commit1",
"id": 3,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"type": "deployment",
@@ -622,7 +622,7 @@
"targetApplication": {
"commit": "commit1",
"id": 3,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"sourcePlatform": "6.1.0",
@@ -630,7 +630,7 @@
"sourceApplication": {
"commit": "commit1",
"id": 2,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
}
},
@@ -678,7 +678,7 @@
"targetApplication": {
"commit": "commit1",
"id": 2,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"sourcePlatform": "6.1.0",
@@ -686,7 +686,7 @@
"sourceApplication": {
"commit": "commit1",
"id": 1,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
}
},
@@ -735,7 +735,7 @@
"targetApplication": {
"commit": "commit1",
"id": 1,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"targetPlatform": "6.1.0"
@@ -798,7 +798,7 @@
"targetApplication": {
"commit": "commit1",
"id": 3,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"sourcePlatform": "6.1.0",
@@ -806,7 +806,7 @@
"sourceApplication": {
"commit": "commit1",
"id": 3,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
}
}
@@ -820,7 +820,7 @@
"targetApplication": {
"commit": "commit1",
"id": 2,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"sourcePlatform": "6.1.0",
@@ -828,7 +828,7 @@
"sourceApplication": {
"commit": "commit1",
"id": 2,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
}
},
@@ -869,7 +869,7 @@
"targetApplication": {
"commit": "commit1",
"id": 1,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"sourcePlatform": "6.1.0",
@@ -877,7 +877,7 @@
"sourceApplication": {
"commit": "commit1",
"id": 1,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
}
},
@@ -931,7 +931,7 @@
"targetApplication": {
"commit": "commit1",
"id": 3,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"sourcePlatform": "6.1.0",
@@ -939,7 +939,7 @@
"sourceApplication": {
"commit": "commit1",
"id": 2,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
}
}
@@ -948,7 +948,7 @@
"currentApplication": {
"commit": "commit1",
"id": 2,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"type": "deployment",
@@ -959,7 +959,7 @@
"targetApplication": {
"commit": "commit1",
"id": 2,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"sourcePlatform": "6.1.0",
@@ -967,7 +967,7 @@
"sourceApplication": {
"commit": "commit1",
"id": 1,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
}
},
@@ -1016,7 +1016,7 @@
"targetApplication": {
"commit": "commit1",
"id": 1,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"targetPlatform": "6.1.0"
@@ -1079,7 +1079,7 @@
"targetApplication": {
"commit": "commit1",
"id": 3,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"sourcePlatform": "6.1.0",
@@ -1087,7 +1087,7 @@
"sourceApplication": {
"commit": "commit1",
"id": 1,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
}
}
@@ -1096,7 +1096,7 @@
"currentApplication": {
"commit": "commit1",
"id": 1,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"type": "deployment",
@@ -1107,7 +1107,7 @@
"targetApplication": {
"commit": "commit1",
"id": 2,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"sourcePlatform": "6.1.0",
@@ -1115,7 +1115,7 @@
"sourceApplication": {
"commit": "commit1",
"id": 1,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
}
},
@@ -1164,7 +1164,7 @@
"targetApplication": {
"commit": "commit1",
"id": 1,
- "source": "repository1/tree/commit1",
+ "sourceUrl": "repository1/tree/commit1",
"compileVersion": "6.1.0"
},
"targetPlatform": "6.1.0"
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 ba41468be24..baace75bf6c 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
@@ -29,8 +29,8 @@
"targetApplication": {
"id": 4,
"commit": "commit1",
- "source": "repository1/tree/commit1",
- "compileVersion": "6.1.0"
+ "compileVersion": "6.1.0",
+ "sourceUrl": "repository1/tree/commit1"
}
},
"steps": [
@@ -87,8 +87,8 @@
"targetApplication": {
"id": 1,
"commit": "commit1",
- "source": "repository1/tree/commit1",
- "compileVersion": "6.1.0"
+ "compileVersion": "6.1.0",
+ "sourceUrl": "repository1/tree/commit1"
}
},
"steps": [
@@ -157,8 +157,8 @@
"targetApplication": {
"id": 4,
"commit": "commit1",
- "source": "repository1/tree/commit1",
- "compileVersion": "6.1.0"
+ "compileVersion": "6.1.0",
+ "sourceUrl": "repository1/tree/commit1"
}
},
"steps": [
@@ -223,8 +223,8 @@
"targetApplication": {
"id": 1,
"commit": "commit1",
- "source": "repository1/tree/commit1",
- "compileVersion": "6.1.0"
+ "compileVersion": "6.1.0",
+ "sourceUrl": "repository1/tree/commit1"
}
},
"steps": [
@@ -298,8 +298,8 @@
"targetApplication": {
"id": 4,
"commit": "commit1",
- "source": "repository1/tree/commit1",
- "compileVersion": "6.1.0"
+ "compileVersion": "6.1.0",
+ "sourceUrl": "repository1/tree/commit1"
}
}
}
@@ -316,8 +316,8 @@
"targetApplication": {
"id": 1,
"commit": "commit1",
- "source": "repository1/tree/commit1",
- "compileVersion": "6.1.0"
+ "compileVersion": "6.1.0",
+ "sourceUrl": "repository1/tree/commit1"
}
},
"steps": [
@@ -375,8 +375,8 @@
"targetApplication": {
"id": 4,
"commit": "commit1",
- "source": "repository1/tree/commit1",
- "compileVersion": "6.1.0"
+ "compileVersion": "6.1.0",
+ "sourceUrl": "repository1/tree/commit1"
}
}
}
@@ -392,7 +392,7 @@
"targetApplication": {
"id": 1,
"commit": "commit1",
- "source": "repository1/tree/commit1"
+ "sourceUrl": "repository1/tree/commit1"
}
},
"steps": [
@@ -450,8 +450,8 @@
"targetApplication": {
"id": 4,
"commit": "commit1",
- "source": "repository1/tree/commit1",
- "compileVersion": "6.1.0"
+ "compileVersion": "6.1.0",
+ "sourceUrl": "repository1/tree/commit1"
}
}
}
@@ -467,8 +467,8 @@
"targetApplication": {
"id": 1,
"commit": "commit1",
- "source": "repository1/tree/commit1",
- "compileVersion": "6.1.0"
+ "compileVersion": "6.1.0",
+ "sourceUrl": "repository1/tree/commit1"
}
},
"steps": [
@@ -559,8 +559,8 @@
"targetApplication": {
"id": 4,
"commit": "commit1",
- "source": "repository1/tree/commit1",
- "compileVersion": "6.1.0"
+ "compileVersion": "6.1.0",
+ "sourceUrl": "repository1/tree/commit1"
}
}
}
@@ -585,8 +585,8 @@
"targetApplication": {
"id": 4,
"commit": "commit1",
- "source": "repository1/tree/commit1",
- "compileVersion": "6.1.0"
+ "compileVersion": "6.1.0",
+ "sourceUrl": "repository1/tree/commit1"
}
}
}
@@ -611,8 +611,8 @@
"targetApplication": {
"id": 4,
"commit": "commit1",
- "source": "repository1/tree/commit1",
- "compileVersion": "6.1.0"
+ "compileVersion": "6.1.0",
+ "sourceUrl": "repository1/tree/commit1"
}
}
}
@@ -621,4 +621,3 @@
}
]
}
-
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/instance-with-routing-policy.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/instance-with-routing-policy.json
index ff3bf084069..18f5127718f 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/instance-with-routing-policy.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/instance-with-routing-policy.json
@@ -8,6 +8,8 @@
"gitBranch": "master",
"gitCommit": "commit1"
},
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1",
"projectId": 1000,
"deploymentJobs": [
{
@@ -23,7 +25,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -38,7 +42,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -53,7 +59,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -72,7 +80,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -87,7 +97,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -102,7 +114,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -121,7 +135,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -136,7 +152,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -151,7 +169,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/instance-without-change-multiple-deployments.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/instance-without-change-multiple-deployments.json
index 79bb0333aa3..259fe814146 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/instance-without-change-multiple-deployments.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/instance-without-change-multiple-deployments.json
@@ -8,6 +8,8 @@
"gitBranch": "master",
"gitCommit": "commit1"
},
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1",
"projectId": 1000,
"deploymentJobs": [
{
@@ -23,7 +25,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -38,7 +42,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -53,7 +59,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -72,7 +80,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -87,7 +97,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -102,7 +114,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -121,7 +135,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -136,7 +152,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -151,7 +169,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -170,7 +190,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -185,7 +207,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -200,7 +224,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/instance.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/instance.json
index e064c9e60de..d1197be4392 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/instance.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/instance.json
@@ -8,6 +8,8 @@
"gitBranch": "master",
"gitCommit": "commit1"
},
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1",
"projectId": 123,
"deploying": {
"revision": {
@@ -17,7 +19,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
}
},
"deploymentJobs": [
@@ -34,7 +38,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -49,7 +55,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -64,7 +72,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -83,7 +93,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -98,7 +110,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -113,7 +127,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -132,7 +148,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -147,7 +165,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -162,7 +182,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -181,7 +203,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/instance1-recursive.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/instance1-recursive.json
index 8259bd611ff..fb77cfef270 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/instance1-recursive.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/instance1-recursive.json
@@ -8,6 +8,8 @@
"gitBranch": "master",
"gitCommit": "commit1"
},
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1",
"projectId": 123,
"deploying": {
"revision": {
@@ -17,7 +19,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
}
},
"deploymentJobs": [
@@ -34,7 +38,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -49,7 +55,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -64,7 +72,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -83,7 +93,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -98,7 +110,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -113,7 +127,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -132,7 +148,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -147,7 +165,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -162,7 +182,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
@@ -181,7 +203,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"reason": "unknown reason",
"at": "(ignore)"
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 b73c36c804b..32031563d89 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
@@ -13,7 +13,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"at": "(ignore)",
"deploying": "0 of 3 complete"
@@ -27,7 +29,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
}
},
"deployments": [
@@ -49,7 +53,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "unfinished",
@@ -79,7 +85,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "succeeded",
@@ -117,7 +125,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "unfinished",
@@ -149,7 +159,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "succeeded",
@@ -187,7 +199,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"tasks": {
"system-test": "running",
@@ -207,7 +221,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "succeeded",
@@ -243,7 +259,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "unfinished",
@@ -275,7 +293,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "unfinished",
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 6d5a1f3812b..cf47e8671b0 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
@@ -37,6 +37,8 @@
"gitCommit": "commit1",
"gitBranch": "master"
},
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1",
"hash": "1.0.3-commit1"
},
"completed": "0 of 0 complete"
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 6a7ea87d6a8..b6a1bade306 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
@@ -13,7 +13,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"at": 1000,
"deploying": "0 of 3 complete"
@@ -27,7 +29,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
}
},
"deployments": [
@@ -42,7 +46,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"verified": false,
"status": "verifying"
@@ -59,7 +65,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"verified": false,
"status": "pending"
@@ -74,7 +82,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"verified": true,
"status": "pending"
@@ -97,7 +107,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"currentPlatform": "6.1",
"currentApplication": {
@@ -107,7 +119,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "succeeded",
@@ -141,7 +155,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"currentPlatform": "6.1",
"currentApplication": {
@@ -151,7 +167,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "succeeded",
@@ -185,7 +203,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "succeeded",
@@ -221,7 +241,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"currentPlatform": "6.1",
"currentApplication": {
@@ -231,7 +253,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"tasks": {
"cooldown": "failed"
@@ -251,7 +275,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"currentPlatform": "6.1",
"currentApplication": {
@@ -261,7 +287,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "succeeded",
@@ -293,7 +321,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"currentPlatform": "6.1",
"currentApplication": {
@@ -303,7 +333,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "succeeded",
@@ -335,7 +367,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"currentPlatform": "6.1",
"currentApplication": {
@@ -345,7 +379,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "succeeded",
@@ -381,7 +417,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"currentPlatform": "6.1",
"currentApplication": {
@@ -391,7 +429,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "succeeded",
@@ -427,7 +467,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "succeeded",
@@ -467,7 +509,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"currentPlatform": "6.1",
"currentApplication": {
@@ -477,7 +521,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "succeeded",
@@ -508,7 +554,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"currentPlatform": "6.1",
"currentApplication": {
@@ -518,7 +566,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "succeeded",
@@ -550,7 +600,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "succeeded",
@@ -584,7 +636,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"currentPlatform": "6.1",
"currentApplication": {
@@ -594,7 +648,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"tasks": {
"us-central-1": "running",
@@ -615,7 +671,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"currentPlatform": "6.1",
"currentApplication": {
@@ -625,7 +683,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "succeeded",
@@ -653,7 +713,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"currentPlatform": "6.1",
"currentApplication": {
@@ -663,7 +725,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "succeeded",
@@ -693,7 +757,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"currentPlatform": "6.1",
"currentApplication": {
@@ -703,7 +769,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"tasks": {
"us-central-1": "running"
@@ -722,7 +790,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"currentPlatform": "6.1",
"currentApplication": {
@@ -732,7 +802,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "succeeded",
@@ -764,7 +836,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "succeeded",
@@ -798,7 +872,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"currentPlatform": "6.1",
"currentApplication": {
@@ -808,7 +884,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"tasks": {
"staging-test": "failed",
@@ -828,7 +906,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"currentPlatform": "6.1",
"currentApplication": {
@@ -838,7 +918,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "failed",
@@ -866,7 +948,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "succeeded",
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 fbc480d6b03..856dff7f9f8 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
@@ -1,214 +1,232 @@
{
"1": {
- "id": 1,
- "status": "success",
- "start": 0,
- "end": 0,
"wantedPlatform": "6.1",
+ "log": "https://some.url:43/root/run/1",
"wantedApplication": {
- "hash": "1.0.1-commit1",
+ "sourceUrl": "repository1/tree/commit1",
"build": 1,
+ "commit": "commit1",
"source": {
"gitRepository": "repository1",
- "gitBranch": "master",
- "gitCommit": "commit1"
- }
+ "gitCommit": "commit1",
+ "gitBranch": "master"
+ },
+ "hash": "1.0.1-commit1"
},
+ "start": 0,
+ "end": 0,
+ "id": 1,
"steps": {
"deployInitialReal": "succeeded",
"installInitialReal": "succeeded",
- "deployReal": "succeeded",
- "installReal": "succeeded",
+ "startTests": "succeeded",
"deployTester": "succeeded",
+ "report": "succeeded",
"installTester": "succeeded",
- "startTests": "succeeded",
+ "deployReal": "succeeded",
+ "installReal": "succeeded",
+ "deactivateTester": "succeeded",
"endTests": "succeeded",
"copyVespaLogs": "succeeded",
- "deactivateReal": "succeeded",
- "deactivateTester": "succeeded",
- "report": "succeeded"
+ "deactivateReal": "succeeded"
},
"tasks": {
- "deploy": "succeeded",
+ "test": "succeeded",
"install": "succeeded",
- "test": "succeeded"
+ "deploy": "succeeded"
},
- "log": "https://some.url:43/root/run/1"
+ "status": "success"
},
"2": {
- "id": 2,
- "status": "success",
- "start": 1000,
- "end": 1000,
"wantedPlatform": "6.1",
+ "currentPlatform": "6.1",
+ "log": "https://some.url:43/root/run/2",
"wantedApplication": {
- "hash": "1.0.2-commit1",
+ "sourceUrl": "repository1/tree/commit1",
"build": 2,
+ "commit": "commit1",
"source": {
"gitRepository": "repository1",
- "gitBranch": "master",
- "gitCommit": "commit1"
- }
+ "gitCommit": "commit1",
+ "gitBranch": "master"
+ },
+ "hash": "1.0.2-commit1"
},
- "currentPlatform": "6.1",
"currentApplication": {
- "hash": "1.0.1-commit1",
+ "sourceUrl": "repository1/tree/commit1",
"build": 1,
+ "commit": "commit1",
"source": {
"gitRepository": "repository1",
- "gitBranch": "master",
- "gitCommit": "commit1"
- }
+ "gitCommit": "commit1",
+ "gitBranch": "master"
+ },
+ "hash": "1.0.1-commit1"
},
+ "start": 1000,
+ "end": 1000,
+ "id": 2,
"steps": {
"deployInitialReal": "succeeded",
"installInitialReal": "succeeded",
- "deployReal": "succeeded",
- "installReal": "succeeded",
+ "startTests": "succeeded",
"deployTester": "succeeded",
+ "report": "succeeded",
"installTester": "succeeded",
- "startTests": "succeeded",
+ "deployReal": "succeeded",
+ "installReal": "succeeded",
+ "deactivateTester": "succeeded",
"endTests": "succeeded",
"copyVespaLogs": "succeeded",
- "deactivateReal": "succeeded",
- "deactivateTester": "succeeded",
- "report": "succeeded"
+ "deactivateReal": "succeeded"
},
"tasks": {
- "deploy": "succeeded",
+ "test": "succeeded",
"install": "succeeded",
- "test": "succeeded"
+ "deploy": "succeeded"
},
- "log": "https://some.url:43/root/run/2"
+ "status": "success"
},
"3": {
- "id": 3,
- "status": "success",
- "start": 2000,
- "end": 2000,
"wantedPlatform": "6.1",
+ "currentPlatform": "6.1",
+ "log": "https://some.url:43/root/run/3",
"wantedApplication": {
- "hash": "1.0.3-commit1",
+ "sourceUrl": "repository1/tree/commit1",
"build": 3,
+ "commit": "commit1",
"source": {
"gitRepository": "repository1",
- "gitBranch": "master",
- "gitCommit": "commit1"
- }
+ "gitCommit": "commit1",
+ "gitBranch": "master"
+ },
+ "hash": "1.0.3-commit1"
},
- "currentPlatform": "6.1",
"currentApplication": {
- "hash": "1.0.2-commit1",
+ "sourceUrl": "repository1/tree/commit1",
"build": 2,
+ "commit": "commit1",
"source": {
"gitRepository": "repository1",
- "gitBranch": "master",
- "gitCommit": "commit1"
- }
+ "gitCommit": "commit1",
+ "gitBranch": "master"
+ },
+ "hash": "1.0.2-commit1"
},
+ "start": 2000,
+ "end": 2000,
+ "id": 3,
"steps": {
"deployInitialReal": "succeeded",
"installInitialReal": "succeeded",
- "deployReal": "succeeded",
- "installReal": "succeeded",
+ "startTests": "succeeded",
"deployTester": "succeeded",
+ "report": "succeeded",
"installTester": "succeeded",
- "startTests": "succeeded",
+ "deployReal": "succeeded",
+ "installReal": "succeeded",
+ "deactivateTester": "succeeded",
"endTests": "succeeded",
"copyVespaLogs": "succeeded",
- "deactivateReal": "succeeded",
- "deactivateTester": "succeeded",
- "report": "succeeded"
+ "deactivateReal": "succeeded"
},
"tasks": {
- "deploy": "succeeded",
+ "test": "succeeded",
"install": "succeeded",
- "test": "succeeded"
+ "deploy": "succeeded"
},
- "log": "https://some.url:43/root/run/3"
+ "status": "success"
},
"4": {
- "id": 4,
- "status": "installationFailed",
- "start": 2000,
- "end": 2000,
"wantedPlatform": "6.1",
+ "currentPlatform": "6.1",
+ "log": "https://some.url:43/root/run/4",
"wantedApplication": {
- "hash": "1.0.3-commit1",
+ "sourceUrl": "repository1/tree/commit1",
"build": 3,
+ "commit": "commit1",
"source": {
"gitRepository": "repository1",
- "gitBranch": "master",
- "gitCommit": "commit1"
- }
+ "gitCommit": "commit1",
+ "gitBranch": "master"
+ },
+ "hash": "1.0.3-commit1"
},
- "currentPlatform": "6.1",
"currentApplication": {
- "hash": "1.0.1-commit1",
+ "sourceUrl": "repository1/tree/commit1",
"build": 1,
+ "commit": "commit1",
"source": {
"gitRepository": "repository1",
- "gitBranch": "master",
- "gitCommit": "commit1"
- }
+ "gitCommit": "commit1",
+ "gitBranch": "master"
+ },
+ "hash": "1.0.1-commit1"
},
+ "start": 2000,
+ "end": 2000,
+ "id": 4,
"steps": {
"deployInitialReal": "succeeded",
"installInitialReal": "failed",
- "deployReal": "unfinished",
- "installReal": "unfinished",
+ "startTests": "unfinished",
"deployTester": "succeeded",
+ "report": "succeeded",
"installTester": "unfinished",
- "startTests": "unfinished",
+ "deployReal": "unfinished",
+ "installReal": "unfinished",
+ "deactivateTester": "succeeded",
"endTests": "unfinished",
"copyVespaLogs": "succeeded",
- "deactivateReal": "succeeded",
- "deactivateTester": "succeeded",
- "report": "succeeded"
+ "deactivateReal": "succeeded"
},
"tasks": {},
- "log": "https://some.url:43/root/run/4"
+ "status": "installationFailed"
},
"5": {
- "id": 5,
- "status": "installationFailed",
- "start": 102000,
- "end": 102000,
"wantedPlatform": "6.1",
+ "currentPlatform": "6.1",
+ "log": "https://some.url:43/root/run/5",
"wantedApplication": {
- "hash": "1.0.3-commit1",
+ "sourceUrl": "repository1/tree/commit1",
"build": 3,
+ "commit": "commit1",
"source": {
"gitRepository": "repository1",
- "gitBranch": "master",
- "gitCommit": "commit1"
- }
+ "gitCommit": "commit1",
+ "gitBranch": "master"
+ },
+ "hash": "1.0.3-commit1"
},
- "currentPlatform": "6.1",
"currentApplication": {
- "hash": "1.0.1-commit1",
+ "sourceUrl": "repository1/tree/commit1",
"build": 1,
+ "commit": "commit1",
"source": {
"gitRepository": "repository1",
- "gitBranch": "master",
- "gitCommit": "commit1"
- }
+ "gitCommit": "commit1",
+ "gitBranch": "master"
+ },
+ "hash": "1.0.1-commit1"
},
+ "start": 102000,
+ "end": 102000,
+ "id": 5,
"steps": {
"deployInitialReal": "succeeded",
"installInitialReal": "failed",
- "deployReal": "unfinished",
- "installReal": "unfinished",
+ "startTests": "unfinished",
"deployTester": "succeeded",
+ "report": "succeeded",
"installTester": "unfinished",
- "startTests": "unfinished",
+ "deployReal": "unfinished",
+ "installReal": "unfinished",
+ "deactivateTester": "succeeded",
"endTests": "unfinished",
"copyVespaLogs": "succeeded",
- "deactivateReal": "succeeded",
- "deactivateTester": "succeeded",
- "report": "succeeded"
+ "deactivateReal": "succeeded"
},
"tasks": {},
- "log": "https://some.url:43/root/run/5"
+ "status": "installationFailed"
}
}
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 a572fa04781..2c12db0036b 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
@@ -12,7 +12,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "succeeded",
@@ -45,7 +47,9 @@
"gitRepository": "repository1",
"gitBranch": "master",
"gitCommit": "commit1"
- }
+ },
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
},
"steps": {
"deployTester": "unfinished",