#!/bin/sh
#
#chkconfig: 345 98 98
#description: start/stop all cobra service
#processname: cobrastatus
#
source /etc/rc.d/init.d/functions
status(){
	for i in icinga CobraApi ido2db nrpe
        do
            service $i status
            service $i status >>/tmp/cobra.log
        done

        if   grep -w  "not running" /tmp/cobra.log >/dev/null; then
            rm -rf /tmp/cobra.log
               exit 1
        else
            rm -rf /tmp/cobra.log
               exit 0
fi

}

dbhost(){
        base64 -d  -w 0 /opt/systemcenter/sc/base/application-base.cfg > /tmp/application-base.cfg.decode
        IP=`cat /tmp/application-base.cfg.decode  |grep db_host|awk -F "=" '{print $2}'|sed 's/^[ \t]*//g'`
        rm -rf /tmp/application-base.cfg.decode
        node_name=`/usr/bin/hostname`
        if [ -n "$IP" -a "$IP" != "$node_name" ];then
        
		net_dev_name=`ifconfig |grep -B 2 "$IP"|awk '/^[[:alnum:]]/{print $1}'|tail -1`
	    	if [ -n "$net_dev_name" ];then
               		exit 0
                else 
                        exit 1
                fi
        elif [ -n "$IP" -a "$IP" = "$node_name" ];then
           exit 0
        else 
           exit 1
        fi
}

start(){
$0 dbhost
if [ $? -eq 0 ]; then
	if [ -e /opt/cobra/icinga/var/ido2db.lock ] && [ -e /opt/cobra/icinga/var/ido.sock ];then
		rm -f /opt/cobra/icinga/var/ido2db.lock
		rm -f /opt/cobra/icinga/var/ido.sock
	fi
	for i in icinga CobraApi ido2db 
        do
        if ! service $i status >/dev/null 2>&1; then
            service $i restart
                if ! service $i status >/dev/null 2>&1; then
                        exit 1
                     echo "$i service not running, please check."
                fi
        fi
        done
else
        service nrpe restart
fi
}

stop(){
$0 dbhost
if [ $? -eq 0 ]; then
	for i in  icinga CobraApi ido2db 
        do
        if  service $i status >/dev/null 2>&1; then
            service $i stop
                if  service $i status >/dev/null 2>&1; then
                        exit 1
                     echo "$i service stop failed, please check."
                fi
        fi
        done
else
        service nrpe stop
fi
}

restart(){
	stop
        start
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        restart
        ;;
  status)
        status
        ;;
  dbhost)
        dbhost
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|status|dbhost}"
esac
exit 0
