aboutsummaryrefslogtreecommitdiffstats
path: root/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationVersion.java
diff options
context:
space:
mode:
authorOla Aunrønning <olaa@verizonmedia.com>2022-01-27 10:20:58 +0100
committerOla Aunrønning <olaa@verizonmedia.com>2022-01-27 10:27:38 +0100
commit72e7534a3fdc7d4a535302ed77af37c7a0708086 (patch)
tree84654674a2c6935df6fbaf3fc4bd9c6a4eee4f85 /controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationVersion.java
parentc790fe3631168f68efcc8c9e8fe5a30e414517d2 (diff)
Stores all deployed app versions. Stores app/bundle hashes
Diffstat (limited to 'controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationVersion.java')
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationVersion.java30
1 files changed, 24 insertions, 6 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 3a863f21ca0..984035645ed 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
@@ -23,7 +23,8 @@ public class ApplicationVersion implements Comparable<ApplicationVersion> {
*/
public static final ApplicationVersion unknown = new ApplicationVersion(Optional.empty(), OptionalLong.empty(),
Optional.empty(), Optional.empty(), Optional.empty(),
- Optional.empty(), Optional.empty(), true);
+ Optional.empty(), Optional.empty(), true,
+ 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";
@@ -36,11 +37,13 @@ public class ApplicationVersion implements Comparable<ApplicationVersion> {
private final Optional<String> sourceUrl;
private final Optional<String> commit;
private final boolean deployedDirectly;
+ private final Optional<String> applicationPackageHash;
+ private final Optional<String> bundleHash;
/** 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, boolean deployedDirectly) {
+ Optional<String> commit, boolean deployedDirectly, Optional<String> applicationPackageHash, Optional<String> bundleHash) {
if (buildNumber.isEmpty() && ( source.isPresent() || authorEmail.isPresent() || compileVersion.isPresent()
|| buildTime.isPresent() || sourceUrl.isPresent() || commit.isPresent()))
throw new IllegalArgumentException("Build number must be present if any other attribute is");
@@ -65,26 +68,31 @@ public class ApplicationVersion implements Comparable<ApplicationVersion> {
this.sourceUrl = Objects.requireNonNull(sourceUrl, "sourceUrl cannot be null");
this.commit = Objects.requireNonNull(commit, "commit cannot be null");
this.deployedDirectly = deployedDirectly;
+ this.applicationPackageHash = applicationPackageHash;
+ this.bundleHash = bundleHash;
}
/** 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(), false);
+ Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), false,
+ Optional.empty(), Optional.empty());
}
/** Creates a 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.empty(), Optional.empty(), false);
+ Optional.of(compileVersion), Optional.of(buildTime), Optional.empty(), Optional.empty(), false,
+ Optional.empty(), Optional.empty());
}
/** Creates a version from a completed build, an author email, and build meta data. */
public static ApplicationVersion from(Optional<SourceRevision> source, long buildNumber, Optional<String> authorEmail,
Optional<Version> compileVersion, Optional<Instant> buildTime,
- Optional<String> sourceUrl, Optional<String> commit, boolean deployedDirectly) {
- return new ApplicationVersion(source, OptionalLong.of(buildNumber), authorEmail, compileVersion, buildTime, sourceUrl, commit, deployedDirectly);
+ Optional<String> sourceUrl, Optional<String> commit, boolean deployedDirectly,
+ Optional<String> applicationPackageHash, Optional<String> bundleHash ) {
+ return new ApplicationVersion(source, OptionalLong.of(buildNumber), authorEmail, compileVersion, buildTime, sourceUrl, commit, deployedDirectly, applicationPackageHash, bundleHash);
}
/** Returns a unique identifier for this version or "unknown" if version is not known */
@@ -115,6 +123,16 @@ public class ApplicationVersion implements Comparable<ApplicationVersion> {
/** Returns the time this package was built, if known. */
public Optional<Instant> buildTime() { return buildTime; }
+ /** Returns the hash of entire application package */
+ public Optional<String> applicationPackageHash() {
+ return applicationPackageHash;
+ }
+
+ /** Returns the hash of app package except deployment/build-meta data */
+ public Optional<String> bundleHash() {
+ return bundleHash;
+ }
+
/** Returns the source URL for this application version. */
public Optional<String> sourceUrl() {
return sourceUrl.or(() -> source.map(source -> {