-
Notifications
You must be signed in to change notification settings - Fork 3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Migrate start-notebook & start-singleuser to python (#2006)
* Migrate start-notebook.sh to bash Based on > Stop using bash, haha 👍 from #1532. If there's more apetite for this, I'll try to migrate `start.sh` and `start-singleuser.sh` as well - I think they should all be merged together. We can remove the `.sh` suffixes for accuracy, and keep symlinks in so old config still works. Since the shebang is what is used to launch the correct interpreter, the `.sh` doesn't matter. Will help fix #1532, as I believe all those things are going to be easier to do from python than bash * Rename start-notebook.sh to start-notebook * Cleanup start-notebook a little * Fix typo * Migrate start-singleuser as well * Remove unused import * Run symlink commands as root * Combine repetitive RUN commands * Remove multiple args to env -u can not be set by shebang, we must set the env var instead * Fix conditional inversion Co-authored-by: Ayaz Salikhov <[email protected]> * Fix how start-singleuser is exec'd * Actually call jupyterhub-singleuser in start-singleuser * Pass through any additional args we get * Put .py suffix on the start-* scripts * Add .sh shims for the start-* scripts * Document start-notebook.sh and start-singleuser.sh * Partially test start-notebook.sh * Reflow warning docs Co-authored-by: Ayaz Salikhov <[email protected]> --------- Co-authored-by: Ayaz Salikhov <[email protected]>
- Loading branch information
1 parent
4c0c0aa
commit bceaead
Showing
20 changed files
with
117 additions
and
70 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,4 +2,4 @@ | |
|
||
# Start up the notebook instance. | ||
|
||
exec start-notebook.sh "$@" | ||
exec start-notebook.py "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
#!/usr/bin/env python | ||
# Copyright (c) Jupyter Development Team. | ||
# Distributed under the terms of the Modified BSD License. | ||
import os | ||
import shlex | ||
import sys | ||
|
||
# If we are in a JupyterHub, we pass on to `start-singleuser.py` instead so it does the right thing | ||
if "JUPYTERHUB_API_TOKEN" in os.environ: | ||
print( | ||
"WARNING: using start-singleuser.py instead of start-notebook.py to start a server associated with JupyterHub." | ||
) | ||
command = ["/usr/local/bin/start-singleuser.py"] + sys.argv[1:] | ||
os.execvp(command[0], command) | ||
|
||
|
||
# Wrap everything in start.sh, no matter what | ||
command = ["/usr/local/bin/start.sh"] | ||
|
||
# If we want to survive restarts, tell that to start.sh | ||
if os.environ.get("RESTARTABLE") == "yes": | ||
command.append("run-one-constantly") | ||
|
||
# We always launch a jupyter subcommand from this script | ||
command.append("jupyter") | ||
|
||
# Launch the configured subcommand. Note that this should be a single string, so we don't split it | ||
# We default to lab | ||
jupyter_command = os.environ.get("DOCKER_STACKS_JUPYTER_CMD", "lab") | ||
command.append(jupyter_command) | ||
|
||
# Append any optional NOTEBOOK_ARGS we were passed in. This is supposed to be multiple args passed | ||
# on to the notebook command, so we split it correctly with shlex | ||
if "NOTEBOOK_ARGS" in os.environ: | ||
command += shlex.split(os.environ["NOTEBOOK_ARGS"]) | ||
|
||
# Pass through any other args we were passed on the commandline | ||
command += sys.argv[1:] | ||
|
||
# Execute the command! | ||
os.execvp(command[0], command) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,22 +1,5 @@ | ||
#!/bin/bash | ||
# Copyright (c) Jupyter Development Team. | ||
# Distributed under the terms of the Modified BSD License. | ||
# Shim to emit warning and call start-notebook.py | ||
echo "WARNING: Use start-notebook.py instead" | ||
|
||
set -e | ||
|
||
# The Jupyter command to launch | ||
# JupyterLab by default | ||
DOCKER_STACKS_JUPYTER_CMD="${DOCKER_STACKS_JUPYTER_CMD:=lab}" | ||
|
||
if [[ -n "${JUPYTERHUB_API_TOKEN}" ]]; then | ||
echo "WARNING: using start-singleuser.sh instead of start-notebook.sh to start a server associated with JupyterHub." | ||
exec /usr/local/bin/start-singleuser.sh "$@" | ||
fi | ||
|
||
wrapper="" | ||
if [[ "${RESTARTABLE}" == "yes" ]]; then | ||
wrapper="run-one-constantly" | ||
fi | ||
|
||
# shellcheck disable=SC1091,SC2086 | ||
exec /usr/local/bin/start.sh ${wrapper} jupyter ${DOCKER_STACKS_JUPYTER_CMD} ${NOTEBOOK_ARGS} "$@" | ||
exec /usr/local/bin/start-notebook.py "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
#!/usr/bin/env python | ||
# Copyright (c) Jupyter Development Team. | ||
# Distributed under the terms of the Modified BSD License. | ||
import os | ||
import shlex | ||
import sys | ||
|
||
command = ["/usr/local/bin/start.sh", "jupyterhub-singleuser"] | ||
|
||
# set default ip to 0.0.0.0 | ||
if "--ip=" not in os.environ.get("NOTEBOOK_ARGS", ""): | ||
command.append("--ip=0.0.0.0") | ||
|
||
# Append any optional NOTEBOOK_ARGS we were passed in. This is supposed to be multiple args passed | ||
# on to the notebook command, so we split it correctly with shlex | ||
if "NOTEBOOK_ARGS" in os.environ: | ||
command += shlex.split(os.environ["NOTEBOOK_ARGS"]) | ||
|
||
# Pass any other args we have been passed through | ||
command += sys.argv[1:] | ||
|
||
# Execute the command! | ||
os.execvp(command[0], command) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,5 @@ | ||
#!/bin/bash | ||
# Copyright (c) Jupyter Development Team. | ||
# Distributed under the terms of the Modified BSD License. | ||
# Shim to emit warning and call start-singleuser.py | ||
echo "WARNING: Use start-singleuser.py instead" | ||
|
||
set -e | ||
|
||
# set default ip to 0.0.0.0 | ||
if [[ "${NOTEBOOK_ARGS} $*" != *"--ip="* ]]; then | ||
NOTEBOOK_ARGS="--ip=0.0.0.0 ${NOTEBOOK_ARGS}" | ||
fi | ||
|
||
# shellcheck disable=SC1091,SC2086 | ||
. /usr/local/bin/start.sh jupyterhub-singleuser ${NOTEBOOK_ARGS} "$@" | ||
exec /usr/local/bin/start-singleuser.py "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.