diff options
author | Martin Polden <mpolden@mpolden.no> | 2021-06-24 14:30:14 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2021-06-24 14:30:14 +0200 |
commit | 99665f650e8ef38626d6a0c4b9d4a21b1243f086 (patch) | |
tree | 745b7078939e59166b86b57219732831d6211971 /controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersionStatus.java | |
parent | d25995ae103887c9509cb8622429a50b9138a7f7 (diff) |
Remove unnecessary NodeVersions class
Diffstat (limited to 'controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersionStatus.java')
-rw-r--r-- | controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersionStatus.java | 42 |
1 files changed, 18 insertions, 24 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 69808a987fc..78c7b36181e 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 @@ -4,18 +4,19 @@ package com.yahoo.vespa.hosted.controller.versions; import com.google.common.collect.ImmutableMap; import com.yahoo.component.Version; import com.yahoo.config.provision.CloudName; -import com.yahoo.config.provision.HostName; import com.yahoo.config.provision.zone.ZoneApi; import com.yahoo.vespa.hosted.controller.Controller; import com.yahoo.vespa.hosted.controller.application.SystemApplication; import com.yahoo.vespa.hosted.controller.maintenance.OsUpgrader; +import java.time.Instant; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -28,15 +29,15 @@ public class OsVersionStatus { public static final OsVersionStatus empty = new OsVersionStatus(ImmutableMap.of()); - private final Map<OsVersion, NodeVersions> versions; + private final Map<OsVersion, List<NodeVersion>> versions; /** Public for serialization purpose only. Use {@link OsVersionStatus#compute(Controller)} for an up-to-date status */ - public OsVersionStatus(ImmutableMap<OsVersion, NodeVersions> versions) { + public OsVersionStatus(Map<OsVersion, List<NodeVersion>> versions) { this.versions = ImmutableMap.copyOf(Objects.requireNonNull(versions, "versions must be non-null")); } /** All known OS versions and their nodes */ - public Map<OsVersion, NodeVersions> versions() { + public Map<OsVersion, List<NodeVersion>> versions() { return versions; } @@ -44,8 +45,9 @@ public class OsVersionStatus { public List<NodeVersion> nodesIn(CloudName cloud) { return versions.entrySet().stream() .filter(entry -> entry.getKey().cloud().equals(cloud)) - .flatMap(entry -> entry.getValue().asMap().values().stream()) - .collect(Collectors.toUnmodifiableList()); + .map(Map.Entry::getValue) + .findFirst() + .orElseGet(List::of); } /** Returns versions that exist in given cloud */ @@ -58,38 +60,30 @@ public class OsVersionStatus { /** Compute the current OS versions in this system. This is expensive and should be called infrequently */ public static OsVersionStatus compute(Controller controller) { - var osVersions = new HashMap<OsVersion, List<NodeVersion>>(); + Map<OsVersion, List<NodeVersion>> osVersions = new HashMap<>(); controller.osVersionTargets().forEach(target -> osVersions.put(target.osVersion(), new ArrayList<>())); for (var application : SystemApplication.all()) { for (var zone : zonesToUpgrade(controller)) { if (!application.shouldUpgradeOs()) continue; - var targetOsVersion = controller.serviceRegistry().configServer().nodeRepository() - .targetVersionsOf(zone.getVirtualId()) - .osVersion(application.nodeType()) - .orElse(Version.emptyVersion); + Version targetOsVersion = controller.serviceRegistry().configServer().nodeRepository() + .targetVersionsOf(zone.getVirtualId()) + .osVersion(application.nodeType()) + .orElse(Version.emptyVersion); for (var node : controller.serviceRegistry().configServer().nodeRepository().list(zone.getVirtualId(), application.id())) { if (!OsUpgrader.canUpgrade(node)) continue; - var suspendedAt = node.suspendedSince(); - var nodeVersion = new NodeVersion(node.hostname(), zone.getVirtualId(), node.currentOsVersion(), - targetOsVersion, suspendedAt); - var osVersion = new OsVersion(nodeVersion.currentVersion(), zone.getCloudName()); + Optional<Instant> suspendedAt = node.suspendedSince(); + NodeVersion nodeVersion = new NodeVersion(node.hostname(), zone.getVirtualId(), node.currentOsVersion(), + targetOsVersion, suspendedAt); + OsVersion osVersion = new OsVersion(nodeVersion.currentVersion(), zone.getCloudName()); osVersions.computeIfAbsent(osVersion, (k) -> new ArrayList<>()) .add(nodeVersion); } } } - var newOsVersions = ImmutableMap.<OsVersion, NodeVersions>builder(); - for (var osVersion : osVersions.entrySet()) { - var nodeVersions = ImmutableMap.<HostName, NodeVersion>builder(); - for (var nodeVersion : osVersion.getValue()) { - nodeVersions.put(nodeVersion.hostname(), nodeVersion); - } - newOsVersions.put(osVersion.getKey(), new NodeVersions(nodeVersions.build())); - } - return new OsVersionStatus(newOsVersions.build()); + return new OsVersionStatus(osVersions); } private static List<ZoneApi> zonesToUpgrade(Controller controller) { |