summaryrefslogtreecommitdiffstats
path: root/os-plugins/plugins/xen/files/xen.examples/scripts/vm-monitor
blob: 1c9a179143ec7c4e2753c25b5c50421635b8cb41 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/bin/bash

basedir=$(dirname "$0")
HA_TICK=2

monitor() {
	local path=$1
	local name=$2
	local uuid=$3
	local host=$4
	local count=0
	path=$path/lock

    while :
    do
		echo "name=$name uuid=$uuid host=$host count=$count" > $path
		count=$(($count+1))
		sleep $HA_TICK
    done&
}

create_lock() {
	local path=$1/lock
	local rc=0

        [ -f $path ] || touch $path
        flock -x -w $HA_TICK $path $basedir/vm-monitor $*
	rc=$?
	if [ $rc -eq 1 ]; then
    		echo `cat $path`
		exit 1
	else
		exit $rc
	fi
}

if [ $0 = "$basedir/set-lock" ]; then
	create_lock $*
elif [ $0 = "$basedir/vm-monitor" ]; then
	monitor $*
fi