Add Workbench to arvbox status, no issue #
[arvados.git] / tools / arvbox / bin / arvbox
index 29f25daf8ce080c1941da3e80ff3553b60b35e5e..36a33376a1892fb88f5458e18a1d3f59484c27e0 100755 (executable)
@@ -52,6 +52,17 @@ if test -z "$WORKBENCH2_ROOT" ; then
     WORKBENCH2_ROOT="$ARVBOX_DATA/workbench2"
 fi
 
+if test -z "$ARVADOS_BRANCH" ; then
+    ARVADOS_BRANCH=main
+fi
+
+if test -z "$WORKBENCH2_BRANCH" ; then
+    WORKBENCH2_BRANCH=main
+fi
+
+# Update this to the docker tag for the version on releases.
+DEFAULT_TAG=
+
 PG_DATA="$ARVBOX_DATA/postgres"
 VAR_DATA="$ARVBOX_DATA/var"
 PASSENGER="$ARVBOX_DATA/passenger"
@@ -61,7 +72,7 @@ NPMCACHE="$ARVBOX_DATA/npm"
 GOSTUFF="$ARVBOX_DATA/gopath"
 RLIBS="$ARVBOX_DATA/Rlibs"
 ARVADOS_CONTAINER_PATH="/var/lib/arvados-arvbox"
