From 74662feab47f643ca0c7e4bba7cc131cc65d6360 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Wed, 6 Nov 2019 22:04:24 +0100 Subject: Pass requestedResources through HostResources --- .../main/java/com/yahoo/vespa/model/HostPorts.java | 11 ++++++----- .../java/com/yahoo/vespa/model/HostResource.java | 23 ++++++++++++++-------- .../java/com/yahoo/vespa/model/HostSystem.java | 13 ++++++++---- 3 files changed, 30 insertions(+), 17 deletions(-) (limited to 'config-model') 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() { 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 { private Set clusterMemberships = new LinkedHashSet<>(); - // Empty for self-hosted Vespa. + // Empty for self-hosted private Optional flavor = Optional.empty(); + private Optional requestedResources = Optional.empty(); /** The current Vespa version running on this node, or empty if not known */ private final Optional version; @@ -61,6 +63,7 @@ public class HostResource implements Comparable { /** * 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 { /** * 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 allocateService(DeployLogger deployLogger, AbstractService service, int wantedPort) { ports().useLogger(deployLogger); @@ -91,16 +94,13 @@ public class HostResource implements Comparable { * 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 getServices() { return new ArrayList<>(services.values()); } @@ -116,6 +116,13 @@ public class HostResource implements Comparable { /** Returns the flavor of this resource. Empty for self-hosted Vespa. */ public Optional 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 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 { 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 { Set 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)); } -- cgit v1.2.3