summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java7
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Nodelike.java23
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/IP.java4
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/EmptyProvisionServiceProvider.java3
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostResourcesCalculator.java3
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java6
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java3
-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/DockerProvisioningCompleteHostCalculatorTest.java5
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java3
10 files changed, 45 insertions, 15 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java
index 3b3711d1081..21f28f8385a 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java
@@ -30,7 +30,7 @@ import java.util.Set;
* @author bratseth
* @author mpolden
*/
-public final class Node {
+public final class Node implements Nodelike {
private final String hostname;
private final IP.Config ipConfig;
@@ -116,13 +116,14 @@ public final class Node {
*/
public String id() { return id; }
- /** Returns the parent hostname for this node if this node is a docker container or a VM (i.e. it has a parent host). Otherwise, empty **/
+ @Override
public Optional<String> parentHostname() { return parentHostname; }
public boolean hasParent(String hostname) {
return parentHostname.isPresent() && parentHostname.get().equals(hostname);
}
+ @Override
public NodeResources resources() { return flavor.resources(); }
/** Returns the flavor of this node */
@@ -134,7 +135,7 @@ public final class Node {
/** Returns the current state of this node (in the node state machine) */
public State state() { return state; }
- /** Returns the type of this node */
+ @Override
public NodeType type() { return type; }
/** Returns the current allocation of this, if any */
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Nodelike.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Nodelike.java
new file mode 100644
index 00000000000..a246d2a5cb8
--- /dev/null
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Nodelike.java
@@ -0,0 +1,23 @@
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.provision;
+
+import com.yahoo.config.provision.NodeResources;
+import com.yahoo.config.provision.NodeType;
+
+import java.util.Optional;
+
+/**
+ * The API of anything that can behave essentially like a node.
+ *
+ * @author bratseth
+ */
+public interface Nodelike {
+
+ NodeResources resources();
+
+ /** Returns the hostname oif the parent if this is a child node */
+ Optional<String> parentHostname();
+
+ NodeType type();
+
+}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/IP.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/IP.java
index 66061ad4e9f..321301a46a4 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/IP.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/IP.java
@@ -222,8 +222,8 @@ public class IP {
/**
* Find a free allocation in this pool. Note that the allocation is not final until it is assigned to a node
*
- * @param nodes A locked list of all nodes in the repository
- * @return An allocation from the pool, if any can be made
+ * @param nodes a locked list of all nodes in the repository
+ * @return an allocation from the pool, if any can be made
*/
public Optional<Allocation> findAllocation(LockedNodeList nodes, NameResolver resolver) {
var unusedAddresses = findUnused(nodes);
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/EmptyProvisionServiceProvider.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/EmptyProvisionServiceProvider.java
index 38dd9f29873..c91a43e9064 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/EmptyProvisionServiceProvider.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/EmptyProvisionServiceProvider.java
@@ -5,6 +5,7 @@ import com.yahoo.config.provision.Flavor;
import com.yahoo.config.provision.NodeResources;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeRepository;
+import com.yahoo.vespa.hosted.provision.Nodelike;
import com.yahoo.vespa.hosted.provision.lb.LoadBalancerService;
import java.util.Optional;
@@ -34,7 +35,7 @@ public class EmptyProvisionServiceProvider implements ProvisionServiceProvider {
private static class IdentityHostResourcesCalculator implements HostResourcesCalculator {
@Override
- public NodeResources realResourcesOf(Node node, NodeRepository repository) { return node.resources(); }
+ public NodeResources realResourcesOf(Nodelike node, NodeRepository repository) { return node.resources(); }
@Override
public NodeResources advertisedResourcesOf(Flavor flavor) { return flavor.resources(); }
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostResourcesCalculator.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostResourcesCalculator.java
index a071fb25da2..75847f0aa8c 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostResourcesCalculator.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostResourcesCalculator.java
@@ -5,6 +5,7 @@ import com.yahoo.config.provision.Flavor;
import com.yahoo.config.provision.NodeResources;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeRepository;
+import com.yahoo.vespa.hosted.provision.Nodelike;
/**
* Some cloud providers advertise that a certain amount of resources are available in a flavor
@@ -17,7 +18,7 @@ import com.yahoo.vespa.hosted.provision.NodeRepository;
public interface HostResourcesCalculator {
/** Returns the real resources available on a node */
- NodeResources realResourcesOf(Node node, NodeRepository nodeRepository);
+ NodeResources realResourcesOf(Nodelike node, NodeRepository nodeRepository);
/** Returns the advertised resources of a flavor */
NodeResources advertisedResourcesOf(Flavor flavor);
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java
index 4056b14d4b9..3a6359e6507 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java
@@ -145,10 +145,10 @@ public class NodePrioritizer {
resources(requestedNodes).with(host.flavor().resources().diskSpeed())
.with(host.flavor().resources().storageType()),
NodeType.tenant);
- NodeCandidate nodePri = candidateFrom(newNode, false, true);
- if ( ! nodePri.violatesSpares || isAllocatingForReplacement) {
+ NodeCandidate candidate = candidateFrom(newNode, false, true);
+ if ( ! candidate.violatesSpares || isAllocatingForReplacement) {
log.log(Level.FINE, "Adding new Docker node " + newNode);
- nodes.put(newNode, nodePri);
+ nodes.put(newNode, candidate);
}
}
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java
index 00d1cd84e4c..5b4b0b5bcb2 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java
@@ -13,6 +13,7 @@ import com.yahoo.config.provision.SystemName;
import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeRepository;
+import com.yahoo.vespa.hosted.provision.Nodelike;
import com.yahoo.vespa.hosted.provision.provisioning.HostResourcesCalculator;
import org.junit.Test;
@@ -382,7 +383,7 @@ public class AutoscalingTest {
}
@Override
- public NodeResources realResourcesOf(Node node, NodeRepository nodeRepository) {
+ public NodeResources realResourcesOf(Nodelike node, NodeRepository nodeRepository) {
return node.resources();
}
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 9e51fa37246..b81110e7a31 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
@@ -17,6 +17,7 @@ import com.yahoo.test.ManualClock;
import com.yahoo.transaction.Mutex;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeRepository;
+import com.yahoo.vespa.hosted.provision.Nodelike;
import com.yahoo.vespa.hosted.provision.applications.Application;
import com.yahoo.vespa.hosted.provision.node.Agent;
import com.yahoo.vespa.hosted.provision.node.IP;
@@ -205,7 +206,7 @@ class AutoscalingTester {
}
@Override
- public NodeResources realResourcesOf(Node node, NodeRepository nodeRepository) {
+ public NodeResources realResourcesOf(Nodelike node, NodeRepository nodeRepository) {
if (zone.getCloud().dynamicProvisioning())
return node.resources().withMemoryGb(node.resources().memoryGb() - 3);
else
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningCompleteHostCalculatorTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningCompleteHostCalculatorTest.java
index d8ff34d1244..535746e14e6 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningCompleteHostCalculatorTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningCompleteHostCalculatorTest.java
@@ -12,6 +12,7 @@ import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeRepository;
+import com.yahoo.vespa.hosted.provision.Nodelike;
import org.junit.Test;
import java.util.List;
@@ -81,8 +82,8 @@ public class DockerProvisioningCompleteHostCalculatorTest {
}
@Override
- public NodeResources realResourcesOf(Node node, NodeRepository nodeRepository) {
- if (node.parentHostname().isEmpty()) return node.flavor().resources(); // hosts use configured flavors
+ public NodeResources realResourcesOf(Nodelike node, NodeRepository nodeRepository) {
+ if (node.parentHostname().isEmpty()) return node.resources(); // hosts use configured flavors
return realResourcesOf(node.resources());
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
index 078b1d372df..8410a098809 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
@@ -31,6 +31,7 @@ import com.yahoo.vespa.flags.InMemoryFlagSource;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeList;
import com.yahoo.vespa.hosted.provision.NodeRepository;
+import com.yahoo.vespa.hosted.provision.Nodelike;
import com.yahoo.vespa.hosted.provision.lb.LoadBalancerServiceMock;
import com.yahoo.vespa.hosted.provision.node.Agent;
import com.yahoo.vespa.hosted.provision.node.IP;
@@ -689,7 +690,7 @@ public class ProvisioningTester {
}
@Override
- public NodeResources realResourcesOf(Node node, NodeRepository nodeRepository) {
+ public NodeResources realResourcesOf(Nodelike node, NodeRepository nodeRepository) {
NodeResources resources = node.resources();
if (node.type() == NodeType.host) return resources;
return resources.withMemoryGb(resources.memoryGb() - memoryTaxGb)