#!/bin/sh

# the following is the LSB init header see
# http://www.linux-foundation.org/spec//booksets/LSB-Core-generic/LSB-Core-generic.html#INITSCRCOMCONV
#
### BEGIN INIT INFO
# Provides:          virtlockd
# Required-Start:    $network $remote_fs
# Default-Start:     3 4 5
# Required-Stop:     $network $remote_fs
# Short-Description: virtual machine lock manager
# Description:       This is a daemon for managing locks
#                    on virtual machine disk images
### END INIT INFO

# the following is chkconfig init header
#
# virtlockd:   virtual machine lock manager
#
# chkconfig: 345 97 03
# description:  This is a daemon for managing locks \
#               on virtual machine disk images
#
# processname: virtlockd
# pidfile: /var/run/libvirt/virtlockd.pid
#

. /etc/rc.status
rc_reset

SERVICE=virtlockd
PROCESS=/usr/sbin/virtlockd
PIDFILE=/var/run/libvirt/lockd/$SERVICE.pid

VIRTLOCKD_ARGS=

test -f /etc/sysconfig/virtlockd && . /etc/sysconfig/virtlockd

if [ -d /var/lock/subsys ]; then
    VAR_SUBSYS_VIRTLOCKD=/var/lock/subsys/$SERVICE
else
    VAR_SUBSYS_VIRTLOCKD=/var/lock/$SERVICE
fi

start() {
    echo -n $"Starting $SERVICE "
    startproc $PROCESS --daemon $VIRTLOCKD_ARGS
    RETVAL=$?
    rc_status -v
    [ $RETVAL -eq 0 ] && touch $VAR_SUBSYS_VIRTLOCKD
}

stop() {
    echo -n $"Stopping $SERVICE "

    killproc -p $PIDFILE $PROCESS > /dev/null 2>&1
    RETVAL=$?
    rc_status -v
    if [ $RETVAL -eq 0 ]; then
        rm -f $VAR_SUBSYS_VIRTLOCKD
        rm -f $PIDFILE
    fi
}

restart() {
    stop
    start
}

reload() {
    echo -n $"Reloading $SERVICE configuration: "

    killproc -p $PIDFILE $PROCESS -HUP
    rc_status
}

# See how we were called.
case "$1" in
    start|stop|restart|reload)
        $1
        ;;
    status)
        echo -n "Checking status of $SERVICE "
        checkproc $PROCESS
        rc_status -v
        ;;
    force-reload)
        reload
        ;;
    condrestart|try-restart)
        [ -f $VAR_SUBSYS_VIRTLOCKD ] && restart || :
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|force-reload|try-restart}"
        rc_failed 2
        rc_exit
        ;;
esac
rc_exit
