#!/bin/sh
#
# (c) Copyright 2002 Hewlett-Packard Development Company, L.P.
#
# See "man chkconfig" for information on next two lines (Red Hat only)
# chkconfig: 2345 92 1
# description: hp SNMP Agents. 
#
#
# Following lines are in conformance with LSB 1.2 spec
### BEGIN INIT INFO
# Provides:            hp-snmp-agents
# Required-Start:      hp-health snmp
# Required-Stop:       
# Default-Start:       2 3 4 5
# Default-Stop:        0 1 6
# Description:         starts hp SNMP Agents
### END INIT INFO


NAME="hp Proliant SNMP Agents"

DEP="hpasmd hpasmxld hpasmlited hpasmpld"
DEPSCRIPT=/etc/init.d/hp-health

SERVERSCRIPTS="\
/opt/hp/hp-snmp-agents/server/etc/cmahealthd \
/opt/hp/hp-snmp-agents/server/etc/cmastdeqd \
/opt/hp/hp-snmp-agents/server/etc/cmahostd \
/opt/hp/hp-snmp-agents/server/etc/cmathreshd \
/opt/hp/hp-snmp-agents/server/etc/cmasm2d \
/opt/hp/hp-snmp-agents/server/etc/cmarackd \
/opt/hp/hp-snmp-agents/server/etc/cmaperfd \
/opt/hp/hp-snmp-agents/server/etc/cmapeerd \
"

STORAGESCRIPTS="\
/opt/hp/hp-snmp-agents/storage/etc/cmaeventd \
/opt/hp/hp-snmp-agents/storage/etc/cmafcad \
/opt/hp/hp-snmp-agents/storage/etc/cmasasd \
/opt/hp/hp-snmp-agents/storage/etc/cmaidad \
/opt/hp/hp-snmp-agents/storage/etc/cmaided \
/opt/hp/hp-snmp-agents/storage/etc/cmascsid \
"

NICSCRIPTS="\
/opt/hp/hp-snmp-agents/nic/etc/cmanicd \
"

export CMAINCLUDE="/opt/hp/hp-snmp-agents/server/etc/cmad"
mk_distro() {
#construct distro.txt
OTHER_LINUX_QRY=""
RC=0

if [ ! -f /etc/debian_version ]; then
   OTHER_LINUX_QRY=`rpm -qf /etc/issue | grep "^redhat"`
fi

DISTRO="Unknown"
RELEASE="Unknown"
PRODUCT="Unknown"
if [ -f /etc/SuSE-release ]; then
   DISTRO="SuSE"
   RELEASE=`cat /etc/SuSE-release | grep VERSION | cut -d' ' -f3`
   PRODUCT=`head -n1 /etc/SuSE-release | tr ' ' '\n' | grep -e 'Enterprise' -e 'SLES'`
   if [ "$PRODUCT" = "Enterprise" ]; then
      PRODUCT="$PRODUCT Server"
   fi
elif [ -f /etc/vmware-release ]; then
   DISTRO="VMware"
   PRODUCT="ESX Server"
   #RELEASE=`cat /etc/vmware-release | cut -d' ' -f4`
   RELEASE=`/usr/bin/vmware -v | cut -d' ' -f3-5 | tr ' ' '-' | cut -d"-" -f1`
elif [ -f /etc/redhat-release -a ! -z "$OTHER_LINUX_QRY" ]; then
   DISTRO="Red Hat"
   RELEASE=`head -n1 /etc/redhat-release | tr ' ' '\n' | egrep -A 1 '[Rr]elease' | tail -n 1`
   PRODUCT=`head -n1 /etc/redhat-release | tr ' ' '\n' | grep -e 'Enterprise' -e 'Advanced' -e 'Work'`
   if [ "$PRODUCT" = "Enterprise" ]; then
      M=`head -n1 /etc/redhat-release | tr ' ' '\n' | grep -e 'AS' -e 'ES' -e 'WS'`
      PRODUCT="$PRODUCT Linux $M"
   elif [ "$PRODUCT" = "Work" ]; then
      PRODUCT="Workstation Edition"
   else
      PRODUCT="Professional"
   fi
elif [ -f /etc/redhat-release -a -z "$OTHER_LINUX_QRY" ]; then
   XENSERVER=`head -n1 /etc/redhat-release | tr ' ' '\n' | grep -e "^XenServer"`
   if [ "x$XENSERVER" != "x" ]; then
      DISTRO="$XENSERVER"
      RELEASE=`head -n1 /etc/redhat-release | tr ' ' '\n' | egrep -A 1 '[Rr]elease' | tail -n 1`
      PRODUCT=`head -n1 /etc/redhat-release | tr ' ' '\n' | egrep '[eE]nterprise'`
      if [ "x$PRODUCT" != "x" ]; then
         PRODUCT="Enterprise"
      fi
   else
      DISTRO="Oracle"
      RELEASE=""
      PRODUCT=""
   fi
elif [ -f /etc/UnitedLinux-release ]; then
   DISTRO="UnitedLinux"
   RELEASE=`cat /etc/UnitedLinux-release | grep VERSION | cut -d' ' -f3`
   PRODUCT=""
elif [ -d /etc/vmware ]; then
   # this could be a VMware Box
   DISTRO="VMware"
   #RELEASE=`/usr/bin/vmware -v | cut -d' ' -f4-5 | tr ' ' '-'`
   RELEASE=`/usr/bin/vmware -v | cut -d' ' -f3-5 | tr ' ' '-' | cut -d"-" -f1`
   PRODUCT="ESX Server"
elif which lsb_release > /dev/null; then
   DISTRO="$(lsb_release -is)"
   RELEASE="$(lsb_release -rs)"
   PRODUCT="$(lsb_release -ds)"
fi

echo "$DISTRO:$PRODUCT:$RELEASE" >/opt/hp/hp-snmp-agents/distro.txt
}

case "$1" in
   start)
      RC=0;
      mk_distro
      if [ -z "`pidof $DEP`" ]; then 
	 if [ -f ${DEPSCRIPT} ]; then
         	$DEPSCRIPT start
         	RC=$?
	 fi
         echo
      fi
      if [ "$RC" -ne "0" ]; then
         echo "$DEPSCRIPT: failed to start! Please review log file for details."
         echo "The log file locations are documented in the hp-health(4) man page."
         echo
         exit $RC
      fi
      for SCRIPT in $SERVERSCRIPTS $STORAGESCRIPTS $NICSCRIPTS; do
         if [ -x $SCRIPT ]; then
            sh $SCRIPT start
         fi
      done
      [ -f /etc/redhat-release ] && touch /var/lock/subsys/hp-snmp-agents
   ;;
   stop)
      for SCRIPT in  $NICSCRIPTS $STORAGESCRIPTS $SERVERSCRIPTS; do
         if [ -x $SCRIPT ]; then
            sh $SCRIPT stop
         fi
      done
      [ -f /etc/redhat-release ] && rm -rf /var/lock/subsys/hp-snmp-agents
   ;;
   restart)
      $0 stop
      sleep 5
      $0 start
   ;;
   status)
      for SCRIPT in $SERVERSCRIPTS $STORAGESCRIPTS $NICSCRIPTS; do
         if [ -x $SCRIPT ]; then
            sh $SCRIPT status
         fi
      done
   ;;
   *)
     echo "Usage: /etc/init.d/hp-snmp-agents {start|stop|restart|status}"
     exit 1
esac

exit 0 
