X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/e3b9c14bc16fe2078c5f6bb9a6084069be226987..c9b7cc4f504a879feb89df28a5f651e32839048a:/docker/run.sh?ds=sidebyside diff --git a/docker/run.sh b/docker/run.sh index 9840b23fe1..c8ddabeded 100755 --- a/docker/run.sh +++ b/docker/run.sh @@ -3,12 +3,24 @@ ENABLE_SSH=false function usage { - echo >&2 "usage:" - echo >&2 "$0 (start|stop|test)" - echo >&2 "" - echo >&2 "$0 start [--ssh] [--doc] [--sso] [--api] [--workbench] [--keep]" - echo >&2 " If no switches are given, the default is to start all servers." + echo >&2 + echo >&2 "usage: $0 (start|stop|test) [options]" + echo >&2 + echo >&2 "$0 start options:" + echo >&2 " -d [port], --doc[=port] Start documentation server (default port 9898)" + echo >&2 " -w [port], --workbench[=port] Start workbench server (default port 9899)" + echo >&2 " -s [port], --sso[=port] Start SSO server (default port 9901)" + echo >&2 " -a [port], --api[=port] Start API server (default port 9900)" + echo >&2 " -k, --keep Start Keep servers" + echo >&2 " --ssh Enable SSH access to server containers" + echo >&2 " -h, --help Display this help and exit" + echo >&2 + echo >&2 " If no switches are given, the default is to start all" + echo >&2 " servers on the default ports." + echo >&2 echo >&2 "$0 stop" + echo >&2 " Stop all servers." + echo >&2 echo >&2 "$0 test [testname] [testname] ..." echo >&2 " By default, all tests are run." } @@ -102,60 +114,105 @@ function do_start { local start_workbench=false local start_keep=false + # NOTE: This requires GNU getopt (part of the util-linux package on Debian-based distros). + local TEMP=`getopt -o d::s::a::w::kh \ + --long doc::,sso::,api::,workbench::,keep,help,ssh \ + -n "$0" -- "$@"` + + if [ $? != 0 ] ; then echo "Use -h for help"; exit 1 ; fi + + # Note the quotes around `$TEMP': they are essential! + eval set -- "$TEMP" + while [ $# -ge 1 ] do case $1 in - --doc) - start_doc=true + -d | --doc) + case "$2" in + "") start_doc=9898; shift 2 ;; + *) start_doc=$2; shift 2 ;; + esac ;; - --sso) - start_sso=true + -s | --sso) + case "$2" in + "") start_sso=9901; shift 2 ;; + *) start_sso=$2; shift 2 ;; + esac ;; - --api) - start_api=true + -a | --api) + case "$2" in + "") start_api=9900; shift 2 ;; + *) start_api=$2; shift 2 ;; + esac ;; - --workbench) - start_workbench=true + -w | --workbench) + case "$2" in + "") start_workbench=9899; shift 2 ;; + *) start_workbench=$2; shift 2 ;; + esac ;; - --keep) + -k | --keep ) start_keep=true + shift ;; --ssh) + # ENABLE_SSH is a global variable ENABLE_SSH=true + shift + ;; + --) + shift + break ;; *) usage exit 1 ;; esac - shift done # If no options were selected, then start all servers. - if $start_doc || $start_sso || $start_api || $start_workbench || $start_keep + if [[ $start_doc == false && + $start_sso == false && + $start_api == false && + $start_workbench == false && + $start_keep == false ]] then - : - else - start_doc=true - start_sso=true - start_api=true - start_workbench=true - start_keep=true + start_doc=9898 + start_sso=9901 + start_api=9900 + start_workbench=9899 + start_keep=true + fi + + if [[ $start_doc != false ]] + then + start_container "9898:80" "doc_server" '' '' "arvados/doc" fi - $start_doc && start_container "9898:80" "doc_server" '' '' "arvados/doc" - $start_sso && start_container "9901:443" "sso_server" '' '' "arvados/sso" - $start_api && start_container "9900:443" "api_server" '' "sso_server:sso" "arvados/api" - $start_workbench && start_container "9899:80" "workbench_server" '' "api_server:api" "arvados/workbench" + if [[ $start_sso != false ]] + then + start_container "9901:443" "sso_server" '' '' "arvados/sso" + fi + + if [[ $start_api != false ]] + then + start_container "9900:443" "api_server" '' "sso_server:sso" "arvados/api" + fi - if $start_keep + if [[ $start_workbench != false ]] + then + start_container "9899:80" "workbench_server" '' "api_server:api" "arvados/workbench" + fi + + if [[ $start_keep != false ]] then # create `keep_volumes' array with a list of keep mount points # remove any stale metadata from those volumes before starting them make_keep_volumes for v in ${keep_volumes[*]} do - [ -f $v/keep/.metadata.yml ] && rm $v/keep/.metadata.yml + [ -f $v/keep/.metadata.yml ] && sudo rm $v/keep/.metadata.yml done start_container "25107:25107" "keep_server_0" \ "${keep_volumes[0]}:/dev/keep-0" \ @@ -191,7 +248,7 @@ function do_test { local alltests if [ $# -lt 1 ] then - alltests="python-sdk" + alltests="python-sdk api" else alltests="$@" fi @@ -201,11 +258,16 @@ function do_test { echo "testing $testname..." case $testname in python-sdk) - ARVADOS_API_HOST=$(ip_address "api_server") - ARVADOS_API_HOST_INSECURE=yes - ARVADOS_API_TOKEN=$(cat api/generated/superuser_token) + do_start --api --keep --sso + export ARVADOS_API_HOST=$(ip_address "api_server") + export ARVADOS_API_HOST_INSECURE=yes + export ARVADOS_API_TOKEN=$(cat api/generated/superuser_token) python -m unittest discover ../sdk/python ;; + api) + docker run -t -i arvados/api \ + /usr/src/arvados/services/api/script/rake_test.sh + ;; *) echo >&2 "unknown test $testname" ;;