summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2013-07-31 07:41:07 +0100
committerLars Wirzenius <liw@liw.fi>2013-07-31 07:41:07 +0100
commitfc6bbca3fd6595a6c10aeb1c88c2cc90d0eb75c8 (patch)
tree09a653b694b413cc8ab2ac8d8a004d1b1c8d9a42
parent72a71b3db83c6d1595a48a5ed3fc590108c65f05 (diff)
downloadjenkinstool-fc6bbca3fd6595a6c10aeb1c88c2cc90d0eb75c8.tar.gz
Add better script to start/stop VMs
-rwxr-xr-xstart-all18
-rwxr-xr-xvm-all92
2 files changed, 92 insertions, 18 deletions
diff --git a/start-all b/start-all
deleted file mode 100755
index 983a0e1..0000000
--- a/start-all
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-set -eu
-
-start_vm()
-{
- echo "$1"
- virsh --connect qemu:///system start "$1" || true
- sleep 10
-}
-
-start_vm jenkins
-start_vm jenkins-squeeze-amd64
-start_vm jenkins-squeeze-i386
-start_vm jenkins-wheezy-amd64
-start_vm jenkins-wheezy-i386
-start_vm jenkins-sid-amd64
-start_vm jenkins-sid-i386
diff --git a/vm-all b/vm-all
new file mode 100755
index 0000000..819c437
--- /dev/null
+++ b/vm-all
@@ -0,0 +1,92 @@
+#!/bin/sh
+
+set -eu
+
+VMLIST="
+jenkins
+jenkins-squeeze-amd64
+jenkins-squeeze-i386
+jenkins-wheezy-amd64
+jenkins-wheezy-i386
+jenkins-sid-amd64
+jenkins-sid-i386
+"
+
+TRIES=10
+DELAY=10
+
+ssh_is_open()
+{
+ if nc < /dev/null "$1" 22 > /dev/null
+ then
+ return 0
+ else
+ return 1
+ fi
+}
+
+
+vm_is_running()
+{
+ if virsh list | awk -v "x=$1" '$2 == x' | grep . > /dev/null
+ then
+ return 0
+ else
+ return 1
+ fi
+}
+
+
+start_vm()
+{
+ echo "$1"
+ virsh --connect qemu:///system start "$1" || true
+ for i in $(seq $TRIES)
+ do
+ if ssh_is_open "$1"
+ then
+ return 0
+ fi
+ sleep $DELAY
+ done
+ return 1
+}
+
+
+shutdown_vm()
+{
+ echo "$1"
+ virsh --connect qemu:///system shutdown "$1" || true
+ for i in $(seq $TRIES)
+ do
+ if ! vm_is_running "$1"
+ then
+ return 0
+ fi
+ sleep $DELAY
+ done
+ return 1
+}
+
+
+case "$1" in
+ start)
+ func=start_vm
+ ;;
+ shutdown)
+ func=shutdown_vm
+ ;;
+ *)
+ echo "Unknown operation $1" 1>&2
+ exit 1
+ ;;
+esac
+
+for vm in $VMLIST
+do
+ if ! $func $vm
+ then
+ echo "Failed to start $vm (or it took too long)" 1>&2
+ exit 1
+ fi
+done