Parallelise setup.sh.
This commit is contained in:
1 parent
7328c3fe86
commit
71180f97e7
1 file changed
+34
-9
+34
-9
@@ -11,27 +11,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."
|
||||
Reference in new issue
Block a user