summaryrefslogtreecommitdiffstats
path: root/config-provisioning
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-provisioning
parent1e0a2f24d4159edf46b5b457f07b33121d7e5bbf (diff)
Load the minimal set of models needed in dev
Diffstat (limited to 'config-provisioning')
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/AllocatedHosts.java30
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java1
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/HostSpec.java17
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/ProvisionInfo.java2
4 files changed, 40 insertions, 10 deletions
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/AllocatedHosts.java b/config-provisioning/src/main/java/com/yahoo/config/provision/AllocatedHosts.java
index 13efc2b3337..cc343821e0b 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/AllocatedHosts.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/AllocatedHosts.java
@@ -29,8 +29,13 @@ public class AllocatedHosts {
private static final String hostSpecHostName = "hostName";
private static final String hostSpecMembership = "membership";
private static final String hostSpecFlavor = "flavor";
+
+ /** Wanted version */
private static final String hostSpecVespaVersion = "vespaVersion";
+ /** Current version */
+ private static final String hostSpecCurrentVespaVersion = "currentVespaVersion";
+
private final ImmutableSet<HostSpec> hosts;
AllocatedHosts(Set<HostSpec> hosts) {
@@ -49,12 +54,12 @@ public class AllocatedHosts {
private void toSlime(HostSpec host, Cursor cursor) {
cursor.setString(hostSpecHostName, host.hostname());
- if (host.membership().isPresent()) {
- cursor.setString(hostSpecMembership, host.membership().get().stringValue());
- cursor.setString(hostSpecVespaVersion, host.membership().get().cluster().vespaVersion().toString());
- }
- if (host.flavor().isPresent())
- cursor.setString(hostSpecFlavor, host.flavor().get().name());
+ host.membership().ifPresent(membership -> {
+ cursor.setString(hostSpecMembership, membership.stringValue());
+ cursor.setString(hostSpecVespaVersion, membership.cluster().vespaVersion().toString());
+ });
+ host.flavor().ifPresent(flavor -> cursor.setString(hostSpecFlavor, flavor.name()));
+ host.version().ifPresent(version -> cursor.setString(hostSpecCurrentVespaVersion, version.toString()));
}
/** Returns the hosts of this allocation */
@@ -66,19 +71,21 @@ public class AllocatedHosts {
array.traverse(new ArrayTraverser() {
@Override
public void entry(int i, Inspector inspector) {
- hosts.add(hostsFromSlime(inspector.field(hostSpecKey), nodeFlavors));
+ hosts.add(hostFromSlime(inspector.field(hostSpecKey), nodeFlavors));
}
});
return new AllocatedHosts(hosts);
}
- static HostSpec hostsFromSlime(Inspector object, Optional<NodeFlavors> nodeFlavors) {
+ static HostSpec hostFromSlime(Inspector object, Optional<NodeFlavors> nodeFlavors) {
Optional<ClusterMembership> membership =
object.field(hostSpecMembership).valid() ? Optional.of(membershipFromSlime(object)) : Optional.empty();
Optional<Flavor> flavor =
object.field(hostSpecFlavor).valid() ? flavorFromSlime(object, nodeFlavors) : Optional.empty();
+ Optional<com.yahoo.component.Version> version =
+ optionalString(object.field(hostSpecCurrentVespaVersion)).map(com.yahoo.component.Version::new);
- return new HostSpec(object.field(hostSpecHostName).asString(),Collections.emptyList(), flavor, membership);
+ return new HostSpec(object.field(hostSpecHostName).asString(), Collections.emptyList(), flavor, membership, version);
}
private static ClusterMembership membershipFromSlime(Inspector object) {
@@ -91,6 +98,11 @@ public class AllocatedHosts {
.orElse(Optional.empty());
}
+ private static Optional<String> optionalString(Inspector inspector) {
+ if ( ! inspector.valid()) return Optional.empty();
+ return Optional.of(inspector.asString());
+ }
+
public byte[] toJson() throws IOException {
Slime slime = new Slime();
toSlime(slime.setObject());
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java b/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java
index a0df2547631..837e062e356 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java
@@ -38,6 +38,7 @@ public final class ClusterSpec {
/** Returns the cluster id */
public Id id() { return id; }
+ /** Returns the version of Vespa that we want this cluster to run */
public Version vespaVersion() { return vespaVersion; }
/** Returns the group within the cluster this specifies, or empty to specify the whole cluster */
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/HostSpec.java b/config-provisioning/src/main/java/com/yahoo/config/provision/HostSpec.java
index dd8bc311939..a6607092d8e 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/HostSpec.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/HostSpec.java
@@ -27,14 +27,21 @@ public class HostSpec implements Comparable<HostSpec> {
private final Optional<Flavor> flavor;
+ private final Optional<com.yahoo.component.Version> version;
+
public HostSpec(String hostname, Optional<ClusterMembership> membership) {
this(hostname, new ArrayList<>(), Optional.empty(), membership);
}
+ // TODO: Remove after May 2018
public HostSpec(String hostname, ClusterMembership membership, Flavor flavor) {
this(hostname, new ArrayList<>(), Optional.of(flavor), Optional.of(membership));
}
+ public HostSpec(String hostname, ClusterMembership membership, Flavor flavor, Optional<com.yahoo.component.Version> version) {
+ this(hostname, new ArrayList<>(), Optional.of(flavor), Optional.of(membership), version);
+ }
+
public HostSpec(String hostname, List<String> aliases) {
this(hostname, aliases, Optional.empty(), Optional.empty());
}
@@ -44,11 +51,18 @@ public class HostSpec implements Comparable<HostSpec> {
}
public HostSpec(String hostname, List<String> aliases, Optional<Flavor> flavor, Optional<ClusterMembership> membership) {
+ this(hostname, aliases, flavor, membership, Optional.empty());
+ }
+
+ public HostSpec(String hostname, List<String> aliases, Optional<Flavor> flavor,
+ Optional<ClusterMembership> membership, Optional<com.yahoo.component.Version> version) {
if (hostname == null || hostname.isEmpty()) throw new IllegalArgumentException("Hostname must be specified");
+ Objects.requireNonNull(version, "Version cannot be null but can be empty");
this.hostname = hostname;
this.aliases = ImmutableList.copyOf(aliases);
this.flavor = flavor;
this.membership = membership;
+ this.version = version;
}
/** Returns the name identifying this host */
@@ -59,6 +73,9 @@ public class HostSpec implements Comparable<HostSpec> {
public Optional<Flavor> flavor() { return flavor; }
+ /** Returns the current version of Vespa running on this node, or empty if not known */
+ public Optional<com.yahoo.component.Version> version() { return version; }
+
/** Returns the membership of this host, or an empty value if not present */
public Optional<ClusterMembership> membership() { return membership; }
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/ProvisionInfo.java b/config-provisioning/src/main/java/com/yahoo/config/provision/ProvisionInfo.java
index 8444f2e10fc..ca8d531634b 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/ProvisionInfo.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/ProvisionInfo.java
@@ -39,7 +39,7 @@ public class ProvisionInfo extends AllocatedHosts {
array.traverse(new ArrayTraverser() {
@Override
public void entry(int i, Inspector inspector) {
- hosts.add(hostsFromSlime(inspector.field(hostSpecKey), nodeFlavors));
+ hosts.add(hostFromSlime(inspector.field(hostSpecKey), nodeFlavors));
}
});
return new ProvisionInfo(hosts);