diff options
author | Martin Polden <mpolden@mpolden.no> | 2022-11-25 11:36:33 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2022-11-25 11:36:33 +0100 |
commit | 0c62a56577e41fdbd6ddd38086aa38ed1c09e928 (patch) | |
tree | ac0fb9637163ae6f1fbf4f73a9f8cecb5b18da80 | |
parent | 59120a5bcb6f0e215b6486f7da6399f9f96630b6 (diff) |
Only allow GPU resources for container clusters
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java | 10 |
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); |