-GEM_HOME="/var/lib/arvados/lib/ruby/gems/2.5.0"
+GEM_HOME="/var/lib/arvados/lib/ruby/gems/2.7.0"
 
 getip() {
     docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $ARVBOX_CONTAINER
@@ -187,6 +198,10 @@ run() {
         fi
     fi
 
+    if test -z "$TAG" -a -n "$DEFAULT_TAG"; then
+       TAG=":$DEFAULT_TAG"
+    fi
+
     if [[ "$CONFIG" =~ ^public ]] ; then
         if test -n "$ARVBOX_PUBLISH_IP" ; then
             localip=$ARVBOX_PUBLISH_IP
@@ -205,6 +220,7 @@ run() {
               --publish=8900:8900
               --publish=9000:9000
               --publish=9002:9002
+              --publish=9004:9004
               --publish=25101:25101
               --publish=8001:8001
               --publish=8002:8002
@@ -240,14 +256,15 @@ run() {
 
         if ! test -d "$ARVADOS_ROOT" ; then
             git clone https://git.arvados.org/arvados.git "$ARVADOS_ROOT"
+           git -C "$ARVADOS_ROOT" checkout $ARVADOS_BRANCH
         fi
         if ! test -d "$COMPOSER_ROOT" ; then
             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://git.arvados.org/arvados-workbench2.git "$WORKBENCH2_ROOT"
+           git -C "$ARVADOS_ROOT" checkout $WORKBENCH2_BRANCH
         fi
 
         if [[ "$CONFIG" = test ]] ; then
@@ -389,9 +406,24 @@ build() {
         BUILDTYPE=dev
     fi
 
-    docker build --build-arg=BUILDTYPE=$BUILDTYPE $NO_CACHE --build-arg=arvados_version=$GITHEAD --build-arg=workdir=/tools/arvbox/lib/arvbox/docker -t arvados/arvbox-base:$GITHEAD -f "$ARVBOX_DOCKER/Dockerfile.base" "$LOCAL_ARVADOS_ROOT"
+    if test "$ARVADOS_BRANCH" = "main" ; then
+       ARVADOS_BRANCH=$GITHEAD
+    fi
+
+    docker build --build-arg=BUILDTYPE=$BUILDTYPE $NO_CACHE \
+          --build-arg=arvados_version=$ARVADOS_BRANCH \
+          --build-arg=workbench2_version=$WORKBENCH2_BRANCH \
+          --build-arg=workdir=/tools/arvbox/lib/arvbox/docker \
+          -t arvados/arvbox-base:$GITHEAD \
+          -f "$ARVBOX_DOCKER/Dockerfile.base" \
+          "$LOCAL_ARVADOS_ROOT"
     docker tag $FORCE arvados/arvbox-base:$GITHEAD arvados/arvbox-base:latest
-    docker build $NO_CACHE -t arvados/arvbox-$BUILDTYPE:$GITHEAD -f "$ARVBOX_DOCKER/Dockerfile.$BUILDTYPE" "$ARVBOX_DOCKER"
+    docker build $NO_CACHE \
+          --build-arg=arvados_version=$ARVADOS_BRANCH \
+          --build-arg=workbench2_version=$WORKBENCH2_BRANCH \
+          -t arvados/arvbox-$BUILDTYPE:$GITHEAD \
+          -f "$ARVBOX_DOCKER/Dockerfile.$BUILDTYPE" \
+          "$ARVBOX_DOCKER"
     docker tag $FORCE arvados/arvbox-$BUILDTYPE:$GITHEAD arvados/arvbox-$BUILDTYPE:latest
 }
 
@@ -494,6 +526,7 @@ case "$subcmd" in
             echo "Status: running"
             echo "Container IP: $(getip)"
             echo "Published host: $(gethost)"
+           echo "Workbench: https://$(gethost)"
         else
             echo "Status: not running"
         fi
@@ -565,7 +598,7 @@ case "$subcmd" in
         else
             echo "Usage: $0 $subcmd <start|stop|restart> <service>"
             echo "Available services:"
-            exec docker execa $ARVBOX_CONTAINER ls /etc/service
+            exec docker exec $ARVBOX_CONTAINER ls /etc/service
         fi
         ;;
 
@@ -622,12 +655,9 @@ sv stop keepproxy
 cd /usr/src/arvados/services/api
 export DISABLE_DATABASE_ENVIRONMENT_CHECK=1
 export RAILS_ENV=development
-bundle exec rake db:drop
+flock $GEM_HOME/gems.lock bin/bundle exec rake db:drop
 rm $ARVADOS_CONTAINER_PATH/api_database_setup
 rm $ARVADOS_CONTAINER_PATH/superuser_token
-rm $ARVADOS_CONTAINER_PATH/keep0-uuid
-rm $ARVADOS_CONTAINER_PATH/keep1-uuid
-rm $ARVADOS_CONTAINER_PATH/keepproxy-uuid
 sv start api
 sv start controller
 sv start websockets
@@ -638,13 +668,21 @@ EOF
         ;;
 
     adduser)
-        docker exec -ti $ARVBOX_CONTAINER /usr/local/lib/arvbox/edit_users.py $ARVADOS_CONTAINER_PATH/cluster_config.yml.override $(getclusterid) add $@
-        docker exec $ARVBOX_CONTAINER sv restart controller
+if [[ -n "$2" ]] ; then
+          docker exec -ti $ARVBOX_CONTAINER /usr/local/lib/arvbox/edit_users.py $ARVADOS_CONTAINER_PATH/cluster_config.yml.override $(getclusterid) add $@
+          docker exec $ARVBOX_CONTAINER sv restart controller
+       else
+           echo "Usage: adduser <username> <email> [password]"
+       fi
         ;;
 
     removeuser)
-        docker exec -ti $ARVBOX_CONTAINER /usr/local/lib/arvbox/edit_users.py $ARVADOS_CONTAINER_PATH/cluster_config.yml.override $(getclusterid) remove $@
-        docker exec $ARVBOX_CONTAINER sv restart controller
+       if [[ -n "$1" ]] ; then
+          docker exec -ti $ARVBOX_CONTAINER /usr/local/lib/arvbox/edit_users.py $ARVADOS_CONTAINER_PATH/cluster_config.yml.override $(getclusterid) remove $@
+          docker exec $ARVBOX_CONTAINER sv restart controller
+       else
+           echo "Usage: removeuser <username>"
+       fi
         ;;
 
     listusers)
@@ -681,7 +719,7 @@ EOF
         echo "sv <start|stop|restart> <service> "
         echo "                   change state of service inside arvbox"
         echo "clone <from> <to>  clone dev arvbox"
-        echo "adduser <username> <email>"
+        echo "adduser <username> <email> [password]"
         echo "                   add a user login"
         echo "removeuser <username>"
         echo "                   remove user login"