mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-07 18:14:10 +00:00
46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
"""
|
|
Example for a Spawner.pre_spawn_hook
|
|
create a directory for the user before the spawner starts
|
|
"""
|
|
|
|
# pylint: disable=import-error
|
|
import os
|
|
import shutil
|
|
|
|
from jupyter_client.localinterfaces import public_ips
|
|
|
|
|
|
def create_dir_hook(spawner):
|
|
"""Create directory"""
|
|
username = spawner.user.name # get the username
|
|
volume_path = os.path.join('/volumes/jupyterhub', username)
|
|
if not os.path.exists(volume_path):
|
|
os.mkdir(volume_path, 0o755)
|
|
# now do whatever you think your user needs
|
|
# ...
|
|
|
|
|
|
def clean_dir_hook(spawner):
|
|
"""Delete directory"""
|
|
username = spawner.user.name # get the username
|
|
temp_path = os.path.join('/volumes/jupyterhub', username, 'temp')
|
|
if os.path.exists(temp_path) and os.path.isdir(temp_path):
|
|
shutil.rmtree(temp_path)
|
|
|
|
|
|
# attach the hook functions to the spawner
|
|
# pylint: disable=undefined-variable
|
|
c.Spawner.pre_spawn_hook = create_dir_hook
|
|
c.Spawner.post_stop_hook = clean_dir_hook
|
|
|
|
# Use the DockerSpawner to serve your users' notebooks
|
|
c.JupyterHub.spawner_class = 'dockerspawner.DockerSpawner'
|
|
c.JupyterHub.hub_ip = public_ips()[0]
|
|
c.DockerSpawner.hub_ip_connect = public_ips()[0]
|
|
c.DockerSpawner.container_ip = "0.0.0.0"
|
|
|
|
# You can now mount the volume to the docker container as we've
|
|
# made sure the directory exists
|
|
# pylint: disable=bad-whitespace
|
|
c.DockerSpawner.volumes = {'/volumes/jupyterhub/{username}/': '/home/jovyan/work'}
|