diff options
author | Ola Aunrønning <olaa@verizonmedia.com> | 2022-01-27 10:20:58 +0100 |
---|---|---|
committer | Ola Aunrønning <olaa@verizonmedia.com> | 2022-01-27 10:27:38 +0100 |
commit | 72e7534a3fdc7d4a535302ed77af37c7a0708086 (patch) | |
tree | 84654674a2c6935df6fbaf3fc4bd9c6a4eee4f85 /controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedApplication.java | |
parent | c790fe3631168f68efcc8c9e8fe5a30e414517d2 (diff) |
Stores all deployed app versions. Stores app/bundle hashes
Diffstat (limited to 'controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedApplication.java')
-rw-r--r-- | controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedApplication.java | 48 |
1 files changed, 31 insertions, 17 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedApplication.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedApplication.java index 13ef1339e44..f476ae649f6 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedApplication.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedApplication.java @@ -13,8 +13,10 @@ import com.yahoo.vespa.hosted.controller.metric.ApplicationMetrics; import java.security.PublicKey; import java.time.Instant; +import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashSet; +import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; @@ -43,6 +45,7 @@ public class LockedApplication { private final Set<PublicKey> deployKeys; private final OptionalLong projectId; private final Optional<ApplicationVersion> latestVersion; + private final List<ApplicationVersion> versions; private final Map<InstanceName, Instance> instances; /** @@ -56,14 +59,14 @@ public class LockedApplication { application.deploymentSpec(), application.validationOverrides(), application.deploymentIssueId(), application.ownershipIssueId(), application.owner(), application.majorVersion(), application.metrics(), application.deployKeys(), - application.projectId(), application.latestVersion(), application.instances()); + application.projectId(), application.latestVersion(), application.versions(), application.instances()); } private LockedApplication(Lock lock, TenantAndApplicationId id, Instant createdAt, DeploymentSpec deploymentSpec, ValidationOverrides validationOverrides, Optional<IssueId> deploymentIssueId, Optional<IssueId> ownershipIssueId, Optional<User> owner, OptionalInt majorVersion, ApplicationMetrics metrics, Set<PublicKey> deployKeys, - OptionalLong projectId, Optional<ApplicationVersion> latestVersion, + OptionalLong projectId, Optional<ApplicationVersion> latestVersion, List<ApplicationVersion> versions, Map<InstanceName, Instance> instances) { this.lock = lock; this.id = id; @@ -78,6 +81,7 @@ public class LockedApplication { this.deployKeys = deployKeys; this.projectId = projectId; this.latestVersion = latestVersion; + this.versions = versions; this.instances = Map.copyOf(instances); } @@ -85,7 +89,7 @@ public class LockedApplication { public Application get() { return new Application(id, createdAt, deploymentSpec, validationOverrides, deploymentIssueId, ownershipIssueId, owner, majorVersion, metrics, deployKeys, - projectId, latestVersion, instances.values()); + projectId, latestVersion, versions, instances.values()); } LockedApplication withNewInstance(InstanceName instance) { @@ -93,7 +97,7 @@ public class LockedApplication { instances.put(instance, new Instance(id.instance(instance))); return new LockedApplication(lock, id, createdAt, deploymentSpec, validationOverrides, deploymentIssueId, ownershipIssueId, owner, majorVersion, metrics, deployKeys, - projectId, latestVersion, instances); + projectId, latestVersion, versions, instances); } public LockedApplication with(InstanceName instance, UnaryOperator<Instance> modification) { @@ -101,7 +105,7 @@ public class LockedApplication { instances.put(instance, modification.apply(instances.get(instance))); return new LockedApplication(lock, id, createdAt, deploymentSpec, validationOverrides, deploymentIssueId, ownershipIssueId, owner, majorVersion, metrics, deployKeys, - projectId, latestVersion, instances); + projectId, latestVersion, versions, instances); } public LockedApplication without(InstanceName instance) { @@ -109,49 +113,51 @@ public class LockedApplication { instances.remove(instance); return new LockedApplication(lock, id, createdAt, deploymentSpec, validationOverrides, deploymentIssueId, ownershipIssueId, owner, majorVersion, metrics, deployKeys, - projectId, latestVersion, instances); + projectId, latestVersion, versions, instances); } public LockedApplication withNewSubmission(ApplicationVersion latestVersion) { + List<ApplicationVersion> applicationVersions = new ArrayList<>(versions); + if (!applicationVersions.contains(latestVersion)) applicationVersions.add(latestVersion); return new LockedApplication(lock, id, createdAt, deploymentSpec, validationOverrides, deploymentIssueId, ownershipIssueId, owner, majorVersion, metrics, deployKeys, - projectId, Optional.of(latestVersion), instances); + projectId, Optional.of(latestVersion), applicationVersions, instances); } public LockedApplication withProjectId(OptionalLong projectId) { return new LockedApplication(lock, id, createdAt, deploymentSpec, validationOverrides, deploymentIssueId, ownershipIssueId, owner, majorVersion, metrics, deployKeys, - projectId, latestVersion, instances); + projectId, latestVersion, versions, instances); } public LockedApplication withDeploymentIssueId(IssueId issueId) { return new LockedApplication(lock, id, createdAt, deploymentSpec, validationOverrides, Optional.ofNullable(issueId), ownershipIssueId, owner, majorVersion, metrics, deployKeys, - projectId, latestVersion, instances); + projectId, latestVersion, versions, instances); } public LockedApplication with(DeploymentSpec deploymentSpec) { return new LockedApplication(lock, id, createdAt, deploymentSpec, validationOverrides, deploymentIssueId, ownershipIssueId, owner, majorVersion, metrics, deployKeys, - projectId, latestVersion, instances); + projectId, latestVersion, versions, instances); } public LockedApplication with(ValidationOverrides validationOverrides) { return new LockedApplication(lock, id, createdAt, deploymentSpec, validationOverrides, deploymentIssueId, ownershipIssueId, owner, majorVersion, metrics, deployKeys, - projectId, latestVersion, instances); + projectId, latestVersion, versions, instances); } public LockedApplication withOwnershipIssueId(IssueId issueId) { return new LockedApplication(lock, id, createdAt, deploymentSpec, validationOverrides, deploymentIssueId, Optional.of(issueId), owner, majorVersion, metrics, deployKeys, - projectId, latestVersion, instances); + projectId, latestVersion, versions, instances); } public LockedApplication withOwner(User owner) { return new LockedApplication(lock, id, createdAt, deploymentSpec, validationOverrides, deploymentIssueId, ownershipIssueId, Optional.of(owner), majorVersion, metrics, deployKeys, - projectId, latestVersion, instances); + projectId, latestVersion, versions, instances); } /** Set a major version for this, or set to null to remove any major version override */ @@ -159,13 +165,13 @@ public class LockedApplication { return new LockedApplication(lock, id, createdAt, deploymentSpec, validationOverrides, deploymentIssueId, ownershipIssueId, owner, majorVersion == null ? OptionalInt.empty() : OptionalInt.of(majorVersion), - metrics, deployKeys, projectId, latestVersion, instances); + metrics, deployKeys, projectId, latestVersion, versions, instances); } public LockedApplication with(ApplicationMetrics metrics) { return new LockedApplication(lock, id, createdAt, deploymentSpec, validationOverrides, deploymentIssueId, ownershipIssueId, owner, majorVersion, metrics, deployKeys, - projectId, latestVersion, instances); + projectId, latestVersion, versions, instances); } public LockedApplication withDeployKey(PublicKey pemDeployKey) { @@ -173,7 +179,7 @@ public class LockedApplication { keys.add(pemDeployKey); return new LockedApplication(lock, id, createdAt, deploymentSpec, validationOverrides, deploymentIssueId, ownershipIssueId, owner, majorVersion, metrics, keys, - projectId, latestVersion, instances); + projectId, latestVersion, versions, instances); } public LockedApplication withoutDeployKey(PublicKey pemDeployKey) { @@ -181,7 +187,15 @@ public class LockedApplication { keys.remove(pemDeployKey); return new LockedApplication(lock, id, createdAt, deploymentSpec, validationOverrides, deploymentIssueId, ownershipIssueId, owner, majorVersion, metrics, keys, - projectId, latestVersion, instances); + projectId, latestVersion, versions, instances); + } + + public LockedApplication withoutVersion(ApplicationVersion version) { + List<ApplicationVersion> applicationVersions = new ArrayList<>(versions); + applicationVersions.remove(version); + return new LockedApplication(lock, id, createdAt, deploymentSpec, validationOverrides, + deploymentIssueId, ownershipIssueId, owner, majorVersion, metrics, deployKeys, + projectId, latestVersion, applicationVersions, instances); } @Override |