diff options
author | Jon Bratseth <bratseth@gmail.com> | 2023-03-13 22:29:24 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2023-03-13 22:29:24 +0100 |
commit | 5f77df6c8812b3b99290948206eb5daf85d79052 (patch) | |
tree | 5f52759ad0fbe1a649d70c9a30dd05bb5f15c229 /node-repository | |
parent | 6cd6274057e5703ee813e43b94623d7ee08f4ad9 (diff) |
Allow ranges also if nodes have gpus
Diffstat (limited to 'node-repository')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java index 526e6ed5a4e..1eef438a64e 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java @@ -38,6 +38,7 @@ import java.util.List; import java.util.Optional; import java.util.logging.Level; import java.util.logging.Logger; +import java.util.stream.Stream; /** * Implementation of the host provisioner API for hosted Vespa, using the node repository to allocate nodes. @@ -85,11 +86,7 @@ public class NodeRepositoryProvisioner implements Provisioner { ProvisionLogger logger) { log.log(Level.FINE, "Received deploy prepare request for " + requested + " for application " + application + ", cluster " + cluster); - - if (cluster.group().isPresent()) throw new IllegalArgumentException("Node requests cannot specify a group"); - - nodeResourceLimits.ensureWithinAdvertisedLimits("Min", requested.minResources().nodeResources(), application, cluster); - nodeResourceLimits.ensureWithinAdvertisedLimits("Max", requested.maxResources().nodeResources(), application, cluster); + validate(application, cluster, requested); int groups; NodeResources resources; @@ -116,6 +113,16 @@ public class NodeRepositoryProvisioner implements Provisioner { requireCompatibleResources(resources, cluster)); } + private void validate(ApplicationId application, ClusterSpec cluster, Capacity requested) { + if (cluster.group().isPresent()) throw new IllegalArgumentException("Node requests cannot specify a group"); + + nodeResourceLimits.ensureWithinAdvertisedLimits("Min", requested.minResources().nodeResources(), application, cluster); + nodeResourceLimits.ensureWithinAdvertisedLimits("Max", requested.maxResources().nodeResources(), application, cluster); + + if ( ! requested.minResources().nodeResources().gpuResources().equals(requested.maxResources().nodeResources().gpuResources())) + throw new IllegalArgumentException(requested + " is invalid: Gpu capacity cannot have ranges"); + } + private NodeResources getNodeResources(ClusterSpec cluster, NodeResources nodeResources, ApplicationId applicationId) { return nodeResources.isUnspecified() ? capacityPolicies.defaultNodeResources(cluster, applicationId) |