X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/0a08f54c405dff0dbda5d6dbc14c1f1c6eeecd39..a9a4f7d43340f4f317fb041c93b9aa9c1b6e51c8:/services/api/app/models/container_request.rb?ds=sidebyside diff --git a/services/api/app/models/container_request.rb b/services/api/app/models/container_request.rb index 440c3ff355..bec3deb295 100644 --- a/services/api/app/models/container_request.rb +++ b/services/api/app/models/container_request.rb @@ -345,6 +345,22 @@ class ContainerRequest < ArvadosModel "[#{k}]=#{v.inspect} must be a positive integer") end end + if runtime_constraints['cuda'] + ['device_count'].each do |k| + v = runtime_constraints['cuda'][k] + if !v.is_a?(Integer) || v < 0 + errors.add(:runtime_constraints, + "[cuda.#{k}]=#{v.inspect} must be a positive or zero integer") + end + end + ['driver_version', 'hardware_capability'].each do |k| + v = runtime_constraints['cuda'][k] + if !v.is_a?(String) || (runtime_constraints['cuda']['device_count'] > 0 && v.to_f == 0.0) + errors.add(:runtime_constraints, + "[cuda.#{k}]=#{v.inspect} must be a string in format 'X.Y'") + end + end + end end end