From a812b1a29c2ad6768c066ae5b12fa6c2503dfa33 Mon Sep 17 00:00:00 2001 From: Stefano Alberto Russo <stefano.russo@gmail.com> Date: Tue, 5 May 2020 01:14:13 +0200 Subject: [PATCH] Added support for bindings in Singularity sys conf. --- .../webapp/code/rosetta/core_app/computing_managers.py | 7 ++++++- services/webapp/code/rosetta/core_app/models.py | 10 ++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/services/webapp/code/rosetta/core_app/computing_managers.py b/services/webapp/code/rosetta/core_app/computing_managers.py index 6dda222..87f64d3 100644 --- a/services/webapp/code/rosetta/core_app/computing_managers.py +++ b/services/webapp/code/rosetta/core_app/computing_managers.py @@ -332,12 +332,17 @@ class SlurmComputingManager(ComputingManager): else: authstring = '' + bindings = task.computing.get_conf_param('bindings', from_sys_only=True ) + if not bindings: + bindings = '' + else: + bindings = '-B {}'.format(bindings) run_command = 'ssh -i {} -4 -o StrictHostKeyChecking=no {}@{} '.format(user_keys.private_key_file, user, host) run_command += '\'bash -c "echo \\"#!/bin/bash\nwget {}/api/v1/base/agent/?task_uuid={} -O \$HOME/agent_{}.py &> \$HOME/{}.log && export BASE_PORT=\\\\\\$(python \$HOME/agent_{}.py 2> \$HOME/{}.log) && '.format(webapp_conn_string, task.uuid, task.uuid, task.uuid, task.uuid, task.uuid) run_command += 'export SINGULARITY_NOHTTPS=true && export SINGULARITYENV_BASE_PORT=\\\\\\$BASE_PORT && {} '.format(authstring) - run_command += 'exec nohup singularity run --pid --writable-tmpfs --containall --cleanenv ' + run_command += 'exec nohup singularity run {} --pid --writable-tmpfs --containall --cleanenv '.format(bindings) # Double to escape for python six for shell (double times three as \\\ escapes a single slash in shell) diff --git a/services/webapp/code/rosetta/core_app/models.py b/services/webapp/code/rosetta/core_app/models.py index 142f0cb..8ee8a36 100644 --- a/services/webapp/code/rosetta/core_app/models.py +++ b/services/webapp/code/rosetta/core_app/models.py @@ -152,11 +152,17 @@ class Computing(models.Model): self._user_conf_data = None - def get_conf_param(self, param): + def get_conf_param(self, param, from_sys_only=False): try: param_value = self.sys_conf_data[param] except (TypeError, KeyError): - param_value = self.user_conf_data[param] + if not from_sys_only: + try: + param_value = self.user_conf_data[param] + except (TypeError, KeyError): + return None + else: + return None return param_value -- GitLab