#!/bin/ksh
###############################################################################
#
# Sun Cluster Sun MBM Data Service version 1.0
#
# Sun MBM Probe script for scmbm.
#
###############################################################################
EMP_SETUP=none
EMP_SRV_ID=none
EMP_DEBUG=OFF

typeset opt

while getopts 'S:I:D:L:F:' opt
do
  case "$opt" in
    S)
    # Setup path name
    EMP_SETUP=$OPTARG
    ;;
    I)
    # Data service identifier
    EMP_SRV_ID="$OPTARG"; export EMP_SRV_ID
    ;;
    D)
    # Debug option
    EMP_DEBUG=$OPTARG
    ;;
    L)
    # SYSLOG TAG option
    SYSLOG_TAG="$OPTARG"; export SYSLOG_TAG
    ;;
    F)
    # SYSLOG FACILITY option
    SYSLOG_FACILITY="$OPTARG"; export SYSLOG_FACILITY
    ;;
    *)
    echo "mbm_probe: warning option $OPTARG unknown"
    ;;
  esac
done

if [ "$EMP_SETUP" = "none" ]
then
    logger -p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] "mbm_probe: ERROR. Setup file has not been specified"
    exit 101
fi

. $EMP_SETUP
if [ "$EMP_DEBUG" = "ON" ]
then
  logger -p ${SYSLOG_FACILITY}.notice -t [$SYSLOG_TAG] "mbm_probe: $0 started with \"$*\" parameters"
fi

if [ -z "$TERM" ]
then
  TERM=$XTERM; export TERM
fi

if [ "$EMP_SVR_ID" = "none" ]
then
    logger -p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] "mbm_probe: ERROR. Data service identifier has not been specified"
    exit 102
fi


# Batch node status
if [ "$EMP_DEBUG" = "ON" ]
then
    logger -p ${SYSLOG_FACILITY}.notice -t [$SYSLOG_TAG] "mbm_probe: checking batch node status"
fi

ebminfo -A
ret_status=$?
case "$ret_status" in

  0)
  # Batch node is active
  if [ "$EMP_DEBUG" = "ON" ]
  then
    logger -p ${SYSLOG_FACILITY}.notice -t [$SYSLOG_TAG] "mbm_probe: batch node is active"
  fi
  ;;

  1)
  # Batch node just started. Come back later.
  logger -p ${SYSLOG_FACILITY}.notice -t [$SYSLOG_TAG] "mbm_probe: batch node successfully started"
  exit 0
  ;;

  *)
  # error
    logger -p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] "mbm_probe: ERROR: ebminfo failed with status $ret_status"
    exit 105
  ;;

esac


# Batch subsystems
if [ "$EMP_DEBUG" = "ON" ]
then
    logger -p ${SYSLOG_FACILITY}.notice -t [$SYSLOG_TAG] "mbm_probe: checking batch subsystem status"
fi

ebmsys -A
ret_status=$?
case "$ret_status" in

  0)
  # Found all batch subsystems are active
  if [ "$EMP_DEBUG" = "ON" ]
  then
    logger -p ${SYSLOG_FACILITY}.notice -t [$SYSLOG_TAG] "mbm_probe: all batch subsystems are active"
  fi
  ;;

  1)
  # Found one or more batch subsystems are not active
  logger -p ${SYSLOG_FACILITY}.warn -t [$SYSLOG_TAG] "WARNING: one or more batch subsystems are not active"
  ;;

  2)
  # No batch subsystem are defined
  logger -p ${SYSLOG_FACILITY}.warn -t [$SYSLOG_TAG] "WARNING: no batch subsystem are defined"
  ;;

  *)
  # error
  logger -p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] "mbm_probe: ERROR: ebmsys failed with status $ret_status"
  exit 106
  ;;

esac


# Batch Log Facility
if [ "$EMP_DEBUG" = "ON" ]
then
  logger -p ${SYSLOG_FACILITY}.notice -t [$SYSLOG_TAG] "mbm_probe: checking batch log facility"
fi

lgprint
ret_status=$?
case "$ret_status" in

  0)
  # Batch log facility is available
  if [ "$EMP_DEBUG" = "ON" ]
  then
    logger -p ${SYSLOG_FACILITY}.notice -t [$SYSLOG_TAG] "mbm_probe: batch log facility is available"
  fi
  ;;

  *)
  # error
  logger -p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] "mbm_probe: ERROR: lgprint failed with status $ret_status"
  exit 106
  ;;

esac



# Job classes
if [ "$EMP_DEBUG" = "ON" ]
then
  logger -p ${SYSLOG_FACILITY}.notice -t [$SYSLOG_TAG] "mbm_probe: checking batch job class status"
fi

infact_dcr -A
ret_status=$?
case "$ret_status" in

  0)
  # Found defined batch job classes
  if [ "$EMP_DEBUG" = "ON" ]
  then
    logger -p ${SYSLOG_FACILITY}.notice -t [$SYSLOG_TAG] "mbm_probe: found defined batch job classes"
  fi
  ;;

  2)
  # No batch job classes are defined
  logger -p ${SYSLOG_FACILITY}.warn -t [$SYSLOG_TAG] "WARNING: no batch job classes are defined"
  ;;

  *)
  # error
  logger -p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] "mbm_probe: ERROR: infact failed with status $ret_status"
  exit 107
  ;;

esac


# Disk space
if [ "$EMP_DEBUG" = "ON" ]
then
  logger -p ${SYSLOG_FACILITY}.notice -t [$SYSLOG_TAG] "mbm_probe: checking disk spaces"
fi

bam DiskSpace
ret_status=$?
if [ "$EMP_DEBUG" = "ON" ]
then
  logger -p ${SYSLOG_FACILITY}.notice -t [$SYSLOG_TAG] "mbm_probe: bam DiskSpaces returns $ret_status"
fi


if [ "$EMP_DEBUG" = "ON" ]
then
  logger -p ${SYSLOG_FACILITY}.notice -t [$SYSLOG_TAG] "mbm_probe: MBM is active"
fi
exit 0
