#!/bin/sh
#
# rozofs-manager-agent This shell script takes care of starting and stopping
#                      the rozo manager agent.
#
#chkconfig: 35 20 80
#description: rozofs manager agent
#processname: rozofs-manager-agent

### BEGIN INIT INFO
# Provides:          rozofs-manager-agent
# Required-Start:    $network $local_fs
# Required-Stop:     
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: RozoFS manager agent
# Description:       RozoFS is a scale-out NAS file system. This service
#                    provides the rozofs-manager-agent functionality.
### END INIT INFO

RETVAL=0
exec=/usr/bin/rozo
prog=rozofs-manager-agent
pidfile=/var/run/rozo-agent.pid
config=/etc/sysconfig/rozofs-manager-agent

# Source function library.
. /etc/rc.d/init.d/functions

[ $UID -eq 0 ] && [ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

# Default values
AGENTS=auto
PACEMAKER=auto
EXPORTD_RESOURCE_NAME=auto

# Read configuration variable file if it is present
[ -r /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

if echo "$AGENTS" | grep -q 'auto' ; then
    AGENTS_auto=''
    for agent in exportd storaged rozofsmount; do
        if [ -x "/usr/bin/$agent" ] ; then
            AGENTS_auto="$AGENTS_auto $agent"
        fi
    done
    AGENTS=$(echo $AGENTS | sed "s/auto/$AGENTS_auto/")
fi

if [ "$PACEMAKER" = 'auto' ] ; then
    if [ -x /usr/sbin/pacemakerd ] ; then
        PACEMAKER=true
    else
        PACEMAKER=false
    fi
fi

rh_status()
{
  # run checks to determine if the service is running or use generic status
  status -p "$pidfile" "$prog"
}

rh_status_q()
{
  rh_status >/dev/null 2>&1
}

start()
{
  # user had insufficient privilege
  if [ $UID -ne 0 ] ; then
      echo "User has insufficient privilege."
      exit 4
  fi

  # program is not installed
  [ -x $exec ] || exit 5

  echo -n $"Starting $prog: "

  if [ "$PACEMAKER" = 'true' ] ; then

    if [ "$EXPORTD_RESOURCE_NAME" = 'auto' ] ; then
       daemon $exec agent start -p -l $AGENTS
    else
       daemon $exec agent start -p ${EXPORTD_RESOURCE_NAME} -l $AGENTS
    fi

  else
    daemon $exec agent start -l $AGENTS
  fi

  retval=$?
  echo
}

stop()
{
  # user had insufficient privilege
  if [ $UID -ne 0 ] ; then
    echo "User has insufficient privilege."
    exit 4
  fi

  echo -n $"Stopping $prog: "

  if [ -n "`pidofproc -p $pidfile $exec`" ]; then
    $exec agent stop >/dev/null 2>&1
    RETVAL="$?"

    if [ $RETVAL -eq 0 ] ; then
      # rozo agent don't delete his pidfile
      rm -f $pidfile
      success
    else
      failure $"Stopping $prog"
    fi

  else
    failure $"Stopping $prog"
  fi

  echo
  return $RETVAL
}

restart()
{
  rh_status_q && stop
  start
}

force_reload()
{
  # new configuration takes effect after restart
  restart
}

case "$1" in

  start)
    rh_status_q && exit 0
    start
    ;;

  restart)
    restart
    ;;

  status)
    rh_status
    ;;

  force-reload)
    force_reload
    ;;

  stop)
    rh_status_q || exit 0
    stop
    ;;

  condrestart|try-restart)
    rh_status_q || exit 0
    restart
    ;;

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

exit $?
