@cryptotaxi247 / infra / commits / 89b3b322

* If no ID is given, compute one.

svn path=/configurations/trunk/tud/; revision=27051

Eelco Dolstra committed Apr 29, 2011 at 14:37 UTC 89b3b32293d928a7b0bb5b6f7b69d2979090b90a
1 file changed +16 -13
cloud/scripts/create-vm
+16 -13
@@ -3,9 +3,13 @@
3 set -e
4
5 id="$1"
6 +
7 +# Assign a number to the VM. From this we derive the MAC and IPv6 addresses.
8 +lastnr=$(flock -x /vmdisks/adhoc-cloud/lock -c 'lastnr=$(cat /vmdisks/adhoc-cloud/last-nr || echo 65536); lastnr=$(($lastnr + 1)); echo $lastnr; echo $lastnr > /vmdisks/adhoc-cloud/last-nr')
9 +
10 +# If no id is given, use the number.
11 if [ -z "$id" ]; then
7 - echo "Syntax: $0 ID"
8 - exit 1
12 + id="i-$lastnr"
13 fi
14
15 xml=/vmdisks/adhoc-cloud/"$id".xml
@@ -13,20 +17,17 @@ image=/vmdisks/adhoc-cloud/"$id".qcow2
17 info=/vmdisks/adhoc-cloud/"$id".info
18
19 if [ -e "$info" -o -e "$xml" -o -e "$image" ]; then
16 - echo "Virtual machine $id exists!"
20 + echo "Virtual machine $id exists!" >&2
21 exit 1
22 fi
23
20 -# Assign a number to the VM. From this we derive the MAC and IPv6 addresses.
21 -lastnr=$(flock -x /vmdisks/adhoc-cloud/lock -c 'lastnr=$(cat /vmdisks/adhoc-cloud/last-nr || echo 65536); lastnr=$(($lastnr + 1)); echo $lastnr; echo $lastnr > /vmdisks/adhoc-cloud/last-nr')
22 -
24 # Compute the MAC.
25 hex=$(printf "%06x" $lastnr)
26 mac="00:16:3e:${hex:0:2}:${hex:2:2}:${hex:4:2}"
27 ipv6="2001:610:685:1:216:3eff:fe${hex:0:2}:${hex:2:2}${hex:4:2}"
28
28 -echo "MAC address is $mac"
29 -echo "IPv6 address is $ipv6"
29 +echo "MAC address is $mac" >&2
30 +echo "IPv6 address is $ipv6" >&2
31
32 echo "$ipv6" > "$info"
33
@@ -60,18 +61,20 @@ cat > "$xml" <<EOF
61 </domain>
62 EOF
63
63 -qemu-img create -f qcow2 "$image" -b /vmdisks/nixos-0.1pre26294-x86_64-base.qcow2
64 +qemu-img create -f qcow2 "$image" -b /vmdisks/nixos-0.1pre26294-x86_64-base.qcow2 >&2
65
65 -virsh define "$xml"
66 +virsh define "$xml" >&2
67
67 -virsh start "adhoc-cloud-$id"
68 +virsh start "adhoc-cloud-$id" >&2
69
70 # Wait until SSH is up.
71 if [ "$ASYNC" != 1 ]; then
72 echo -n "Waiting for machine to finish booting..." >&2
73 for ((i = 0; i < 60; i++)); do
74 if ping6 -c1 "$ipv6" > /dev/null; then break; fi
74 - echo -n "."
75 + echo -n "." >&2
76 done
76 - echo
77 + echo >&2
78 fi
79 +
80 +echo $id