#!/bin/bash

# Copyright 2002 Compaq Information Technologies Group, L.P.
#
# cmafdtn init file for Foundation Agents
#
# See "man chkconfig" for information on next two lines (Red Hat only)
# chkconfig: - 99 1
# description: Foundation Agents - Linux
#
# See "man insserv" for information on next eight lines (SuSE only)
### BEGIN INIT INFO
# Provides:            cmafdtn
# Required-Start:      ucdsnmp
# Required-Stop:
# Default-Start:       2 3 5
# Default-Stop:        0 1 6
# Description:         starts cmafdtn (Foundation Agents)
### END INIT INFO
#
# Other HP Insight Management Agents for Servers
#    cmasvr  : Server Agents - Linux
#    cmastor : Storage Agents - Linux
#    cmanic  : NIC Agents - Linux

LOGFILE=/var/spool/compaq/cma.log
NAME="Foundation Agents"
ETCROOT="/opt/compaq/foundation/etc"
PNAME="cmafdtn"
PNAMES="cmafdtnpeerd cmahostd cmathreshd cmawebd"
SNMPD="snmpd"
USAGE="Usage: $PNAME {start|stop|restart|status} [cmafdtnpeerd|cmahostd|cmathreshd|cmawebd]..."

cmaecho () {
  echo $*
  echo $* >>$LOGFILE 2>&1
}

cmausage () {
  cmaecho $USAGE
}


if [ "$#" -lt 1 ]; then
  cmausage
  exit 1
fi

OPCODE=$1
shift
AGENTS=$*

for i in $AGENTS; do
  FOUND=0
  for j in $PNAMES; do
    if [ $i = $j ]; then
      FOUND=1
      break;
    fi
  done
  if [ $FOUND = "0" ]; then
    cmausage
    exit 1
  fi
done

# echo "OPCODE = $OPCODE, AGENTS = $AGENTS"
# echo "VENDOR = $VENDOR"

[ -d /var/lock/subsys ] && VARLOCKSUBSYS=1 || VARLOCKSUBSYS=0

RETVAL=0
# source function library
. /etc/rc.d/init.d/functions
PATH=/opt/compaq/foundation/bin:$PATH
case "$OPCODE" in
  start)
	snmppid=`pidof $SNMPD`
	if [ -z "$snmppid" ]; then
	  cmaecho
	  cmaecho "Can not start $PNAME! ($SNMPD is not running)"
	  RETVAL=1
	else
	  if [ -z "$AGENTS" ]; then #start all agents
	    cmaecho "Starting $NAME ($PNAME): All agents"
	    for AGENT in $PNAMES; do
	      [ -x $ETCROOT/$AGENT ] && $ETCROOT/$AGENT start
	    done
	  else
	    cmaecho "Starting $NAME ($PNAME): $AGENTS"
	    for AGENT in $AGENTS; do
	      [ -x $ETCROOT/$AGENT ] && $ETCROOT/$AGENT start
	    done
	  fi
	  [ "$VARLOCKSUBSYS" = "1" ] && touch /var/lock/subsys/$PNAME
	fi
	cmaecho
	;;
  stop)
	if [ -z "$AGENTS" ]; then #stop all agents
	  cmaecho "Shutting down $NAME ($PNAME): All agents"
	  for AGENT in $PNAMES; do
	    [ -x $ETCROOT/$AGENT ] && $ETCROOT/$AGENT stop
	  done
	else
	  cmaecho "Shutting down $NAME ($PNAME): $AGENTS"
	  for AGENT in $AGENTS; do
	    [ -x $ETCROOT/$AGENT ] && $ETCROOT/$AGENT stop
	  done
	fi
	if  [ "$VARLOCKSUBSYS" = "1" ]; then
	  REMOVELOCK=1
	  for AGENT in $PNAMES; do
	    pidlist=`pidof -o $$ $AGENT`
	    if [ ! -z "$pidlist" ]; then
	      REMOVELOCK=0
	      break;
	    fi
	  done
	  [ $REMOVELOCK = "1" ] && rm -f /var/lock/subsys/$PNAME
	fi
	cmaecho
	;;
  restart)
	if [ -z "$AGENTS" ]; then #restart all agents
	  cmaecho "Re-starting $NAME ($PNAME): All agents"
	  for AGENT in $PNAMES; do
	    [ -x $ETCROOT/$AGENT ] && $ETCROOT/$AGENT restart
	  done
	else
	  cmaecho "Re-starting $NAME ($PNAME): $AGENTS"
	  for AGENT in $AGENTS; do
	    [ -x $ETCROOT/$AGENT ] && $ETCROOT/$AGENT restart
	  done
	fi
	cmaecho
	;;
  status)
	if [ -z "$AGENTS" ]; then #status all agents
	  for AGENT in $PNAMES; do
	    [ -x $ETCROOT/$AGENT ] && $ETCROOT/$AGENT status
	  done
	else
	  for AGENT in $AGENTS; do
	    [ -x $ETCROOT/$AGENT ] && $ETCROOT/$AGENT status
	  done
	fi
	RETVAL=$?
	;;
  *)
	cmausage
	exit 1
esac

exit $RETVAL
