mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-10 03:23:04 +00:00
add spawn-form example
This commit is contained in:
46
examples/spawn-form/jupyterhub_config.py
Normal file
46
examples/spawn-form/jupyterhub_config.py
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
"""
|
||||||
|
Example JuptyerHub config allowing users to specify environment variables and notebook-server args
|
||||||
|
"""
|
||||||
|
import shlex
|
||||||
|
|
||||||
|
from jupyterhub.spawner import LocalProcessSpawner
|
||||||
|
|
||||||
|
class DemoFormSpawner(LocalProcessSpawner):
|
||||||
|
def _options_form_default(self):
|
||||||
|
default_env = "YOURNAME=%s\n" % self.user.name
|
||||||
|
return """
|
||||||
|
<label for="args">Extra notebook CLI arguments</label>
|
||||||
|
<input name="args" placeholder="e.g. --debug"></input>
|
||||||
|
<label for="env">Environment variables (one per line)</label>
|
||||||
|
<textarea name="env">{env}</textarea>
|
||||||
|
""".format(env=default_env)
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
c.JupyterHub.spawner_class = DemoFormSpawner
|
Reference in New Issue
Block a user