spawner/src/glicid_spawner/spawner.py

51 lines
1.5 KiB
Python

"""GLiCID spawner module."""
import shlex
from batchspawner import SlurmSpawner
class GlicidSpawner(SlurmSpawner):
"""Glicid SLURM Spawner."""
def _options_form_default(self):
default_env = f'YOURNAME={self.user.name}\n'
return f"""
<div class="form-group">
<label for="args">Extra notebook CLI arguments</label>
<input name="args" class="form-control"
placeholder="e.g. --debug"></input>
</div>
<div class="form-group">
<label for="env">Environment variables (one per line)</label>
<textarea class="form-control" name="env">{default_env}</textarea>
</div>
"""
def options_from_form(self, formdata):
options = {}
options['env'] = env = {}
env_lines = formdata.get('env', [''])
for line in env_lines[0].splitlines():
if line:
key, value = line.split('=', 1)
env[key.strip()] = value.strip()
arg_s = formdata.get('args', [''])[0].strip()
if arg_s:
options['argv'] = shlex.split(arg_s)
return options
def get_args(self):
"""Return arguments to pass to the notebook server"""
argv = super().get_args()
if self.user_options.get('argv'):
argv.extend(self.user_options['argv'])
return argv
def get_env(self):
env = super().get_env()
if self.user_options.get('env'):
env.update(self.user_options['env'])
return env