diff --git a/lib/galaxy/tool_util/deps/requirements.py b/lib/galaxy/tool_util/deps/requirements.py index d2fbb249aa63..bfb02e0ea606 100644 --- a/lib/galaxy/tool_util/deps/requirements.py +++ b/lib/galaxy/tool_util/deps/requirements.py @@ -243,6 +243,7 @@ def __str__(self) -> str: "gpu_memory_min", "cuda_device_count_min", "cuda_device_count_max", + "shm_size", ] VALID_RESOURCE_TYPES = get_args(ResourceType) @@ -287,6 +288,7 @@ def resource_requirements_from_list(requirements: Iterable[Dict[str, Any]]) -> L "gpuMemoryMin": "gpu_memory_min", "cudaDeviceCountMin": "cuda_device_count_min", "cudaDeviceCountMax": "cuda_device_count_max", + "ShmSize": "shm_size", } rr = [] for r in requirements: diff --git a/lib/galaxy/tool_util/xsd/galaxy.xsd b/lib/galaxy/tool_util/xsd/galaxy.xsd index 27cafa7f3bc2..475edb95532a 100644 --- a/lib/galaxy/tool_util/xsd/galaxy.xsd +++ b/lib/galaxy/tool_util/xsd/galaxy.xsd @@ -7269,6 +7269,11 @@ and ``bibtex`` are the only supported options. Maximum CUDA device count, if runtime allows it (not yet implemented in Galaxy). + + + `. must be greater than 0. Unit is optional and can be `b` (bytes), `k` (kilobytes), `m` (megabytes), or `g` (gigabytes). If you omit the unit, the default is bytes. If you omit the size entirely, the value is `64m`.]]> + + diff --git a/test/functional/tools/resource_requirements.xml b/test/functional/tools/resource_requirements.xml index 96a5641f7203..65a07fd785c9 100644 --- a/test/functional/tools/resource_requirements.xml +++ b/test/functional/tools/resource_requirements.xml @@ -11,6 +11,7 @@ 4042 1 2 + 67108864 $output diff --git a/test/unit/tool_util/test_parsing.py b/test/unit/tool_util/test_parsing.py index 25575348636a..4b5a2202d96d 100644 --- a/test/unit/tool_util/test_parsing.py +++ b/test/unit/tool_util/test_parsing.py @@ -36,6 +36,7 @@ 4042 1 2 + 67108864 @@ -140,6 +141,8 @@ cuda_device_count_min: 1 - type: resource cuda_device_count_max: 2 + - type: resource + shm_size: 67108864 containers: - type: docker identifier: "awesome/bowtie" @@ -331,6 +334,7 @@ def test_requirements(self): assert resource_requirements[3].resource_type == "gpu_memory_min" assert resource_requirements[4].resource_type == "cuda_device_count_min" assert resource_requirements[5].resource_type == "cuda_device_count_max" + assert resource_requirements[6].resource_type == "shm_size" assert not resource_requirements[0].runtime_required def test_outputs(self): @@ -506,7 +510,7 @@ def test_requirements(self): "resolve_dependencies": False, "shell": "/bin/sh", } - assert len(resource_requirements) == 6 + assert len(resource_requirements) == 7 assert resource_requirements[0].to_dict() == {"resource_type": "cores_min", "value_or_expression": 1} assert resource_requirements[1].to_dict() == {"resource_type": "cuda_version_min", "value_or_expression": 10.2} assert resource_requirements[2].to_dict() == { @@ -522,6 +526,10 @@ def test_requirements(self): "resource_type": "cuda_device_count_max", "value_or_expression": 2, } + assert resource_requirements[6].to_dict() == { + "resource_type": "shm_size", + "value_or_expression": 67108864, + } def test_outputs(self): outputs, output_collections = self._tool_source.parse_outputs(object())