#!/bin/bash
#	       
# chkconfig: 2345 99 1
### BEGIN INIT INFO
# Provides: libstoragemgmtd
# Required-Start: $remote_fs $local_fs
# Required-Stop: $remote_fs $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: libStorageMgmt plug-in daemon
# Description: libStorageMgmt plug-in daemon
### END INIT INFO

. /etc/init.d/functions

NAME=lsmd
PROG=/usr/bin/$NAME
PID=/var/run/lsm/lsmd.pid
LOCK=/var/lock/subsys/libstoragemgmtd

RETVAL=0
STATUS=0

if [ "`id -u`" != 0 ] ; then
	echo "Not root"
	exit 4
fi

check_dirs() {
	test -d /var/run/lsm || mkdir -p /var/run/lsm/ipc
	test -d /var/run/lsm/ipc || mkdir -p /var/run/lsm/ipc
}

status_lsm() {
	status -p $PID $NAME > /dev/null 2>&1
	STATUS=$?
}

result() {
	if [ $RETVAL -eq 0 ]; then
		success
	else
		failure
	fi
	echo
}

int_start() {
	$PROG
	RETVAL=$?
	[ $RETVAL -eq 0 ] && touch $LOCK && pidof $NAME > $PID
}

# See how we were called.
case "$1" in
  start)
	status_lsm
	check_dirs

	echo -n "Starting $NAME daemon:		"

	if [ $STATUS != 0 ] ; then
		int_start
	else	
		RETVAL=$STATUS
	fi

	result
	;;
  force-stop|stop)
	echo -n $"Stopping $NAME daemon: "
	status_lsm
	if [ $STATUS == 0 ] ; then
		killproc -p $PID $NAME -TERM
		RETVAL=$?

		if [ $RETVAL -eq 0 ]; then
			rm -f $LOCK
			rm -f $PID
		fi
	else
		RETVAL=0
	fi

	result
	;;
  force-reload | reload)
	status_lsm
	check_dirs
	echo -n $"Reloading $NAME daemon: "
	if [ $STATUS == 0 ] ; then
		killproc -p $PID $NAME -HUP
		RETVAL=$?
	else
		int_start
	fi

	result
	;;
  restart)
	status_lsm
	check_dirs
	echo -n $"Restarting $NAME daemon: "	
	if [ $STATUS == 0 ] ; then
		killproc -p $PID $NAME -HUP
	else
		int_start
	fi

	result
	;;

  status)
	status -p $PID $NAME
	RETVAL=$?
	;;

  *)
	echo $"Usage: $0 {start|stop|restart|reload|status|force-stop}"
	;;
esac

exit $RETVAL

