diff --git a/start-jupyter b/start-jupyter index 55e0587c8ce5d14cf3a9c8cb45b4c6f6cbff5dd2..37baed493af4cd3d43192bcc186d2d0d669e7464 100755 --- a/start-jupyter +++ b/start-jupyter @@ -93,6 +93,11 @@ SJ_INCFILE="" # where jupyter is running need a shared home file system. readonly SJ_FRONTEND_HOST="mistralpp.dkrz.de" +# Image +# +# start the jupyter notebook in a singularity container from a given +# image name. +SJ_IMAGE="" function clean_up () { trap - ERR EXIT @@ -136,13 +141,14 @@ Available values for OPTION include: -p partition run job on partition -t time job runtime -u username use username for login + -s image singularity image EOF } function parse_options () { local option - while getopts 'A:c:di:n:p:t:u:' option; do + while getopts 'A:c:di:n:p:t:u:s:' option; do case ${option} in A) SJ_ACCTCODE="$OPTARG" ;; @@ -160,6 +166,8 @@ function parse_options () { ;; u) SJ_USERNAME="$OPTARG" ;; + s) SJ_IMAGE="$OPTARG" + ;; ?) usage exit 1 ;; @@ -173,6 +181,7 @@ function parse_options () { readonly SJ_PARTITION readonly SJ_RUNTIME readonly SJ_USERNAME + readonly SJ_IMAGE } function ssh_frontend () { @@ -206,16 +215,19 @@ function which_jupyter() { local which which="$(source_incfile "which jupyter")" ssh_frontend "/bin/bash -lc \"${which}\"" -} +} function assemble_commandline () { local logfile="$1" - local commandline="jupyter ${SJ_COMMAND} --no-browser 2>> ${logfile}" + local commandline="jupyter ${SJ_COMMAND} --no-browser 2>> ${logfile}" # If we are not running a job, we have to perform our own scheduling if [[ -z ${SJ_ACCTCODE} ]]; then commandline="nohup ${commandline} > /dev/null & echo \$!" fi + if [[ -n ${SJ_IMAGE} ]]; then + commandline="singularity exec ${SJ_IMAGE} ${commandline}" + fi commandline="$(source_incfile "${commandline}")" echo "${commandline}" } @@ -342,6 +354,7 @@ function main () { trap clean_up INT QUIT TERM ERR EXIT echo "Establishing ssh master connection." + set -x # Set up control master for connection sharing mkdir -p "${HOME}/.ssh" ssh_socket_dir="$(mktemp -d "${HOME}/.ssh/socket.XXXXX")"