aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java10
1 files changed, 9 insertions, 1 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 a2b479a6070..1022981f445 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
@@ -111,7 +111,8 @@ public class NodeRepositoryProvisioner implements Provisioner {
resources = getNodeResources(cluster, requested.minResources().nodeResources(), application, true);
nodeSpec = NodeSpec.from(requested.type(), nodeRepository.zone().cloud().account());
}
- return asSortedHosts(preparer.prepare(application, cluster, nodeSpec, groups), resources);
+ return asSortedHosts(preparer.prepare(application, cluster, nodeSpec, groups),
+ requireCompatibleResources(resources, cluster));
}
private NodeResources getNodeResources(ClusterSpec cluster, NodeResources nodeResources, ApplicationId applicationId, boolean exclusive) {
@@ -257,6 +258,13 @@ public class NodeRepositoryProvisioner implements Provisioner {
}
}
+ private static NodeResources requireCompatibleResources(NodeResources nodeResources, ClusterSpec cluster) {
+ if (cluster.type() != ClusterSpec.Type.container && !nodeResources.gpuResources().isDefault()) {
+ throw new IllegalArgumentException(cluster.id() + " of type " + cluster.type() + " does not support GPU resources");
+ }
+ return nodeResources;
+ }
+
private IllegalArgumentException newNoAllocationPossible(ClusterSpec spec, Limits limits) {
StringBuilder message = new StringBuilder("No allocation possible within ").append(limits);