diff options
author | Martin Polden <mpolden@mpolden.no> | 2018-08-21 13:52:27 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2018-08-21 13:52:27 +0200 |
commit | 6965e262220ea213a527e15e33a9c61787d45c47 (patch) | |
tree | 439ce5afd51fd11fbf6dcee87d9a961c4754906a /controller-server | |
parent | f4111fd96a963621453f7580b4272b1c9bdaf028 (diff) |
Remove cloud from ZoneId.equals
Region and environment pairs are unique across clouds.
Diffstat (limited to 'controller-server')
2 files changed, 17 insertions, 1 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersionStatus.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersionStatus.java index 8ad21fee2f1..871a7872a9c 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersionStatus.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersionStatus.java @@ -13,6 +13,7 @@ import com.yahoo.vespa.hosted.controller.application.SystemApplication; import com.yahoo.vespa.hosted.controller.maintenance.OsUpgrader; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -62,7 +63,7 @@ public class OsVersionStatus { if (application.nodeTypesWithUpgradableOs().isEmpty()) { continue; // Avoid querying applications that do not contain nodes with upgradable OS } - for (ZoneId zone : controller.zoneRegistry().zones().controllerUpgraded().ids()) { + for (ZoneId zone : zonesToUpgrade(controller)) { controller.configServer().nodeRepository().list(zone, application.id()).stream() .filter(node -> OsUpgrader.eligibleForUpgrade(node, application)) .map(node -> new Node(node.hostname(), node.currentOsVersion(), zone.environment(), zone.region())) @@ -79,6 +80,13 @@ public class OsVersionStatus { return new OsVersionStatus(versions); } + private static List<ZoneId> zonesToUpgrade(Controller controller) { + return controller.zoneRegistry().osUpgradePolicies().stream() + .flatMap(upgradePolicy -> upgradePolicy.asList().stream()) + .flatMap(Collection::stream) + .collect(Collectors.toList()); + } + /** A node in this system and its current OS version */ public static class Node { diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsVersionStatusUpdaterTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsVersionStatusUpdaterTest.java index 04e0f67753e..98ed64ba879 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsVersionStatusUpdaterTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsVersionStatusUpdaterTest.java @@ -4,6 +4,8 @@ package com.yahoo.vespa.hosted.controller.maintenance; import com.yahoo.component.Version; import com.yahoo.vespa.hosted.controller.ControllerTester; import com.yahoo.vespa.hosted.controller.api.integration.zone.CloudName; +import com.yahoo.vespa.hosted.controller.api.integration.zone.UpgradePolicy; +import com.yahoo.vespa.hosted.controller.api.integration.zone.ZoneId; import com.yahoo.vespa.hosted.controller.persistence.MockCuratorDb; import com.yahoo.vespa.hosted.controller.versions.OsVersion; import com.yahoo.vespa.hosted.controller.versions.OsVersionStatus; @@ -28,6 +30,12 @@ public class OsVersionStatusUpdaterTest { ControllerTester tester = new ControllerTester(); OsVersionStatusUpdater statusUpdater = new OsVersionStatusUpdater(tester.controller(), Duration.ofDays(1), new JobControl(new MockCuratorDb())); + // Add all zones to upgrade policy + UpgradePolicy upgradePolicy = UpgradePolicy.create(); + for (ZoneId zone : tester.zoneRegistry().zones().controllerUpgraded().ids()) { + upgradePolicy = upgradePolicy.upgrade(zone); + } + tester.zoneRegistry().setUpgradePolicy(upgradePolicy); // Initially empty assertSame(OsVersionStatus.empty, tester.controller().osVersionStatus()); |