#! /bin/sh
#
#	Copyright 04/04/97 Sun Microsystems, Inc.  All Rights Reserved.
#
# @(#)informix_status.shi	1.5 97/04/04 SMI
#

# informix_status - report status of an HA Informix database onconfig
#
# Environment:
#

# locations
HA_FILES=/etc/opt/SUNWhadf/hadf
HA_DATABASES="${HA_FILES}/hainformix_databases"
INFTAB=/var/opt/informix/inftab

# deal with command line
argv0=`basename $0`

if [ $# -ne 1 ] ; then
	echo "usage: $argv0 ONCONFIG"
	exit 2
fi

ONCONFIG=$1


# get_pid pattern - find process id's of processes that match <pattern>
get_pid() {
PID=`/usr/bin/ps -ef | nawk -v pat="$*" '
 BEGIN { 
   search_pat = substr(pat, 0, 79)
   }
 { if ( match($0, search_pat) )
     if ( ! match($0, "nawk -v pat=") )
       print $2
  }
'`
}

# check for maintenance mode
if [ ! -r ${HA_DATABASES} ] ; then
  	echo "misconfigured"
	exit 1
fi
     
line=`grep "^o[^	]*	$ONCONFIG	" $HA_DATABASES`
if [ "$line" = "" ] ; then
	echo "misconfigured"
	exit 1
fi

mode=`echo "$line" | cut -f 1`
if [ "$mode" = "off" ] ; then
	echo "maintenance"
	exit 0
fi

# now do some Informix checks

if inftab_line=`grep "^${ONCONFIG}:" $INFTAB` ; then
	INFORMIXDIR=`echo $inftab_line | awk -F: '{print $2}' -`
else
	echo "misconfigured"
	exit 1
fi

if [ "$INFORMIXDIR" != "" ] ; then
                INFORMIXSERVER=`grep DBSERVERNAME ${INFORMIXDIR}/etc/${ONCONFIG} | nawk '{print $2}'` ; export INFORMIXSERVER 
else
        echo "misconfigured"
        exit 1 
fi

SQLHOSTS=${INFORMIXDIR}/etc/sqlhosts

if informixserver_line=`grep "^${INFORMIXSERVER}" $SQLHOSTS` ; then

                count=`/usr/bin/env INFORMIXDIR=${INFORMIXDIR} INFORMIXSERVER=${INFORMIXSERVER} ONCONFIG=${ONCONFIG} INFORMIXSQLHOSTS=${SQLHOSTS} ${INFORMIXDIR}/bin/onstat -a | wc | nawk '{print $1}'`
                # find out if database is indeed up
      		if [ $count -gt 1 ] ; then
			echo "running"
			exit 0
      		fi

      		echo "stopped"
      		exit 1
else
    	echo "misconfigured"
fi
exit 1
