#!/bin/bash set -eo pipefail set -x # Generate htdigest password file for webdav access if it doesn't exist. JUPYTER_ENABLE_WEBDAV=${JUPYTER_ENABLE_WEBDAV:-false} export HUB_HOME=/tmp export JUPYTER_ENABLE_WEBDAV if [ -f /var/run/secrets/kubernetes.io/serviceaccount/namespace ]; then DEPLOYMENT=`echo $HOSTNAME | sed -e 's/^\(.*\)-[^-]*-[^-]*$/\1/'` NAMESPACE=`cat /var/run/secrets/kubernetes.io/serviceaccount/namespace` WEBDAV_REALM=$NAMESPACE/$DEPLOYMENT else WEBDAV_REALM=jupyter-on-openshift/jupyter-notebooks fi WEBDAV_USERFILE=/opt/app-root/etc/webdav.htdigest export WEBDAV_REALM export WEBDAV_USERFILE if [ ! -f $WEBDAV_USERFILE ]; then touch $WEBDAV_USERFILE if [[ ! -z "${JUPYTER_NOTEBOOK_PASSWORD}" ]]; then DIGEST="$( printf "%s:%s:%s" "jupyter" "$WEBDAV_REALM" "$JUPYTER_NOTEBOOK_PASSWORD" | md5sum | awk '{print $1}' )" printf "%s:%s:%s\n" "jupyter" "$WEBDAV_REALM" "$DIGEST" >> $WEBDAV_USERFILE fi fi # Pre-clone repositories defined in JUPYTER_PRELOAD_REPOS if [ -n "${JUPYTER_PRELOAD_REPOS}" ]; then for repo in `echo ${JUPYTER_PRELOAD_REPOS} | tr ',' ' '`; do # Check for the presence of "@branch" in the repo string REPO_BRANCH=$(echo ${repo} | cut -s -d'@' -f2) if [[ -n ${REPO_BRANCH} ]]; then # Remove the branch from the repo string and convert REPO_BRANCH to git clone arg repo=$(echo ${repo} | cut -d'@' -f1) REPO_BRANCH="-b ${REPO_BRANCH}" fi echo "Checking if repository $repo exists locally" REPO_DIR=$(basename ${repo}) if ! [ -d "${REPO_DIR}" ]; then GIT_SSL_NO_VERIFY=true git clone ${repo} ${REPO_DIR} ${REPO_BRANCH} fi done fi # Copy notebooks onto the user volume if they don't exist if [ -d /opt/app-root/notebooks ] && ! [ -d /opt/app-root/src/openvino_notebooks ]; then cp -r /opt/app-root/notebooks /opt/app-root/src/openvino_notebooks fi # Start the Jupyter notebook instance. Run using supervisord if enabled, # or it is required by webdav access. if [ x"$JUPYTER_ENABLE_WEBDAV" == x"true" ]; then JUPYTER_ENABLE_SUPERVISORD=true fi if [[ ! -z "${JUPYTER_ENABLE_SUPERVISORD}" ]]; then # Startup supervisord against the configuration and keep it in the # foreground so becomes process ID 1 for the container. exec /opt/app-root/bin/supervisord --nodaemon \ --configuration /opt/app-root/etc/supervisord.conf else . /opt/app-root/bin/start-notebook.sh "$@" fi