X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/ad25d712525293ce4f95f5a059b390036ec60dc3..a7631a1ccb6e2a6925d00a06562e171c4ce4ea2f:/tools/arvbox/bin/arvbox diff --git a/tools/arvbox/bin/arvbox b/tools/arvbox/bin/arvbox index 3e829522af..5abaa90e36 100755 --- a/tools/arvbox/bin/arvbox +++ b/tools/arvbox/bin/arvbox @@ -19,11 +19,13 @@ if ! which docker >/dev/null 2>/dev/null ; then fi if test -z "$ARVBOX_DOCKER" ; then + set +e if which greadlink >/dev/null 2>/dev/null ; then ARVBOX_DOCKER=$(greadlink -f $(dirname $0)/../lib/arvbox/docker) else ARVBOX_DOCKER=$(readlink -f $(dirname $0)/../lib/arvbox/docker) fi + set -e fi if test -z "$ARVBOX_CONTAINER" ; then @@ -191,7 +193,8 @@ run() { defaultdev=$(/sbin/ip route|awk '/default/ { print $5 }') localip=$(ip addr show $defaultdev | grep 'inet ' | sed 's/ *inet \(.*\)\/.*/\1/') fi - iptemp=$(tempfile) + echo "Public arvbox will use address $localip" + iptemp=$(mktemp) echo $localip > $iptemp chmod og+r $iptemp PUBLIC="--volume=$iptemp:/var/run/localip_override @@ -199,13 +202,12 @@ run() { --publish=3001:3001 --publish=8000:8000 --publish=8900:8900 - --publish=9001:9001 + --publish=9000:9000 --publish=9002:9002 - --publish=25100:25100 - --publish=25107:25107 - --publish=25108:25108 + --publish=25101:25101 --publish=8001:8001 - --publish=8002:8002" + --publish=8002:8002 + --publish=45000-45020:45000-45020" else PUBLIC="" fi @@ -235,16 +237,18 @@ run() { mkdir -p "$PG_DATA" "$VAR_DATA" "$PASSENGER" "$GEMS" "$PIPCACHE" "$NPMCACHE" "$GOSTUFF" "$RLIBS" if ! test -d "$ARVADOS_ROOT" ; then - git clone https://github.com/curoverse/arvados.git "$ARVADOS_ROOT" + git clone https://git.arvados.org/arvados.git "$ARVADOS_ROOT" fi if ! test -d "$SSO_ROOT" ; then - git clone https://github.com/curoverse/sso-devise-omniauth-provider.git "$SSO_ROOT" + git clone https://github.com/arvados/sso-devise-omniauth-provider.git "$SSO_ROOT" fi if ! test -d "$COMPOSER_ROOT" ; then - git clone https://github.com/curoverse/composer.git "$COMPOSER_ROOT" + git clone https://github.com/arvados/composer.git "$COMPOSER_ROOT" + git -C "$COMPOSER_ROOT" checkout arvados-fork + git -C "$COMPOSER_ROOT" pull fi if ! test -d "$WORKBENCH2_ROOT" ; then - git clone https://github.com/curoverse/arvados-workbench2.git "$WORKBENCH2_ROOT" + git clone https://github.com/arvados/arvados-workbench2.git "$WORKBENCH2_ROOT" fi if [[ "$CONFIG" = test ]] ; then @@ -275,16 +279,23 @@ run() { /var/lib/arvbox/service/api/run-service --only-setup fi + interactive="" + if [[ -z "$@" ]] ; then + interactive=--interactive + fi + docker exec -ti \ -e LINES=$(tput lines) \ -e COLUMNS=$(tput cols) \ -e TERM=$TERM \ -e WORKSPACE=/usr/src/arvados \ -e GEM_HOME=/var/lib/gems \ + -e CONFIGSRC=/var/lib/arvados/run_tests \ $ARVBOX_CONTAINER \ /usr/local/lib/arvbox/runsu.sh \ /usr/src/arvados/build/run-tests.sh \ --temp /var/lib/arvados/test \ + $interactive \ "$@" elif [[ "$CONFIG" = devenv ]] ; then if [[ $need_setup = 1 ]] ; then @@ -554,7 +565,18 @@ case "$subcmd" in clone) if test -n "$2" ; then - cp -r "$ARVBOX_BASE/$1" "$ARVBOX_BASE/$2" + mkdir -p "$ARVBOX_BASE/$2" + cp -a "$ARVBOX_BASE/$1/passenger" \ + "$ARVBOX_BASE/$1/gems" \ + "$ARVBOX_BASE/$1/pip" \ + "$ARVBOX_BASE/$1/npm" \ + "$ARVBOX_BASE/$1/gopath" \ + "$ARVBOX_BASE/$1/Rlibs" \ + "$ARVBOX_BASE/$1/arvados" \ + "$ARVBOX_BASE/$1/sso-devise-omniauth-provider" \ + "$ARVBOX_BASE/$1/composer" \ + "$ARVBOX_BASE/$1/workbench2" \ + "$ARVBOX_BASE/$2" echo "Created new arvbox $2" echo "export ARVBOX_CONTAINER=$2" else @@ -576,6 +598,40 @@ case "$subcmd" in exec docker exec -ti $ARVBOX_CONTAINER bash -c 'PGPASSWORD=$(cat /var/lib/arvados/api_database_pw) exec psql --dbname=arvados_development --host=localhost --username=arvados' ;; + checkpoint) + exec docker exec -ti $ARVBOX_CONTAINER bash -c 'PGPASSWORD=$(cat /var/lib/arvados/api_database_pw) exec pg_dump --host=localhost --username=arvados --clean arvados_development > /var/lib/arvados/checkpoint.sql' + ;; + + restore) + exec docker exec -ti $ARVBOX_CONTAINER bash -c 'PGPASSWORD=$(cat /var/lib/arvados/api_database_pw) exec psql --dbname=arvados_development --host=localhost --username=arvados --quiet --file=/var/lib/arvados/checkpoint.sql' + ;; + + hotreset) + exec docker exec -i $ARVBOX_CONTAINER /usr/bin/env GEM_HOME=/var/lib/gems /bin/bash - < build arvbox Docker image" echo "reboot stop, build arvbox Docker image, run" echo "rebuild build arvbox Docker image, no layer cache" + echo "checkpoint create database backup" + echo "restore restore checkpoint" + echo "hotreset reset database and restart API without restarting container" echo "reset delete arvbox arvados data (be careful!)" echo "destroy delete all arvbox code and data (be careful!)" echo "log tail log of specified service"