#!/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="cmathreshd cmahostd cmapeerd"
EXPNAMES=`egrep "^exclude" /opt/compaq/cma.conf 2>/dev/null | cut -b 8- 2> /dev/null`
SNMPD="snmpd"
USAGE="Usage: $PNAME {start|stop|restart|status} [cmapeerd|cmahostd|cmathreshd|]..."

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

cmausage () {
  cmaecho $USAGE
}


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

OPCODE=$1
shift
TEMP=$*

if [ -z "$TEMP" ]; then
	TEMP=$PNAMES
fi

AGENTS=""
for i in $TEMP; do
	if [ ! -z "`echo $PNAMES | grep $i`" ]; then
		if [ -z "`echo $EXPNAMES | grep $i`" ]; then
			AGENTS="$AGENTS $i"
		fi
	fi
done

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

RETVAL=0
PATH=/opt/compaq/foundation/bin:$PATH
case "$OPCODE" in
  start)
	snmppid=`ps -ef | grep $SNMPD`
	if [ -z "$snmppid" ]; then
	  cmaecho "Can not start $PNAME! ($SNMPD is not running)"
          cmaecho
	  exit 1 
	fi	
	cmaecho "Starting $NAME ($PNAME): $AGENTS"
	for AGENT in $AGENTS; do
	  [ -x $ETCROOT/$AGENT ] && $ETCROOT/$AGENT start
	done
	cmaecho
	;;
  stop)
	cmaecho "Shutting down $NAME ($PNAME): $AGENTS"
	for AGENT in $AGENTS; do
	  [ -x $ETCROOT/$AGENT ] && $ETCROOT/$AGENT stop
	done
	cmaecho
	;;
  restart)
	cmaecho "Re-starting $NAME ($PNAME): $AGENTS"
	for AGENT in $AGENTS; do
	  [ -x $ETCROOT/$AGENT ] && $ETCROOT/$AGENT restart
	done
	cmaecho
	;;
  status)
        RETVAL=0
	cmaecho "Status of $NAME ($PNAME): $AGENTS"
	for AGENT in $AGENTS; do
	  [ -x $ETCROOT/$AGENT ] && $ETCROOT/$AGENT status
          temprc=$?
          if [ $RETVAL = 0 ];then
             RETVAL=$temprc
          fi
	done
	;;
  *)
	cmausage
	exit 1
esac

exit $RETVAL
