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>

Run

$ jhubctl --help
usage: __main__.py run [-h] -n NOTEBOOK [--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
  --hub HUB             url for running jupyterhub cluster
  -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.2.tar.gz (12.0 kB view details)

Uploaded Source

File details

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

File metadata

  • Download URL: jhub-client-0.1.2.tar.gz
  • Upload date:
  • Size: 12.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.56.1 CPython/3.8.7

File hashes

Hashes for jhub-client-0.1.2.tar.gz
Algorithm Hash digest
SHA256 3414eb1082fbacecd9e718d315c54815138e1efd5ec6716043cb105a38271297
MD5 1fa75bb770dc51b6eac193218f1dd0e1
BLAKE2b-256 9a6e1662c785454ab1795d2110c9d75d1594c3e25f7f800b3959713450fdde4a

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