use different methods for interacting with host machine virtual nodes are on
[tests.git] / system / template-qemu / kill-qemu-node
1 #!/bin/sh
2 # $Id$
3 COMMAND=$(basename $0)
4 cd $(dirname $0)
5 cd ..
6
7 function usage () {
8     echo "Usage: $COMMAND -l"
9     echo "  lists current qemu processes"
10     echo "usage: $COMMAND hostname"
11     echo "  kill qemu instance for that node"
12     exit 1
13 }
14
15 function list_pids () {
16     hostnames="$@"
17     if [[ -n "$hostnames" ]] ; then
18         for hostname in $hostnames; do
19             nodedir=qemu-$hostname
20             cat $nodedir/qemu.pid 2> /dev/null
21         done
22     else
23         pgrep qemu
24     fi
25 }
26
27 function kill_from_file () {
28     file=$1; shift
29     if [ -f $file ] ; then
30         pid=$(cat $file)
31         echo Killing $pid
32         kill $pid
33         mv $file $file.killed
34     fi
35 }    
36
37 function kill_pids () {
38     hostnames="$@"
39     if [[ -n "$hostnames" ]] ; then
40         for hostname in $hostnames; do
41             nodedir=qemu-$hostname
42             kill_from_file $nodedir/qemu.pid
43         done
44     else
45         echo Killing all processes mathing qemu
46         pkill qemu
47     fi
48 }
49
50 function show_pids () {
51     pids=$(list_pids "$@")
52     if [ -n "$pids" ] ; then
53         ps $pids | grep -v $COMMAND || echo Nothing to show
54     else
55         echo Nothing to show
56     fi
57 }
58
59 function main () { 
60     while getopts "lk" opt; do
61         case $opt in
62             l) OPT_LIST=true ;;
63             k) OPT_GREP=true ;;
64             *) usage ;;
65         esac
66     done
67     shift $(($OPTIND -1))
68
69     # listing
70     if [ -n "$OPT_LIST" ] ; then
71         show_pids "$@"
72         exit 0
73     fi
74
75     kill_pids "$@"
76 }
77
78 main "$@"