#!/bin/sh set -eu VMLIST=" jenkins jenkins-wheezy-amd64 jenkins-wheezy-i386 jenkins-sid-amd64 jenkins-sid-i386 " TRIES=20 DELAY=1 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 $1 on $vm (or it took too long)" 1>&2 exit 1 fi done