8567: Improve disk space accounting. Default to use overlay storage driver (but...
[arvados.git] / docker / migrate-docker19 / migrate.sh
index 58d6665f2233cd206e7401f01444d9b1bc5339af..350ae4ce562e5626cfbedfad59603fd12547c511 100755 (executable)
@@ -2,22 +2,54 @@
 
 set -e
 
+image_tar_keepref=$1
+image_id=$2
+image_repo=$3
+image_tag=$4
+project_uuid=$5
+graph_driver=$6
+
+function freespace() {
+    df -B1 /var/lib/docker | tail -n1 | sed 's/  */ /g' | cut -d' ' -f4
+}
+
+function start_docker {
+    /root/dnd.sh $graph_driver &
+    for i in $(seq 1 10) ; do
+        if docker version >/dev/null 2>/dev/null ; then
+            return
+        fi
+        sleep 1
+    done
+    false
+}
+
+function kill_docker {
+    if test -f /var/run/docker.pid ; then
+        kill $(cat /var/run/docker.pid)
+    fi
+    for i in $(seq 1 10) ; do
+        if ! docker version >/dev/null 2>/dev/null ; then
+            return
+        fi
+        sleep 1
+    done
+    false
+}
+
 function cleanup {
-    kill $(cat /var/run/docker.pid)
-    sleep 1
+    trap EXIT
+    kill_docker
     rm -rf /var/lib/docker/*
+    rm -rf /root/.cache/arvados/docker/*
+    echo "Available space after cleanup is $(freespace)"
 }
 
 trap cleanup EXIT
 
-/root/dnd.sh &
-sleep 2
+start_docker
 
-image_tar_keepref=$1
-image_id=$2
-image_repo=$3
-image_tag=$4
-project_uuid=$5
+echo "Initial available space is $(freespace)"
 
 arv-get $image_tar_keepref | docker load
 
@@ -25,17 +57,21 @@ docker tag $image_id $image_repo:$image_tag
 
 docker images -a
 
-kill $(cat /var/run/docker.pid)
-sleep 1
+kill_docker
+
+echo "Available space after image load is $(freespace)"
 
 cd /root/pkgs
-dpkg -i libltdl7_2.4.2-1.11+b1_amd64.deb  docker-engine_1.13.1-0~debian-jessie_amd64.deb
+dpkg -i libltdl7_2.4.2-1.11+b1_amd64.deb docker-engine_1.13.1-0~debian-jessie_amd64.deb
 
-/root/dnd.sh &
-sleep 2
+echo "Available space after image upgrade is $(freespace)"
+
+start_docker
 
 docker images -a
 
 UUID=$(arv-keepdocker --force-image-format --project-uuid=$project_uuid $image_repo $image_tag)
 
+echo "Available space after arv-keepdocker is $(freespace)"
+
 echo "Migrated uuid is $UUID"