Skip to main content

Library and Client for managing, benchmarking, and interacting with jupyterhub

Project description

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

xjhub-client is BSD-3 Licensed

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jhub-client-0.1.6.tar.gz (13.5 kB view details)

Uploaded Source

File details

Details for the file jhub-client-0.1.6.tar.gz.

File metadata

  • Download URL: jhub-client-0.1.6.tar.gz
  • Upload date:
  • Size: 13.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.8.12

File hashes

Hashes for jhub-client-0.1.6.tar.gz
Algorithm Hash digest
SHA256 e70657ee44f47c80a06df460ae978f986bf2d49a9e36566149f7c54919e3be2b
MD5 433aee7213f1ac63a4bedfa2b21e9cea
BLAKE2b-256 f223bf5f27a481a3d8ff3e77a5183a01907d5a965af345fdfe97e636296be10f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page