Browse Source

Attempted fix for minor JupyterHub compatibility issue.

William Krinsman 5 years ago
parent
commit
b750683f72

+ 1 - 0
jupyterlab/extension.py

@@ -211,6 +211,7 @@ def load_jupyter_server_extension(nbapp):
         page_config['hubPrefix'] = nbapp.hub_prefix
         page_config['hubHost'] = nbapp.hub_host
         page_config['hubUser'] = nbapp.user
+        page_config['hubServerName'] = nbapp.server_name
         api_token = os.getenv('JUPYTERHUB_API_TOKEN', '')
         page_config['token'] = api_token
 

+ 2 - 0
packages/application/src/frontend.ts

@@ -274,6 +274,8 @@ export namespace JupyterFrontEnd {
       readonly workspaces: string;
       readonly hubPrefix?: string;
       readonly hubHost?: string;
+      readonly hubUser?: string;
+      readonly hubServerName?: string;
     };
 
     /**

+ 3 - 1
packages/application/src/lab.ts

@@ -246,7 +246,9 @@ export namespace JupyterLab {
       tree: PageConfig.getOption('treeUrl'),
       workspaces: PageConfig.getOption('workspacesUrl'),
       hubHost: PageConfig.getOption('hubHost') || undefined,
-      hubPrefix: PageConfig.getOption('hubPrefix') || undefined
+      hubPrefix: PageConfig.getOption('hubPrefix') || undefined,
+      hubUser: PageConfig.getOption('hubUser') || undefined,
+      hubServerName: PageConfig.getOption('hubServerName') || undefined
     },
     directories: {
       appSettings: PageConfig.getOption('appSettingsDir'),

+ 11 - 4
packages/hub-extension/src/index.ts

@@ -42,6 +42,8 @@ function activateHubExtension(
 ): void {
   const hubHost = paths.urls.hubHost || '';
   const hubPrefix = paths.urls.hubPrefix || '';
+  const hubUser = paths.urls.hubUser || '';
+  const hubServerName = paths.urls.hubServerName || '';
   const baseUrl = paths.urls.base;
 
   // Bail if not running on JupyterHub.
@@ -56,11 +58,16 @@ function activateHubExtension(
 
   const { commands } = app;
 
-  // TODO: use /spawn/:user/:name
-  // but that requires jupyterhub 1.0
-  // and jupyterlab to pass username, servername to PageConfig
+  // requires jupyterhub 1.0
   const restartUrl =
-    hubHost + URLExt.join(hubPrefix, `spawn?next=${hubPrefix}home`);
+    hubHost +
+    URLExt.join(
+      hubPrefix,
+      `spawn`,
+      hubUser,
+      hubServerName,
+      `?next=${hubPrefix}home`
+    );
 
   commands.addCommand(CommandIDs.restart, {
     label: 'Restart Server',