diff options
author | Lars Wirzenius <liw@liw.fi> | 2013-07-31 07:41:07 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2013-07-31 07:41:07 +0100 |
commit | fc6bbca3fd6595a6c10aeb1c88c2cc90d0eb75c8 (patch) | |
tree | 09a653b694b413cc8ab2ac8d8a004d1b1c8d9a42 | |
parent | 72a71b3db83c6d1595a48a5ed3fc590108c65f05 (diff) | |
download | jenkinstool-fc6bbca3fd6595a6c10aeb1c88c2cc90d0eb75c8.tar.gz |
Add better script to start/stop VMs
-rwxr-xr-x | start-all | 18 | ||||
-rwxr-xr-x | vm-all | 92 |
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 @@ -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 |