Общий том Jupyterhub/singleuser

Я пытаюсь настроить сервер Jupyterhub в Ubuntu 16.04, во многом по аналогии с https://github.com/minrk/jupyterhub-demo.

Я изменил jupyterhub_config.py для поддержки постоянного хранения, используя советы, приведенные здесь https://github.com/jupyterhub/dockerspawner:

notebook_dir = os.environ.get('DOCKER_NOTEBOOK_DIR') or '/home/jovyan/work'
c.DockerSpawner.notebook_dir = notebook_dir
c.DockerSpawner.volumes = { 'jupyterhub-user-{username}': notebook_dir }

Тем не менее, я хотел бы добавить общий "командный" том для групп пользователей. У меня есть словарь с именами пользователей (ключами) и именами команд (значениями) для сопоставления пользователей с командами.

В идеале я бы сказал что-то вроде:

c.DockerSpawner.volumes = { 
    'jupyterhub-user-{username}': notebook_dir, 
    'jupyterhub-team-{teamname}': os.path.join(notebook_dir, 'shared' 
}

Но я не имею ни малейшего понятия о том, как передать другое сопоставление {имя} в Dockerspawner.

Я пытался возиться с этим, но пока безрезультатно:

c.DockerSpawner. ...
extra_create_kwargs = Dict(config=True, help="Additional args to pass for container create")
extra_start_kwargs = Dict(config=True, help="Additional args to pass for container start")
extra_host_config = Dict(config=True, help="Additional args to create_host_config for container create")

Есть идеи?

PS: Этот вопрос несколько связан с общими, доступными для записи папками в jupyterhub.

1 ответ

Решение

Из ответа @minrk вы получили на GitHub через пару недель после публикации здесь.

Для более сложной логики, не представленной в объектах конфигурации по умолчанию, вы также можете создать подкласс DockerSpawner в вашем файле конфигурации:

from dockerspawner import DockerSpawner
class MyDockerSpawner(DockerSpawner):
    def start(self):
        # username is self.user.name
        team = 'myteam'
        # add team volume to volumes
        self.volumes['jupyterhub-team-{}'.format(team) = '/home/shared'
        return super().start()

c.JupyterHub.spawner_class = MyDockerSpawner
Другие вопросы по тегам