Merge pull request #2704 from weaveworks/2647-parallelise-setup

Parallelise setup.sh's individual tasks.
This commit is contained in:
Bryan Boreham authored and GitHub committed 2017-01-09 12:30:53 +00:00
commit cef8c908d0
1 file changed
+35 -9
+35 -9
View File
@@ -2,6 +2,7 @@
set -e
begin=$(date +%s)
cd "$(dirname "${BASH_SOURCE[0]}")"
. ./config.sh
@@ -11,27 +12,52 @@ cd "$(dirname "${BASH_SOURCE[0]}")"
echo "Copying weave images, scripts, and certificates to hosts, and"
echo " prefetch test images"
exists_on() {
docker_on $1 inspect --format=" " $2 >/dev/null 2>&1
}
pull_if_missing() {
if ! exists_on "$1" "$2" ; then
echo "Pulling $2 on $1..."
docker_on $1 pull $2 > /dev/null
fi
}
setup_host() {
HOST=$1
docker_on $HOST load -i ../weave.tar.gz
local HOST=$1
docker_on $HOST load -i ../weave.tar.gz &
local pids="$!"
DANGLING_IMAGES="$(docker_on $HOST images -q -f dangling=true)"
[ -n "$DANGLING_IMAGES" ] && docker_on $HOST rmi $DANGLING_IMAGES 1>/dev/null 2>&1 || true
run_on $HOST mkdir -p bin
upload_executable $HOST ../bin/docker-ns
upload_executable $HOST ../weave
rsync -az -e "$SSH" --exclude=tls ./tls/ $HOST:~/tls
upload_executable $HOST ../bin/docker-ns &
local pids="$pids $!"
upload_executable $HOST ../weave &
local pids="$pids $!"
rsync -az -e "$SSH" --exclude=tls ./tls/ $HOST:~/tls &
local pids="$pids $!"
for IMG in $TEST_IMAGES ; do
docker_on $HOST inspect --format=" " $IMG >/dev/null 2>&1 || docker_on $HOST pull $IMG
pull_if_missing "$HOST" "$IMG"
local pids="$pids $!"
done
for pid in $pids; do wait $pid; done
}
ppids=""
for HOST in $HOSTS; do
setup_host $HOST &
pids="$pids $!"
ppids="$ppids $!"
done
# Wait individually for tasks so we fail-exit on any non-zero return code
# ('wait' on its own always returns 0)
for pid in $pids; do
wait $pid;
for ppid in $ppids; do
wait $ppid;
done
echo "Setup completed successfully in $(date -u -d @$(($(date +%s)-$begin)) +"%T")."