diff options
author | Harald Musum <musum@verizonmedia.com> | 2019-11-06 23:18:14 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-06 23:18:14 +0100 |
commit | 41e3c5ea581f7dd7fad31d73b337e6530df3cf7b (patch) | |
tree | 56c8fe692287f7f2b51045a8ff2e802f83108182 | |
parent | 4187b1391bf383028a3ffd1480aacd70c1db287b (diff) | |
parent | 74662feab47f643ca0c7e4bba7cc131cc65d6360 (diff) |
Merge pull request #11230 from vespa-engine/bratseth/pass-requestedResources
Pass requestedResources through HostResources
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) { |