Skip to main content

JupyterHub Client

PyPI

Automation of JupyterHub

Install

pip install jhub-client

Command Line Usage

Below are some example use cases of the tool. Note that with an admin api token you can impersonate users and create temporary users. Service api tokens do not have an associated user therefore must run as existing users or temporary users.

Set the api token used for jhub-client.

export JUPYTERHUB_API_TOKEN=<api-token>

Optionally basic authentication can be used instead of token based (not recommended but needed in some use cases). In which case username and password are required.

export JUPYTERHUB_USERNAME=<username>
export JUPYTERHUB_PASSWORD=<password>

Token

$ jhubctl token --help
usage: __main__.py token [-h] [--hub HUB] [--name NAME]

optional arguments:
  -h, --help   show this help message and exit
  --hub HUB    url for running jupyterhub cluster
  --name NAME  name to give to jupyterhub api token

A simple command line utility can be used to create a token. This only supports basic authentication (username and password) login to the jupyterhub cluster.

Run

$ jhubctl run --help
usage: __main__.py run [-h] -n NOTEBOOK [--auth-type {token,basic}] [--hub HUB] [-u USERNAME]
                       [--user-options USER_OPTIONS] [--temporary-user] [-d] [--stop-server] [--validate]
                       [--kernel-spec KERNEL_SPEC] [--output-filename OUTPUT_FILENAME]

optional arguments:
  -h, --help            show this help message and exit
  -n NOTEBOOK, --notebook NOTEBOOK
                        notebook to run
  --auth-type {token,basic}
                        jupyterhub authentication type to use with default of token based
  --hub HUB             url for running jupyterhub cluster with default of 'http://localhost:8000'
  -u USERNAME, --username USERNAME
                        username to run notebook as
  --user-options USER_OPTIONS
                        json object representing user server options
  --temporary-user      create user temporarily if does not exist
  -d, --daemonize       run notebook asyncronously
  --stop-server         stop server after completion of notebook
  --validate            validate notebook output matches
  --kernel-spec KERNEL_SPEC
                        kernel spec to launch is not specified will use default
  --output-filename OUTPUT_FILENAME
                        output filename for results of running notebook

Run notebook as given token user syncronously

You can run a given notebook as a pre-existing user syncronously. The api token either has to be for the given user or an admin token.

jhubctl --verbose run --notebook <notebook> --hub <hub_url>

Run notebook as given token user syncronously and validate notebook output matches

You can run a given notebook as a pre-existing user syncronously. The api token either has to be for the given user or an admin token.

jhubctl run --notebook <notebook> --hub <hub_url> --validate

Run notebook as given token user asyncronously and shutdown server after completion

You can run a given notebook as a pre-existing user asyncronously and stop server after completion. The api token either has to be for the given user or an admin token.

jhubctl run --notebook <notebook> --hub <hub_url> --daemonize --stop-server

Run notebook as given token user with user options

While this is an advanced use case, it is often times encountered with kubernetes jupyerhub clusters where you may want to select a given profile e.g. small, medium, gpu jupyterlab session. For these clusters you must supply --user-options='{"profile": 0}' where 0 is replaced with the index of the profile you would like to choose. It is possible for other more customized jupyterhub clusters that different options must be used.

jhubctl run --notebook <notebook> --hub <hub_url> --user-options='{"profile": 1}'

Run notebook as given token user with user options

You can run a given notebook with any available kernel spec.

jhubctl run --notebook <notebook> --hub <hub_url> --kernel-spec=python3

Run a given notebook as a temporary user

Additionally you can temporarily create a user user-<uuid> or supply the temporary user's username. The username will be deleted upon completion. The api token requires admin permissions.

jhubctl run --temporary-user --notebook <notebook> --hub <hub_url> [--username <username>]

Testing

Bring up test jupyterhub cluster

cd tests/assets
docker-compose up --build

Run unit tests

pytest

FAQ

Creating an API Token

Login to the given jupyterhub cluster

qhub login

Access the hub control page. The url will be <hub_url>/hub/home.

qhub home

Click on Token in top left corner and request new api token. This token will have the permissions of the user. Make sure to set the environment variable JUPYTERHUB_API_TOKEN to the value of the given token.

qhub token

If you want to add a service token instead edit the jupyterhub configuration.

c.JupyterHub.services = [
 {
        'name': '<my-service-name>',
        'api_token': '<my-super-secret-long-token>',
        'oauth_no_confirm': True,
        'admin': True
    }
]

Code of Conduct

To guarantee a welcoming and friendly community, we require contributors to follow our Code of Conduct.

License

jhub-client is BSD-3 Licensed

Metadata

Release files for jhub-client 0.1.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jhub-client 0.1.7
File Size Uploaded
jhub-client-0.1.7.tar.gz 13.5 kB Details

Release files / jhub-client-0.1.7.tar.gz

Download URL jhub-client-0.1.7.tar.gz
Size 13.5 kB
Tags Source
SHA-256 checksum
How to use checksums
758ead99978403fa2379599df124a34c8e46bfe74a7d3dffa9c67ee40af6c6e4
BLAKE2b-256 checksum
How to use checksums
f12de654c774e332a256147bd2effd4d2177ba38616e14c67939d84021336f72
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.8.13

Release history Release notifications | RSS feed

This release

0.1.7 This release

1 release file

0.1.6

1 release file

0.1.5

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page