From 8c82a6217ad7c7f4a818ab28d3f4a387e1c78b4c Mon Sep 17 00:00:00 2001 From: Michael Barry Date: Fri, 28 May 2021 12:40:52 -0400 Subject: [PATCH 1/3] Enable hub-extension --- app/index.js | 4 +++- app/package.json | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/index.js b/app/index.js index 5b23f556..71877c59 100644 --- a/app/index.js +++ b/app/index.js @@ -125,7 +125,9 @@ async function main() { // so new terminals can be create from the menu require('@jupyterlab/terminal-extension'), require('@jupyterlab/theme-light-extension'), - require('@jupyterlab/theme-dark-extension') + require('@jupyterlab/theme-dark-extension'), + // Add the "Hub Control Panel" menu option when running in JupyterHub + require('@jupyterlab/hub-extension') ]; // The motivation here is to only load a specific set of plugins dependending on diff --git a/app/package.json b/app/package.json index b1bbca3b..b07047c7 100644 --- a/app/package.json +++ b/app/package.json @@ -34,6 +34,7 @@ "@jupyterlab/filebrowser-extension": "~3.1.0-alpha.8", "@jupyterlab/fileeditor": "~3.1.0-alpha.8", "@jupyterlab/fileeditor-extension": "~3.1.0-alpha.8", + "@jupyterlab/hub-extension": "~3.1.0-alpha.8", "@jupyterlab/javascript-extension": "~3.1.0-alpha.8", "@jupyterlab/json-extension": "~3.1.0-alpha.8", "@jupyterlab/mainmenu": "~3.1.0-alpha.8", From 7b95609d4b0a8ee027b82d053fbd1f2dccba64ae Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 28 May 2021 14:48:08 -0400 Subject: [PATCH 2/3] Update lock --- app/package.json | 2 ++ yarn.lock | 42 +++++++++++++++++++++++++++--------------- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/app/package.json b/app/package.json index b07047c7..222b088e 100644 --- a/app/package.json +++ b/app/package.json @@ -94,6 +94,7 @@ "@jupyterlab/docmanager-extension": "^3.1.0-alpha.8", "@jupyterlab/filebrowser-extension": "^3.1.0-alpha.8", "@jupyterlab/fileeditor-extension": "^3.1.0-alpha.8", + "@jupyterlab/hub-extension": "3.1.0-alpha.8", "@jupyterlab/javascript-extension": "^3.1.0-alpha.8", "@jupyterlab/json-extension": "^3.1.0-alpha.8", "@jupyterlab/mainmenu-extension": "^3.1.0-alpha.8", @@ -159,6 +160,7 @@ "@jupyterlab/docmanager-extension", "@jupyterlab/filebrowser-extension", "@jupyterlab/fileeditor-extension", + "@jupyterlab/hub-extension", "@jupyterlab/mainmenu-extension", "@jupyterlab/mathjax2-extension", "@jupyterlab/notebook-extension", diff --git a/yarn.lock b/yarn.lock index 2affc5d3..a95cd856 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1714,6 +1714,18 @@ "@lumino/widgets" "^1.19.0" react "^17.0.1" +"@jupyterlab/hub-extension@3.1.0-alpha.8": + version "3.1.0-alpha.8" + resolved "https://registry.yarnpkg.com/@jupyterlab/hub-extension/-/hub-extension-3.1.0-alpha.8.tgz#b3bbfea2072c33da0323277e2668f031ff8464e9" + integrity sha512-CZBrrbbFQwE8/zN4+FUwfhHrmT48O7GCNA8JTtopKQ90YTPDYRZIZnmWMPHTGSZFnKoFl5idG9hwTww+gWBnpA== + dependencies: + "@jupyterlab/application" "^3.1.0-alpha.8" + "@jupyterlab/apputils" "^3.1.0-alpha.8" + "@jupyterlab/coreutils" "^5.1.0-alpha.8" + "@jupyterlab/mainmenu" "^3.1.0-alpha.8" + "@jupyterlab/services" "^6.1.0-alpha.8" + "@jupyterlab/translation" "^3.1.0-alpha.8" + "@jupyterlab/javascript-extension@^3.1.0-alpha.8": version "3.1.0-alpha.8" resolved "https://registry.yarnpkg.com/@jupyterlab/javascript-extension/-/javascript-extension-3.1.0-alpha.8.tgz#4369eb648dfb8cb29cb6ce92620298e2e5da9371" @@ -3214,7 +3226,7 @@ integrity sha512-6RglhutqrGFMO1MNUXp95RBuYIuc8wTnMAV5MUhLmjTOy78ncwOw7RgeQ/HeymkKXRhZd0s2DNrM1rL7unk3MQ== "@retrolab/application-extension@file:packages/application-extension": - version "0.2.0" + version "0.3.0-alpha.2" dependencies: "@jupyterlab/application" "^3.1.0-alpha.8" "@jupyterlab/apputils" "^3.1.0-alpha.8" @@ -3228,11 +3240,11 @@ "@jupyterlab/settingregistry" "^3.1.0-alpha.8" "@jupyterlab/translation" "^3.1.0-alpha.8" "@lumino/widgets" "^1.23.0" - "@retrolab/application" "^0.2.0" - "@retrolab/ui-components" "^0.2.0" + "@retrolab/application" "^0.3.0-alpha.2" + "@retrolab/ui-components" "^0.3.0-alpha.2" "@retrolab/application@file:packages/application": - version "0.2.0" + version "0.3.0-alpha.2" dependencies: "@jupyterlab/application" "^3.1.0-alpha.8" "@jupyterlab/coreutils" "^5.1.0-alpha.8" @@ -3247,7 +3259,7 @@ "@lumino/widgets" "^1.23.0" "@retrolab/docmanager-extension@file:packages/docmanager-extension": - version "0.2.0" + version "0.3.0-alpha.2" dependencies: "@jupyterlab/application" "^3.1.0-alpha.8" "@jupyterlab/coreutils" "^5.1.0-alpha.8" @@ -3257,15 +3269,15 @@ "@lumino/algorithm" "^1.6.0" "@retrolab/help-extension@file:packages/help-extension": - version "0.2.0" + version "0.3.0-alpha.2" dependencies: "@jupyterlab/application" "^3.1.0-alpha.8" "@jupyterlab/apputils" "^3.1.0-alpha.8" "@jupyterlab/mainmenu" "^3.1.0-alpha.8" - "@retrolab/ui-components" "^0.2.0" + "@retrolab/ui-components" "^0.3.0-alpha.2" "@retrolab/lab-extension@file:packages/lab-extension": - version "0.2.0" + version "0.3.0-alpha.2" dependencies: "@jupyterlab/application" "^3.1.0-alpha.8" "@jupyterlab/apputils" "^3.1.0-alpha.8" @@ -3275,10 +3287,10 @@ "@jupyterlab/notebook" "^3.1.0-alpha.8" "@lumino/commands" "^1.15.0" "@lumino/disposable" "^1.7.0" - "@retrolab/ui-components" "^0.2.0" + "@retrolab/ui-components" "^0.3.0-alpha.2" "@retrolab/notebook-extension@file:packages/notebook-extension": - version "0.2.0" + version "0.3.0-alpha.2" dependencies: "@jupyterlab/application" "^3.1.0-alpha.8" "@jupyterlab/apputils" "^3.1.0-alpha.8" @@ -3286,10 +3298,10 @@ "@jupyterlab/notebook" "^3.1.0-alpha.8" "@lumino/polling" "^1.6.0" "@lumino/widgets" "^1.23.0" - "@retrolab/application" "^0.2.0" + "@retrolab/application" "^0.3.0-alpha.2" "@retrolab/terminal-extension@file:packages/terminal-extension": - version "0.2.0" + version "0.3.0-alpha.2" dependencies: "@jupyterlab/application" "^3.1.0-alpha.8" "@jupyterlab/coreutils" "^5.1.0-alpha.8" @@ -3297,7 +3309,7 @@ "@lumino/algorithm" "^1.6.0" "@retrolab/tree-extension@file:packages/tree-extension": - version "0.2.0" + version "0.3.0-alpha.2" dependencies: "@jupyterlab/application" "^3.1.0-alpha.8" "@jupyterlab/apputils" "^3.1.0-alpha.8" @@ -3313,10 +3325,10 @@ "@lumino/algorithm" "^1.6.0" "@lumino/commands" "^1.15.0" "@lumino/widgets" "^1.23.0" - "@retrolab/application" "^0.2.0" + "@retrolab/application" "^0.3.0-alpha.2" "@retrolab/ui-components@file:packages/ui-components": - version "0.2.0" + version "0.3.0-alpha.2" dependencies: "@jupyterlab/ui-components" "^3.1.0-alpha.8" react "^17.0.1" From e834c7f5b3c37ea6cd2e6514848ef6e487f6fd50 Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 28 May 2021 22:01:53 -0400 Subject: [PATCH 3/3] Add jupyetrhub configuration to page_config --- retrolab/app.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/retrolab/app.py b/retrolab/app.py index 8b7e2fba..ac9d0ad2 100644 --- a/retrolab/app.py +++ b/retrolab/app.py @@ -42,6 +42,19 @@ def get_page_config(self): "retroLogo": app.retro_logo, } + if 'hub_prefix' in app.serverapp.tornado_settings: + tornado_settings = app.serverapp.tornado_settings + hub_prefix = tornado_settings['hub_prefix'] + page_config['hubPrefix'] = hub_prefix + page_config['hubHost'] = tornado_settings['hub_host'] + page_config['hubUser'] = tornado_settings['user'] + page_config['shareUrl'] = ujoin(hub_prefix, 'user-redirect') + # Assume the server_name property indicates running JupyterHub 1.0. + if hasattr(app.serverapp, 'server_name'): + page_config['hubServerName'] = app.serverapp.server_name + api_token = os.getenv('JUPYTERHUB_API_TOKEN', '') + page_config['token'] = api_token + mathjax_config = self.settings.get("mathjax_config", "TeX-AMS_HTML-full,Safe") # TODO Remove CDN usage. mathjax_url = self.settings.get(