diff options
author | Jon Marius Venstad <jvenstad@yahoo-inc.com> | 2019-01-08 13:28:35 +0100 |
---|---|---|
committer | Jon Marius Venstad <jvenstad@yahoo-inc.com> | 2019-01-08 13:28:35 +0100 |
commit | 33bcfb52271adbfe50078c5f6d84a9ff2749c80d (patch) | |
tree | 8b963ddb3b7da29db1672dcc8d229863a20c8cd9 /controller-server | |
parent | 3222d0f3b289fe63c80ec092384231a2b9b2f7dd (diff) |
Make Upgrader leave pinned applications alone
Diffstat (limited to 'controller-server')
3 files changed, 12 insertions, 2 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationList.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationList.java index 9e8b2495616..64664842e85 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationList.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationList.java @@ -63,6 +63,11 @@ public class ApplicationList { return listOf(list.stream().filter(application -> isUpgradingTo(version, application))); } + /** Returns the subset of applications which are not pinned to a certain Vespa version. */ + public ApplicationList notPinned() { + return listOf(list.stream().filter(application -> ! application.change().isPinning())); + } + /** Returns the subset of applications which are currently not upgrading to the given version */ public ApplicationList notUpgradingTo(Version version) { return listOf(list.stream().filter(application -> ! isUpgradingTo(version, application))); diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/Change.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/Change.java index 02ae9829b65..00db08c668a 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/Change.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/Change.java @@ -67,6 +67,9 @@ public final class Change { /** Returns a version of this change which replaces or adds this platform change */ public Change with(Version platformVersion) { + if (pinning) + throw new IllegalArgumentException("Not allowed to set a platform version when pinned."); + return new Change(Optional.of(platformVersion), application, pinning); } diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Upgrader.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Upgrader.java index c1665dfba42..3aa61fe8370 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Upgrader.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Upgrader.java @@ -92,8 +92,10 @@ public class Upgrader extends Maintainer { return reversed; } - /** Returns a list of all applications */ - private ApplicationList applications() { return ApplicationList.from(controller().applications().asList()); } + /** Returns a list of all applications, except those which are pinned — these should not be manipulated by the Upgrader */ + private ApplicationList applications() { + return ApplicationList.from(controller().applications().asList()).notPinned(); + } private void upgrade(ApplicationList applications, Version version) { applications = applications.hasProductionDeployment(); |