#!/bin/sh
#****************************************************************
# *	Copyright (C) 2003, Wistron Inc.  All Rights Reserved.
# *	File Name:		startagent
# *	Author:			Jerry Zhou
# *	Create Time: 	2003-07-29 16:05:02
# *	Last Update: 	2003-07-29 16:05:02
#****************************************************************
executeFileList="wprocd wsmbdrv_server armc_server wasm6p_server hmad perfevtd wsma_server rca"
stopFileList="wprocd hmad perfevtd wsma_server wasm6p_server armc_server wsmbdrv_server rca"
snmp_installed=n
pegasus_exec=/usr/local/share/pegasus/cim_server
snmp_server=/etc/init.d/snmpd

show_status()
{
	for i in $executeFileList
	do
		executeFile=/etc/rc.d/init.d/$i
		if [ -e $executeFile ] ; then
			$executeFile status 2>/dev/null | sed 's/rcmserver/remote console agent/g'
		fi
	done
}

if $pegasus_exec status 2>/dev/null |grep "is stopped" &>/dev/null; then
        cimserver_running=0
else
        cimserver_running=1
fi

case $1 in
	start)
		if rpm -qa | grep ^ucd-snmp-4.2 1>/dev/null 2>/dev/null ; then
			snmp_installed=y
		else
			if rpm -qa|grep ^net-snmp-5 1>/dev/null 2>/dev/null ; then
				snmp_installed=y
			else
				echo "No snmp package installed!"
				snmp_installed=n
			fi
		fi
		###  There should a short pause between SNMP daemon and its sub-agents, or the AgentX
                ###  may fail. but the length of the pause. so i have to mark up this line.
		# $snmp_server stop 1>/dev/null 2>/dev/null 

		if [ $cimserver_running -eq 1 ]; then
			Start_Restart="Restart"
			$pegasus_exec stop 1>/dev/null 2>/dev/null
		else
			Start_Restart="Start"
		fi
		$pegasus_exec start 1>/dev/null 2>/dev/null

		if ps -A|grep cimserver 1>/dev/null 2>/dev/null ; then
			echo $Start_Restart " pegasus server ... ok"
		else
			echo $Start_Restart " pegasus server ... failed"
		fi
		for i in $executeFileList
		do
			executeFile=/etc/rc.d/init.d/$i
			if [ -e $executeFile ] ; then
				$executeFile stop 1>/dev/null 2>/dev/null
				$executeFile start 1>/dev/null 2>/dev/null
			fi
		done
		sleep 3
		echo ""
		show_status
		;;
	stop)
		if [ $cimserver_running -eq 1 ]; then
			echo "stop pegasus server ..."
			$pegasus_exec stop 1>/dev/null 2>/dev/null
		fi
		for i in $stopFileList
		do
			executeFile=/etc/rc.d/init.d/$i
			if [ -e $executeFile ] ; then
				$executeFile stop 1>/dev/null 2>/dev/null
				case $i in
					wsmbdrv)
						echo "Stopping drivers ... ok"
						;;
					armc_server)
						echo "Stopping armc agent ... ok"
						;;
					wasm6p_server)
						echo "Stopping asm6p agent ... ok"
						;;
					hmad)
						echo "Stopping health monitor agent ... ok"
						;;
					perfevtd)
						echo "Stopping performance event daemon ... ok"
						;;
					wsma_server)
						echo "Stopping system monitor agent ... ok"
						;;
					rca)
						echo "Stopping remote console agent ... ok"
						;;
				esac
			fi
		done
		if [ $cimserver_running -eq 1 ]; then
			echo "start pegasus server ..."
			$pegasus_exec start
		fi
		;;
	status)
		show_status
		;;
	*)
		echo "Usage: asmagent {start|stop|status}"
esac

exit 0