#!/bin/bash
TO_REAP=""
maxwait=30
marker="/run/runcmd.time"
userdata="#cloud-config
runcmd:
- ['sh', '-c', 'cat /proc/uptime | tee -a $marker']
"
cleanup() {
for name in $TO_REAP; do
echo "killing $name"
lxc delete --force $TO_REAP
done
}
fail() { echo "$@" 1>&2; exit 1; }
trap cleanup EXIT
releases=$(ubuntu-distro-info --supported) ||
releases="precise trusty xenial yakkety"
for rel in $releases; do
name="$rel-udtest"
lxc launch "ubuntu-daily:$rel" "$name" \
"--config=user.user-data=$userdata" &&
TO_REAP="$name" || fail "failed launching $name"
echo "launched $name"
up=""
for i in $(seq 0 $maxwait); do
out=$(lxc exec "$name" -- sh -ec '
f=$1;
[ -e "$f" ] || exit 9
read up idle <"$f"
echo $up' checkit "$marker")
ret=$?
if [ $ret -eq 0 ]; then
up="$out"
break
elif [ $ret -eq 9 ]; then
echo -n "."
fi
sleep 1
done
if [ -n "$up" ]; then
echo "$name up after $out"
lxc delete --force "$name" && TO_REAP=""
else
fail "$name: not up after $maxwait"
fi
done