#!/bin/sh
#
### BEGIN INIT INFO
# Provides: osaffmd
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Should-Start: 
# Should-Stop: 
# Default-Start: 
# Default-Stop: 
# Short-Description: Start and stop the OpenSAF FM Server
# Description: OpenSAF FM Server Daemon
### END INIT INFO

osafdirfile=/etc/opensaf/osafdir.conf
nodeinfofile=/etc/plmcd.conf
osafprog="osaffmd"
initscript=`basename $0`

# Source LSB functions library
. /lib/lsb/init-functions

if [ ! -r $osafdirfile ]; then
	logger -t $osafprog "can't read $osafdirfile, exiting."
	exit 6
else
	. $osafdirfile
	. $pkgsysconfdir/nid.conf
	. $pkgsysconfdir/fmd.conf
	export FMS_CONF_FILE=$pkgsysconfdir/fmd.conf
fi	

if [ -f $nodeinfofile ]; then
	ee_id=`grep -i safEE $nodeinfofile`
	if [ $? -eq 0 ]; then
		export EE_ID=$ee_id
	fi
fi
         
binary=$pkglibdir/$osafprog
pidfile=$pkgpiddir/$osafprog.pid
lockfile=$lockdir/$initscript

RETVAL=0
NIDSERV="HLFM"
COMPNAMEFILE=$pkglocalstatedir/fmd_comp_name

start() {
	export LD_LIBRARY_PATH=$pkglibdir:$LD_LIBRARY_PATH
	[ -p $NIDFIFO ] || exit 1
	if [ ! -x $binary ]; then
		echo "$NID_MAGIC:$NIDSERV:$DAEMON_NOT_FND" > $NIDFIFO
		exit 5
	fi
	export FM_COMP_NAME_FILE=$COMPNAMEFILE
	echo -n "Starting $osafprog: "
	start_daemon -p $pidfile $binary $args
	RETVAL=$?
	if [ $RETVAL -eq 0 ]; then
		touch $lockfile
		log_success_msg
	else
		log_failure_msg
		echo "$NID_MAGIC:$NIDSERV:$DAEMON_START_FAILED" > $NIDFIFO
	fi
	return $RETVAL
}

instantiate() {
	echo -n "AMF Instantiating $osafprog: "
	echo $SA_AMF_COMPONENT_NAME > $COMPNAMEFILE
	pidofproc -p $pidfile $binary
	RETVAL=$?
	if [ $RETVAL -eq 0 ]; then
		killproc -p $pidfile $binary -USR1
		RETVAL=$?
	else
		start_daemon -p $pidfile $binary $args
		RETVAL=$?
	fi
	if [ $RETVAL -eq 0 ]; then
		log_success_msg
	else
		log_failure_msg
	fi
	return $RETVAL
}

stop() {
	echo -n "Stopping $osafprog: "
	killproc -p $pidfile $binary
	RETVAL=$?
	if [ $RETVAL -eq 0 ] || [ $RETVAL -eq 7 ]; then
		rm -f $COMPNAMEFILE
		rm -f $lockfile
		log_success_msg
		RETVAL=0
	else
		log_failure_msg
	fi
	return $RETVAL
}

restart() {
	stop
	start
}

tryrestart() {
	[ -e $lockfile ] && restart
	return 0
}

reload() {
	echo -n "Reloading $osafprog: "
	log_warning_msg
	logger -t $osafprog "reloading configuration is currently an unimplemented LSB feature"
	return 3
}

forcereload() {
	reload
	restart
	return 0
}

status() {
	pidofproc -p $pidfile $binary
	RETVAL=$?
	return $RETVAL
}

case "$1" in
  start)
	start
	RETVAL=$?
	;;
  instantiate)
	instantiate
	RETVAL=$?
	;;
  stop)
	stop
	RETVAL=$?
	;;
  restart)
	restart
	RETVAL=$?
	;;
  try-restart|condrestart)
	tryrestart
	RETVAL=$?
	;;
  reload)
	reload
	RETVAL=$?
	;;
  force-reload)
	forcereload
	RETVAL=$?
	;;
  status)
	status
	RETVAL=$?
	;;
  *)
	echo "Usage: $0 {start|instantiate|stop|restart|try-restart|reload|force-reload|status}"
	RETVAL=2
esac

exit $RETVAL
