[ARVADOS-DEV] updated: 80391687c4cdf1ab167e67f9a48d4c7354c3a4d8

git at public.curoverse.com git at public.curoverse.com
Mon Jan 18 14:37:14 EST 2016


Summary of changes:
 arvbox/bin/arvbox                  | 84 ++++++++++++++++++++++++++++----------
 arvbox/lib/arvbox/docker/common.sh |  8 +++-
 2 files changed, 69 insertions(+), 23 deletions(-)

       via  80391687c4cdf1ab167e67f9a48d4c7354c3a4d8 (commit)
      from  50aded0e2ff25457b78c2a3b5967b42c6ec2c75f (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit 80391687c4cdf1ab167e67f9a48d4c7354c3a4d8
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date:   Mon Jan 18 14:37:10 2016 -0500

    8080: Add "public" configuration which is configured to advertise services with
    the host's IP addresses and uses --publish to expose the service ports on the
    host.

diff --git a/arvbox/bin/arvbox b/arvbox/bin/arvbox
index ecbbfbf..73c3803 100755
--- a/arvbox/bin/arvbox
+++ b/arvbox/bin/arvbox
@@ -70,28 +70,71 @@ EOF
     fi
 }
 
+wait_for_arvbox() {
+    FF=/tmp/arvbox-fifo-$$
+    mkfifo $FF
+    docker logs -f $ARVBOX_CONTAINER > $FF &
+    LOGPID=$!
+    while read line ; do
+        echo $line
+        if echo $line | grep "Workbench is running at" >/dev/null ; then
+            kill $LOGPID
+        fi
+    done < $FF
+    rm $FF
+    echo
+    if test -n "$localip" ; then
+        echo "export ARVADOS_API_HOST=localip:8000"
+    else
+        echo "export ARVADOS_API_HOST=$(getip):8000"
+    fi
+}
+
 run() {
     if docker ps -a | grep -E "$ARVBOX_CONTAINER$" -q ; then
         echo "Container $ARVBOX_CONTAINER is already running, use stop, restart or reboot"
         exit 0
     fi
 
-    if test "$1" = demo ; then
+    if echo "$1" | grep '^public' ; then
+        defaultdev=$(/sbin/ip route|awk '/default/ { print $5 }')
+        localip=$(ip addr show $defaultdev | grep 'inet ' | sed 's/ *inet \(.*\)\/.*/\1/')
+        iptemp=$(tempfile)
+        echo $localip > $iptemp
+        PUBLIC="--volume=$iptemp:/var/run/localip_override
+              --publish=80:80
+              --publish=8000:8000
+              --publish=8900:8900
+              --publish=9001:9001
+              --publish=9002:9002
+              --publish=25100:25100
+              --publish=25107:25107
+              --publish=25108:25108
+              --publish=8001:8001"
+    else
+        PUBLIC=""
+    fi
+
+    if echo "$1" | grep 'demo$' ; then
         if test -d "$ARVBOX_DATA" ; then
             echo "It looks like you already have a development container named $ARVBOX_CONTAINER."
-            echo "Set ARVBOX_CONTAINER to set the demo container name"
+            echo "Set ARVBOX_CONTAINER to set a different name for your demo container"
             exit 1
         fi
 
         if ! (docker ps -a | grep -E "$ARVBOX_CONTAINER-data$" -q) ; then
             docker create -v /var/lib/postgres -v /var/lib/arvados --name $ARVBOX_CONTAINER-data arvados/arvbox-demo /bin/true
         fi
+
         docker run \
+               --detach \
                --name=$ARVBOX_CONTAINER \
                --privileged \
                --volumes-from $ARVBOX_CONTAINER-data \
+               $PUBLIC \
                arvados/arvbox-demo
         updateconf
+        wait_for_arvbox
     else
         mkdir -p "$PG_DATA" "$VAR_DATA" "$PASSENGER" "$GEMS"
 
@@ -159,21 +202,10 @@ run() {
                    "--volume=$VAR_DATA:/var/lib/arvados:rw" \
                    "--volume=$PASSENGER:/var/lib/passenger:rw" \
                    "--volume=$GEMS:/var/lib/gems:rw" \
+                   $PUBLIC \
                    arvados/arvbox-dev
             updateconf
-            FF=/tmp/arvbox-fifo-$$
-            mkfifo $FF
-            docker logs -f $ARVBOX_CONTAINER > $FF &
-            LOGPID=$!
-            while read line ; do
-                echo $line
-                if echo $line | grep "Workbench is running at" >/dev/null ; then
-                    kill $LOGPID
-                fi
-            done < $FF
-            rm $FF
-            echo
-            echo "export ARVADOS_API_HOST=$(getip):8000"
+            wait_for_arvbox
             echo "The Arvados source code is checked out at: $ARVADOS_ROOT"
         fi
     fi
@@ -183,6 +215,9 @@ stop() {
     if docker ps -a --filter "status=running" | grep -E "$ARVBOX_CONTAINER$" -q ; then
         docker stop $ARVBOX_CONTAINER
     fi
+    if docker ps -a --filter "status=created" | grep -E "$ARVBOX_CONTAINER$" -q ; then
+        docker rm --volumes=true $ARVBOX_CONTAINER
+    fi
     if docker ps -a --filter "status=exited" | grep -E "$ARVBOX_CONTAINER$" -q ; then
         docker rm --volumes=true $ARVBOX_CONTAINER
     fi
@@ -194,18 +229,23 @@ build() {
         exit 1
     fi
     docker build -t arvados/arvbox-base -f "$ARVBOX_DOCKER/Dockerfile.base" "$ARVBOX_DOCKER"
-    if test "$1" = dev -o "$1" = test ; then
-        docker build -t arvados/arvbox-dev -f "$ARVBOX_DOCKER/Dockerfile.dev" "$ARVBOX_DOCKER"
-    else
+    if test "$1" = localdemo -o "$1" = publicdemo ; then
         docker build -t arvados/arvbox-demo -f "$ARVBOX_DOCKER/Dockerfile.demo" "$ARVBOX_DOCKER"
+    else
+        docker build -t arvados/arvbox-dev -f "$ARVBOX_DOCKER/Dockerfile.dev" "$ARVBOX_DOCKER"
     fi
 }
 
 check() {
-    if test -z "$1" ; then
-        echo "Argument to $subcmd must be one of dev, test, demo"
-        exit 1
-    fi
+    case "$1" in
+        localdemo|publicdemo|dev|publicdev|test)
+            true
+            ;;
+        *)
+            echo "Argument to $subcmd must be one of localdemo, publicdemo, dev, publicdev, test"
+            exit 1
+        ;;
+    esac
 }
 
 subcmd="$1"
diff --git a/arvbox/lib/arvbox/docker/common.sh b/arvbox/lib/arvbox/docker/common.sh
index 69869a7..4c2de47 100644
--- a/arvbox/lib/arvbox/docker/common.sh
+++ b/arvbox/lib/arvbox/docker/common.sh
@@ -1,5 +1,11 @@
 
-localip=$(ip addr show eth0 |grep "inet " | sed 's/ *inet \([^/]*\).*/\1/')
+if test -s /var/run/localip_override ; then
+    localip=$(cat /var/run/localip_override)
+else
+    defaultdev=$(/sbin/ip route|awk '/default/ { print $5 }')
+    localip=$(ip addr show $defaultdev | grep 'inet ' | sed 's/ *inet \(.*\)\/.*/\1/')
+fi
+
 export GEM_HOME=/var/lib/gems
 export GEM_PATH=/var/lib/gems
 

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list