diff --git a/common-functions b/common-functions index 02470a5..c5d3d5d 100755 --- a/common-functions +++ b/common-functions @@ -474,24 +474,24 @@ service_parse_args() { for arg in "$@"; do shift case "$arg" in - "--config-options") set -- "$@" "-c" ;; - "--custom-env") set -- "$@" "-C" ;; - "--image") set -- "$@" "-i" ;; - "--image-version") set -- "$@" "-I" ;; - "--password") set -- "$@" "-p" ;; - "--root-password") set -- "$@" "-r" ;; - - "--alias") set -- "$@" "-a" ;; - "--database") set -- "$@" "-d" ;; - "--memory") set -- "$@" "-m" ;; - "--querystring") set -- "$@" "-q" ;; - "--user") set -- "$@" "-u" ;; - *) set -- "$@" "$arg" + "--alias") set -- "$@" "-a" ;; + "--config-options") set -- "$@" "-c" ;; + "--custom-env") set -- "$@" "-C" ;; + "--database") set -- "$@" "-d" ;; + "--image-version") set -- "$@" "-I" ;; + "--image") set -- "$@" "-i" ;; + "--memory") set -- "$@" "-m" ;; + "--password") set -- "$@" "-p" ;; + "--querystring") set -- "$@" "-q" ;; + "--restart-apps") set -- "$@" "-R" ;; + "--root-password") set -- "$@" "-r" ;; + "--user") set -- "$@" "-u" ;; + *) set -- "$@" "$arg" esac done OPTIND=1 - while getopts "a:c:C:d:i:I:m:p:q:r:u:" opt; do + while getopts "a:c:C:d:i:I:m:p:q:R:r:u:" opt; do case "$opt" in a) SERVICE_ALIAS="${OPTARG^^}"; export SERVICE_ALIAS="${SERVICE_ALIAS%_URL}" @@ -512,6 +512,8 @@ service_parse_args() { ;; q) export SERVICE_QUERYSTRING=${OPTARG#"?"} ;; + R) export SERVICE_RESTART_APPS=$OPTARG + ;; r) export SERVICE_ROOT_PASSWORD=$OPTARG ;; u) export SERVICE_USER=$OPTARG diff --git a/subcommands/upgrade b/subcommands/upgrade index b4718c8..ef9ae2d 100755 --- a/subcommands/upgrade +++ b/subcommands/upgrade @@ -3,6 +3,7 @@ source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config" set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x source "$PLUGIN_BASE_PATH/common/functions" source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions" +source "$PLUGIN_AVAILABLE_PATH/ps/functions" service-upgrade-cmd() { #E you can upgrade an existing service to a new image or image-version @@ -11,6 +12,7 @@ service-upgrade-cmd() { #F -C|--custom-env "USER=alpha;HOST=beta", semi-colon delimited environment variables to start the service with #F -i|--image IMAGE, the image name to start the service with #F -I|--image-version IMAGE_VERSION, the image version to start the service with + #F -R|--restart-apps "true", whether to force an app restart declare desc="upgrade service to the specified versions" local cmd="$PLUGIN_COMMAND_PREFIX:upgrade" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1 declare SERVICE="$1" UPGRADE_FLAG_LIST="${@:2}" @@ -29,9 +31,24 @@ service-upgrade-cmd() { fi dokku_log_info2 "Upgrading $SERVICE to $PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION" + if [[ "$SERVICE_RESTART_APPS" == "true" ]]; then + dokku_log_info2 "Stopping all linked services" + for app in $(service_linked_apps "$SERVICE"); do + ps_stop "$app" + done + fi + dokku_log_info2 "Stopping $SERVICE" service_container_rm "$SERVICE" service_start "$SERVICE" "${@:2}" + + if [[ "$SERVICE_RESTART_APPS" == "true" ]]; then + dokku_log_info2 "Starting all linked services" + for app in $(service_linked_apps "$SERVICE"); do + ps_start "$app" + done + fi + dokku_log_info2 "Done" }