#! /bin/bash export DA_ROOT="${DA_ROOT:-/usr/share/docassemble}" export DA_DEFAULT_LOCAL="local3.14" export DA_CONFIG_FILE="${DA_CONFIG:-${DA_ROOT}/config/config.yml}" export DA_ACTIVATE="${DA_PYTHON:-${DA_ROOT}/${DA_DEFAULT_LOCAL}}/bin/activate" source "${DA_ACTIVATE}" export CONTAINERROLE=":${CONTAINERROLE:-all}:" export HOME=/var/www source /dev/stdin < <(python -m docassemble.base.read_config "$DA_CONFIG_FILE") if [ "${DAREADONLYFILESYSTEM:-false}" == "true" ]; then echo "Will not reset because read-only file system" >&2 exit 0 fi if [ "${DASUPERVISORUSERNAME:-null}" != "null" ]; then SUPERVISORCMD="supervisorctl --serverurl http://localhost:9001 --username ${DASUPERVISORUSERNAME} --password ${DASUPERVISORPASSWORD}" else SUPERVISORCMD="supervisorctl --serverurl http://localhost:9001" fi restart_web_app() { if [ "${DAROOTOWNED:-false}" == "true" ]; then if [ "${DAALLOWUPDATES:-true}" == "true" ] \ || [ "${DAENABLEPLAYGROUND:-true}" == "true" ] \ || [ "${DAALLOWCONFIGURATIONEDITING:-true}" == "true" ]; then echo "`date` starting docassemble.webapp.restart" >&2 python -m docassemble.webapp.restart echo "`date` finished docassemble.webapp.restart" >&2 fi else echo "`date` starting docassemble.webapp.restart" >&2 python -m docassemble.webapp.restart echo "`date` finished docassemble.webapp.restart" >&2 fi } stop_celery() { echo "`date` stopping celery" >&2 ${SUPERVISORCMD} stop celery || exit 1 } stop_celery_single() { echo "`date` stopping celerysingle" >&2 ${SUPERVISORCMD} stop celerysingle || exit 1 } stop_rabbitmq() { echo "`date` stopping rabbitmq" >&2 ${SUPERVISORCMD} stop rabbitmq || exit 1 } start_celery() { echo "`date` starting celery" >&2 ${SUPERVISORCMD} start celery || exit 1 } start_celery_single() { echo "`date` starting celerysingle" >&2 ${SUPERVISORCMD} start celerysingle || exit 1 } start_rabbitmq() { echo "`date` starting rabbitmq" >&2 ${SUPERVISORCMD} start rabbitmq || exit 1 } update_pip_config(){ if [ "${PIPINDEXURL:-null}" != "null" ]; then pip config set global.index-url "${PIPINDEXURL}" else pip config unset global.index-url &> /dev/null fi if [ "${PIPEXTRAINDEXURLS:-null}" != "null" ]; then pip config set global.extra-index-url "${PIPEXTRAINDEXURLS}" else pip config unset global.extra-index-url &> /dev/null fi if [ "${PIPTRUSTEDHOST:-null}" != "null" ]; then pip config set global.trusted-host "${PIPTRUSTEDHOST}" else pip config set global.trusted-host "github.com" &> /dev/null fi } restart_websockets() { echo "`date` stopping websockets" >&2 ${SUPERVISORCMD} stop websockets || exit 1 sleep 1 echo "`date` starting websockets" >&2 ${SUPERVISORCMD} start websockets || exit 1 echo "`date` finished resetting websockets" >&2 } restart_background() { stop_celery & pid_celery=$! stop_celery_single & pid_celery_single=$! wait "$pid_celery" "$pid_celery_single" if [[ $CONTAINERROLE =~ .*:(all|rabbitmq):.* ]]; then stop_rabbitmq start_rabbitmq fi start_celery & pid_celery=$! start_celery_single & pid_celery_single=$! wait "$pid_celery" "$pid_celery_single" echo "`date` finished resetting background task system" >&2 } restart_web_app & if [ "${DAALLOWUPDATES:-true}" == "true" ]; then update_pip_config & fi if [[ $CONTAINERROLE =~ .*:(all|web):.* ]] && [ "${ENABLEMONITOR:-true}" = "true" ]; then restart_websockets & fi if [[ $CONTAINERROLE =~ .*:(all|celery):.* ]]; then restart_background & fi wait echo "`date` finished reset process" >&2 exit 0