diff options
Diffstat (limited to 'config-model/src/main/java/com/yahoo/config')
3 files changed, 17 insertions, 4 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/provision/Host.java b/config-model/src/main/java/com/yahoo/config/model/provision/Host.java index 0374afe4e43..8c8debbae43 100644 --- a/config-model/src/main/java/com/yahoo/config/model/provision/Host.java +++ b/config-model/src/main/java/com/yahoo/config/model/provision/Host.java @@ -2,6 +2,7 @@ package com.yahoo.config.model.provision; import com.google.common.collect.ImmutableList; +import com.yahoo.component.Version; import com.yahoo.config.provision.Flavor; import java.util.ArrayList; @@ -18,6 +19,7 @@ public class Host { private final String hostname; private final ImmutableList<String> aliases; private final Optional<Flavor> flavor; + private final Optional<Version> version; public Host(String hostname) { this(hostname, ImmutableList.of(), Optional.empty()); @@ -28,9 +30,14 @@ public class Host { } public Host(String hostname, List<String> hostAliases, Optional<Flavor> flavor) { + this(hostname, hostAliases, flavor, Optional.empty()); + } + + public Host(String hostname, List<String> hostAliases, Optional<Flavor> flavor, Optional<Version> version) { this.hostname = hostname; this.aliases = ImmutableList.copyOf(hostAliases); this.flavor = flavor; + this.version = version; } public String hostname() { return hostname; } @@ -40,6 +47,9 @@ public class Host { public Optional<Flavor> flavor() { return flavor; } + /** The current Vespa version running on this host, or empty if not known */ + public Optional<Version> version() { return version; } + @Override public String toString() { return hostname + (aliases.size() > 0 ? " (aliases: " + aliases + ")" : "" ) + diff --git a/config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java b/config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java index 2e1d507eea1..e6b89d7f390 100644 --- a/config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java +++ b/config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java @@ -103,7 +103,7 @@ public class InMemoryProvisioner implements HostProvisioner { List<Host> defaultHosts = freeNodes.get("default"); if (defaultHosts.isEmpty()) throw new IllegalArgumentException("No more hosts of default flavor available"); Host newHost = freeNodes.removeValue("default", 0); - HostSpec hostSpec = new HostSpec(newHost.hostname(), newHost.aliases(), newHost.flavor(), Optional.empty()); + HostSpec hostSpec = new HostSpec(newHost.hostname(), newHost.aliases(), newHost.flavor(), Optional.empty(), newHost.version()); legacyMapping.put(alias, hostSpec); return hostSpec; } @@ -148,7 +148,11 @@ public class InMemoryProvisioner implements HostProvisioner { } private HostSpec retire(HostSpec host) { - return new HostSpec(host.hostname(), host.aliases(), host.membership().get().retire()); + return new HostSpec(host.hostname(), + host.aliases(), + host.flavor(), + Optional.of(host.membership().get().retire()), + host.version()); } private List<HostSpec> allocateHostGroup(ClusterSpec clusterGroup, String flavor, int nodesInGroup, int startIndex) { @@ -160,7 +164,7 @@ public class InMemoryProvisioner implements HostProvisioner { if (freeNodes.get(flavor).isEmpty()) throw new IllegalArgumentException("Insufficient capacity of flavor '" + flavor + "'"); Host newHost = freeNodes.removeValue(flavor, 0); ClusterMembership membership = ClusterMembership.from(clusterGroup, nextIndex++); - allocation.add(new HostSpec(newHost.hostname(), newHost.aliases(), newHost.flavor(), Optional.of(membership))); + allocation.add(new HostSpec(newHost.hostname(), newHost.aliases(), newHost.flavor(), Optional.of(membership), newHost.version())); } nextIndexInCluster.put(new Pair<>(clusterGroup.type(), clusterGroup.id()), nextIndex); diff --git a/config-model/src/main/java/com/yahoo/config/model/provision/SingleNodeProvisioner.java b/config-model/src/main/java/com/yahoo/config/model/provision/SingleNodeProvisioner.java index 99c079739b4..0af11fdb941 100644 --- a/config-model/src/main/java/com/yahoo/config/model/provision/SingleNodeProvisioner.java +++ b/config-model/src/main/java/com/yahoo/config/model/provision/SingleNodeProvisioner.java @@ -14,7 +14,6 @@ import java.util.List; * application if one exists. * * @author hmusum - * @since 5.11 */ public class SingleNodeProvisioner implements HostProvisioner { |