Merge "Print undercloud IP after deployment"
[apex.git] / build / cache.sh
index b8cd8ec..a88ffce 100644 (file)
@@ -25,14 +25,17 @@ function cache_git_tar {
 # $2 = filename to write to
 function curl_file {
     echo "Downloading $1"
-    echo "Cache location: $CACHE_DIR/$2"
-    curl -L $1 > $CACHE_DIR/$2
+    echo "Cache download location: $CACHE_DIR/$2"
+    until curl -C- -L -o $CACHE_DIR/$2 $1  || (( count++ >= 20 )); do
+        echo -n '' #do nothing, we just want to loop
+    done
     sed -i "/$2/d" $CACHE_DIR/.cache
     echo "$(md5sum $CACHE_DIR/$2) $2" >> $CACHE_DIR/.cache
 }
 
 # $1 =  download url
 function populate_cache {
+    local my_md5
     cache_dir
 
     # get the file name
@@ -40,15 +43,25 @@ function populate_cache {
 
     # check if the cache file exists
     # and if it has an md5 compare that
-    echo "Checking cache file: $1"
+    echo "Checking cache file exists: ${filename}"
     if [ ! -f $CACHE_DIR/${filename} ]; then
+        echo "Cache file: ${CACHE_DIR}/${filename} missing...will download..."
         curl_file $1 $filename
     else
-        remote_md5="$(curl -L ${1}.md5 | awk {'print $1'})"
+        echo "Cache file exists...comparing MD5 checksum"
+        remote_md5="$(curl -sf -L ${1}.md5 | awk {'print $1'})"
         if [ -z "$remote_md5" ]; then
             echo "Got empty MD5 from remote for $filename, skipping MD5 check"
-        elif [ "$remote_md5" != "$(grep ${filename} $CACHE_DIR/.cache | awk {'print $1'})" ]; then
             curl_file $1 $filename
+        else
+            my_md5=$(grep ${filename} $CACHE_DIR/.cache | awk {'print $1'})
+            if [ "$remote_md5" != "$my_md5" ]; then
+                echo "MD5 mismatch: Remote MD5 is ${remote_md5}, Cache file MD5 is ${my_md5}"
+                echo "Downloading $filename"
+                curl_file $1 $filename
+            else
+              echo "Will use cache for ${filename}"
+            fi
         fi
     fi
 }