summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2018-04-19 15:31:52 +0200
committerJon Bratseth <bratseth@oath.com>2018-04-19 15:31:52 +0200
commit7ac8f3b0f6cd3ff3e6556e69cc5aa97aa9ae76b9 (patch)
tree1e35300d77b8c6cc0d73b0fc6fa6ccf616f7ec90 /config-model
parent1e0a2f24d4159edf46b5b457f07b33121d7e5bbf (diff)
Load the minimal set of models needed in dev
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/provision/Host.java10
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java10
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/provision/SingleNodeProvisioner.java1
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/HostResource.java12
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java4
5 files changed, 31 insertions, 6 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 {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java b/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java
index 0f7c040bf02..5c5bbba301f 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
+import com.yahoo.component.Version;
import com.yahoo.config.model.api.HostInfo;
import com.yahoo.config.provision.ClusterMembership;
import com.yahoo.config.provision.Flavor;
@@ -44,13 +45,21 @@ public class HostResource implements Comparable<HostResource> {
// Empty for self-hosted Vespa.
private Optional<Flavor> flavor = Optional.empty();
+ /** The current Vespa version running on this node, or empty if not known */
+ private final Optional<Version> version;
+
/**
* Create a new {@link HostResource} bound to a specific {@link com.yahoo.vespa.model.Host}.
*
* @param host {@link com.yahoo.vespa.model.Host} object to bind to.
*/
public HostResource(Host host) {
+ this(host, Optional.empty());
+ }
+
+ public HostResource(Host host, Optional<Version> version) {
this.host = host;
+ this.version = version;
}
/**
@@ -59,6 +68,9 @@ public class HostResource implements Comparable<HostResource> {
*/
public Host getHost() { return host; }
+ /** Returns the current Vespa version running on this node, or null if not known */
+ public Optional<Version> version() { return version; }
+
/**
* Returns the baseport of the first available port range of length numPorts,
* or 0 if there is no range of that length available.
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java b/config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java
index 6ef6c208c0a..5f55755c5a4 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java
@@ -111,7 +111,7 @@ public class HostSystem extends AbstractConfigProducer<Host> {
private HostResource addNewHost(HostSpec hostSpec) {
Host host = new Host(this, hostSpec.hostname());
- HostResource hostResource = new HostResource(host);
+ HostResource hostResource = new HostResource(host, hostSpec.version());
hostResource.setFlavor(hostSpec.flavor());
hostSpec.membership().ifPresent(hostResource::addClusterMembership);
hostname2host.put(host.getHostname(), hostResource);
@@ -162,7 +162,7 @@ public class HostSystem extends AbstractConfigProducer<Host> {
Set<HostSpec> getHostSpecs() {
return getHosts().stream()
.map(host -> new HostSpec(host.getHostname(), Collections.emptyList(),
- host.getFlavor(), host.primaryClusterMembership()))
+ host.getFlavor(), host.primaryClusterMembership(), host.version()))
.collect(Collectors.toCollection(LinkedHashSet::new));
}