summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2019-11-06 23:18:14 +0100
committerGitHub <noreply@github.com>2019-11-06 23:18:14 +0100
commit41e3c5ea581f7dd7fad31d73b337e6530df3cf7b (patch)
tree56c8fe692287f7f2b51045a8ff2e802f83108182
parent4187b1391bf383028a3ffd1480aacd70c1db287b (diff)
parent74662feab47f643ca0c7e4bba7cc131cc65d6360 (diff)
Merge pull request #11230 from vespa-engine/bratseth/pass-requestedResources
Pass requestedResources through HostResources
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/HostPorts.java11
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/HostResource.java23
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java13
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java4
4 files changed, 32 insertions, 19 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/HostPorts.java b/config-model/src/main/java/com/yahoo/vespa/model/HostPorts.java
index 5f55c78c1e4..51b41e19a27 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/HostPorts.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/HostPorts.java
@@ -15,6 +15,7 @@ import java.util.logging.Level;
/**
* Allocator for network ports on a host
+ *
* @author arnej
*/
public class HostPorts {
@@ -44,13 +45,13 @@ public class HostPorts {
/**
* Get the allocated network ports.
* Should be called after allocation is complete and flushPortReservations has been called
- **/
+ */
public Optional<NetworkPorts> networkPorts() { return networkPortsList; }
/**
* Add port allocation from previous deployments.
* Call this before starting port allocations, to re-use existing ports where possible
- **/
+ */
public void addNetworkPorts(NetworkPorts ports) {
this.networkPortsList = Optional.of(ports);
this.portFinder = new PortFinder(ports.allocations());
@@ -58,7 +59,7 @@ public class HostPorts {
/**
* Setup logging in order to send warnings back to the user.
- **/
+ */
public void useLogger(DeployLogger logger) {
this.deployLogger = logger;
}
@@ -68,8 +69,8 @@ public class HostPorts {
* or 0 if there is no range of that length available.
* TODO: remove this API
*
- * @param numPorts The length of the desired port range.
- * @return The baseport of the first available range, or 0 if no range is available.
+ * @param numPorts the length of the desired port range.
+ * @return the baseport of the first available range, or 0 if no range is available.
*/
int nextAvailableBaseport(int numPorts) {
int range = 0;
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 aa59f9434f0..a712d5d8e69 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
@@ -6,6 +6,7 @@ import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.api.HostInfo;
import com.yahoo.config.provision.ClusterMembership;
import com.yahoo.config.provision.Flavor;
+import com.yahoo.config.provision.NodeResources;
import java.util.ArrayList;
import java.util.Collection;
@@ -38,8 +39,9 @@ public class HostResource implements Comparable<HostResource> {
private Set<ClusterMembership> clusterMemberships = new LinkedHashSet<>();
- // Empty for self-hosted Vespa.
+ // Empty for self-hosted
private Optional<Flavor> flavor = Optional.empty();
+ private Optional<NodeResources> requestedResources = Optional.empty();
/** The current Vespa version running on this node, or empty if not known */
private final Optional<Version> version;
@@ -61,6 +63,7 @@ public class HostResource implements Comparable<HostResource> {
/**
* Return the currently bounded {@link com.yahoo.vespa.model.Host}.
+ *
* @return the {@link com.yahoo.vespa.model.Host} if bound, null if not.
*/
public Host getHost() { return host; }
@@ -71,9 +74,9 @@ public class HostResource implements Comparable<HostResource> {
/**
* Adds service and allocates resources for it.
*
- * @param service The Service to allocate resources for
+ * @param service the Service to allocate resources for
* @param wantedPort the wanted port for this service
- * @return The allocated ports for the Service.
+ * @return the allocated ports for the Service.
*/
List<Integer> allocateService(DeployLogger deployLogger, AbstractService service, int wantedPort) {
ports().useLogger(deployLogger);
@@ -91,16 +94,13 @@ public class HostResource implements Comparable<HostResource> {
* or null if the name does not match any service.
*
* @param sentinelName the sentinel name of the service we want to return
- * @return The service with the given sentinel name
+ * @return the service with the given sentinel name
*/
public Service getService(String sentinelName) {
return services.get(sentinelName);
}
- /**
- * Returns a List of all services running on this Host.
- * @return a List of all services running on this Host.
- */
+ /** Returns a List of all services running on this Host. */
public List<Service> getServices() {
return new ArrayList<>(services.values());
}
@@ -116,6 +116,13 @@ public class HostResource implements Comparable<HostResource> {
/** Returns the flavor of this resource. Empty for self-hosted Vespa. */
public Optional<Flavor> getFlavor() { return flavor; }
+ public void setRequestedResources(NodeResources resources) {
+ this.requestedResources = Optional.of(resources);
+ }
+
+ /** Returns the ressource requested which led to these host resources being allocated, if known */
+ public Optional<NodeResources> getRequestedResources() { return requestedResources; }
+
public void addClusterMembership(ClusterMembership clusterMembership) {
if (clusterMembership != null)
clusterMemberships.add(clusterMembership);
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 e579f736136..6242426548b 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
@@ -127,9 +127,9 @@ public class HostSystem extends AbstractConfigProducer<Host> {
private HostResource addNewHost(HostSpec hostSpec) {
Host host = Host.createHost(this, hostSpec.hostname());
- HostResource hostResource = new HostResource(host,
- hostSpec.version());
+ HostResource hostResource = new HostResource(host, hostSpec.version());
hostResource.setFlavor(hostSpec.flavor());
+ hostSpec.requestedResources().ifPresent(resources -> hostResource.setRequestedResources(resources));
hostSpec.membership().ifPresent(hostResource::addClusterMembership);
hostSpec.networkPorts().ifPresent(np -> hostResource.ports().addNetworkPorts(np));
hostname2host.put(host.getHostname(), hostResource);
@@ -192,8 +192,13 @@ 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.version(), host.ports().networkPorts()))
+ .map(host -> new HostSpec(host.getHostname(),
+ Collections.emptyList(),
+ host.getFlavor(),
+ host.primaryClusterMembership(),
+ host.version(),
+ host.ports().networkPorts(),
+ host.getRequestedResources()))
.collect(Collectors.toCollection(LinkedHashSet::new));
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java
index 17297fa357d..7a6fd1896c5 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java
@@ -64,8 +64,8 @@ public interface NodeSpec {
/** Returns the resources requested by this or empty if none are explicitly requested */
Optional<NodeResources> resources();
- static NodeSpec from(int nodeCount, NodeResources flavor, boolean exclusive, boolean canFail) {
- return new CountNodeSpec(nodeCount, flavor, exclusive, canFail);
+ static NodeSpec from(int nodeCount, NodeResources resources, boolean exclusive, boolean canFail) {
+ return new CountNodeSpec(nodeCount, resources, exclusive, canFail);
}
static NodeSpec from(NodeType type) {