aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2022-11-25 11:36:33 +0100
committerMartin Polden <mpolden@mpolden.no>2022-11-25 11:36:33 +0100
commit0c62a56577e41fdbd6ddd38086aa38ed1c09e928 (patch)
treeac0fb9637163ae6f1fbf4f73a9f8cecb5b18da80
parent59120a5bcb6f0e215b6486f7da6399f9f96630b6 (diff)
Only allow GPU resources for container clusters
-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);