summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2020-05-06 12:08:08 +0200
committerGitHub <noreply@github.com>2020-05-06 12:08:08 +0200
commitd64df30cfbc15c6ca1d24827d39a8d2267a21c91 (patch)
treeb424351521124ab71e6e1296cad3d79eaa0ac26f
parent0386e863ae5743760ac462c68a3fbb8846b1495c (diff)
parent7de538df1f9f4058279380a85f952c6f64b40fe4 (diff)
Merge pull request #13164 from vespa-engine/mpolden/current-os-version
Set current OS version for provisioned host
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/OsVersion.java8
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionedHost.java33
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java3
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java4
4 files changed, 28 insertions, 20 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/OsVersion.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/OsVersion.java
index 0622862f5ab..1216c060181 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/OsVersion.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/OsVersion.java
@@ -19,8 +19,8 @@ public class OsVersion {
private final Optional<Version> wanted;
public OsVersion(Optional<Version> current, Optional<Version> wanted) {
- this.current = requireNonEmpty(current);
- this.wanted = requireNonEmpty(wanted);
+ this.current = current;
+ this.wanted = requireNonZero(wanted);
}
/** The version this node is currently running, if any */
@@ -78,10 +78,10 @@ public class OsVersion {
wanted.map(Version::toFullString).orElse("<unset>") + "]";
}
- private static Optional<Version> requireNonEmpty(Optional<Version> version) {
+ private static Optional<Version> requireNonZero(Optional<Version> version) {
Objects.requireNonNull(version, "version must be non-null");
if (version.isEmpty()) return version;
- if (version.get().isEmpty()) throw new IllegalArgumentException("version must be non-empty");
+ if (version.get().isEmpty()) throw new IllegalArgumentException("version must be non-zero");
return version;
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionedHost.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionedHost.java
index b979ccda740..151fcb4233f 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionedHost.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionedHost.java
@@ -1,11 +1,13 @@
// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
+import com.yahoo.component.Version;
import com.yahoo.config.provision.Flavor;
import com.yahoo.config.provision.NodeResources;
import com.yahoo.config.provision.NodeType;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.node.IP;
+import com.yahoo.vespa.hosted.provision.node.OsVersion;
import java.util.Objects;
import java.util.Optional;
@@ -23,18 +25,21 @@ public class ProvisionedHost {
private final Flavor hostFlavor;
private final String nodeHostname;
private final NodeResources nodeResources;
+ private final Version osVersion;
- public ProvisionedHost(String id, String hostHostname, Flavor hostFlavor, String nodeHostname, NodeResources nodeResources) {
+ public ProvisionedHost(String id, String hostHostname, Flavor hostFlavor, String nodeHostname, NodeResources nodeResources, Version osVersion) {
this.id = Objects.requireNonNull(id, "Host id must be set");
this.hostHostname = Objects.requireNonNull(hostHostname, "Host hostname must be set");
this.hostFlavor = Objects.requireNonNull(hostFlavor, "Host flavor must be set");
this.nodeHostname = Objects.requireNonNull(nodeHostname, "Node hostname must be set");
this.nodeResources = Objects.requireNonNull(nodeResources, "Node resources must be set");
+ this.osVersion = Objects.requireNonNull(osVersion, "OS version must be set");
}
/** Generate {@link Node} instance representing the provisioned physical host */
public Node generateHost() {
- return Node.create(id, IP.Config.EMPTY, hostHostname, Optional.empty(), Optional.empty(), hostFlavor, Optional.empty(), NodeType.host);
+ var node = Node.create(id, IP.Config.EMPTY, hostHostname, Optional.empty(), Optional.empty(), hostFlavor, Optional.empty(), NodeType.host);
+ return node.with(node.status().withOsVersion(OsVersion.EMPTY.withCurrent(Optional.of(osVersion))));
}
/** Generate {@link Node} instance representing the node running on this physical host */
@@ -66,26 +71,28 @@ public class ProvisionedHost {
if (o == null || getClass() != o.getClass()) return false;
ProvisionedHost that = (ProvisionedHost) o;
return id.equals(that.id) &&
- hostHostname.equals(that.hostHostname) &&
- hostFlavor.equals(that.hostFlavor) &&
- nodeHostname.equals(that.nodeHostname) &&
- nodeResources.equals(that.nodeResources);
+ hostHostname.equals(that.hostHostname) &&
+ hostFlavor.equals(that.hostFlavor) &&
+ nodeHostname.equals(that.nodeHostname) &&
+ nodeResources.equals(that.nodeResources) &&
+ osVersion.equals(that.osVersion);
}
@Override
public int hashCode() {
- return Objects.hash(id, hostHostname, hostFlavor, nodeHostname, nodeResources);
+ return Objects.hash(id, hostHostname, hostFlavor, nodeHostname, nodeResources, osVersion);
}
@Override
public String toString() {
return "ProvisionedHost{" +
- "id='" + id + '\'' +
- ", hostHostname='" + hostHostname + '\'' +
- ", hostFlavor=" + hostFlavor +
- ", nodeHostname='" + nodeHostname + '\'' +
- ", nodeResources=" + nodeResources +
- '}';
+ "id='" + id + '\'' +
+ ", hostHostname='" + hostHostname + '\'' +
+ ", hostFlavor=" + hostFlavor +
+ ", nodeHostname='" + nodeHostname + '\'' +
+ ", nodeResources=" + nodeResources +
+ ", osVersion=" + osVersion +
+ '}';
}
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java
index 8da47d442d2..5233181bfbf 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java
@@ -241,7 +241,8 @@ class AutoscalingTester {
"hostname" + index,
hostFlavor,
"nodename" + index,
- resources));
+ resources,
+ osVersion));
}
return hosts;
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java
index a586a7d19df..a32baf5beda 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java
@@ -294,7 +294,7 @@ public class DynamicDockerProvisionTest {
List<Integer> provisionIndexes = (List<Integer>) invocation.getArguments()[0];
NodeResources nodeResources = (NodeResources) invocation.getArguments()[1];
return provisionIndexes.stream()
- .map(i -> new ProvisionedHost("id-" + i, "host-" + i, hostFlavor, "host-" + i + "-1", nodeResources))
+ .map(i -> new ProvisionedHost("id-" + i, "host-" + i, hostFlavor, "host-" + i + "-1", nodeResources, Version.emptyVersion))
.collect(Collectors.toList());
}).when(hostProvisioner).provisionHosts(any(), any(), any(), any());
}
@@ -337,7 +337,7 @@ public class DynamicDockerProvisionTest {
if (hostFlavor.isEmpty())
throw new OutOfCapacityException("No host flavor matches " + resources);
return provisionIndexes.stream()
- .map(i -> new ProvisionedHost("id-" + i, "host-" + i, hostFlavor.get(), "host-" + i + "-1", resources))
+ .map(i -> new ProvisionedHost("id-" + i, "host-" + i, hostFlavor.get(), "host-" + i + "-1", resources, osVersion))
.collect(Collectors.toList());
}