diff --git a/weave b/weave index b50ea1e5..680a52e8 100755 --- a/weave +++ b/weave @@ -906,29 +906,27 @@ container_weave_addrs() { # functions for interacting with containers ###################################################################### -# Check that a container named $1 with image $2 is not running +# Check that a container for component $1 named $2 with image $3 is not running check_not_running() { - case $(docker inspect --format='{{.State.Running}} {{.Config.Image}}' $1 2>/dev/null) in - "true $2") - echo "$1 is already running." >&2 + RUN_STATUS=$(docker inspect --format='{{.State.Running}} {{.State.Status}} {{.Config.Image}}' $2 2>/dev/null) || true + case ${RUN_STATUS%:*} in + "true restarting $3") + echo "$2 is restarting; you can stop it with 'weave stop-$1'." >&2 exit 1 ;; - "true $2:"*) - echo "$1 is already running." >&2 + "true "*" $3") + echo "$2 is already running; you can stop it with 'weave stop-$1'." >&2 exit 1 ;; - "false $2") - docker rm $1 >/dev/null - ;; - "false $2:"*) - docker rm $1 >/dev/null + "false "*" $3") + docker rm $2 >/dev/null ;; true*) - echo "Found another running container named '$1'. Aborting." >&2 + echo "Found another running container named '$2'. Aborting." >&2 exit 1 ;; false*) - echo "Found another container named '$1'. Aborting." >&2 + echo "Found another container named '$2'. Aborting." >&2 exit 1 ;; esac @@ -1822,6 +1820,7 @@ case "$COMMAND" in [ $# -eq 0 ] || usage ask_version $CONTAINER_NAME $IMAGE || true ask_version $PROXY_CONTAINER_NAME $EXEC_IMAGE --entrypoint=/home/weave/weaveproxy || true + ask_version $PLUGIN_CONTAINER_NAME $PLUGIN_IMAGE || true ;; # intentionally undocumented since it assumes knowledge of weave # internals @@ -1843,19 +1842,17 @@ EOF ;; launch) deprecation_warnings "$@" - check_not_running $CONTAINER_NAME $BASE_IMAGE - check_not_running $PROXY_CONTAINER_NAME $BASE_EXEC_IMAGE + check_not_running router $CONTAINER_NAME $BASE_IMAGE + check_not_running proxy $PROXY_CONTAINER_NAME $BASE_EXEC_IMAGE + check_not_running plugin $PLUGIN_CONTAINER_NAME $BASE_PLUGIN_IMAGE COMMON_ARGS=$(common_launch_args "$@") launch_router "$@" launch_proxy $COMMON_ARGS - if [ -z $WEAVE_NO_PLUGIN ] && check_docker_server_api_version 1.21 ; then - check_not_running $PLUGIN_CONTAINER_NAME $BASE_PLUGIN_IMAGE - launch_plugin $COMMON_ARGS - fi + [ -z $WEAVE_NO_PLUGIN ] && check_docker_server_api_version 1.21 && launch_plugin $COMMON_ARGS ;; launch-router) deprecation_warnings "$@" - check_not_running $CONTAINER_NAME $BASE_IMAGE + check_not_running router $CONTAINER_NAME $BASE_IMAGE launch_router "$@" echo $ROUTER_CONTAINER ;; @@ -1869,12 +1866,12 @@ EOF ;; launch-proxy) deprecation_warnings "$@" - check_not_running $PROXY_CONTAINER_NAME $BASE_EXEC_IMAGE + check_not_running proxy $PROXY_CONTAINER_NAME $BASE_EXEC_IMAGE launch_proxy "$@" echo $PROXY_CONTAINER ;; launch-plugin) - check_not_running $PLUGIN_CONTAINER_NAME $BASE_PLUGIN_IMAGE + check_not_running plugin $PLUGIN_CONTAINER_NAME $BASE_PLUGIN_IMAGE launch_plugin "$@" echo $PLUGIN_CONTAINER ;;