
#!/bin/bash
# File: ocum-alert2nagios-snow.sh
# Owner: Maarten de Boer <maarten.deboer@atos.net>
# Author: Atos
#       * Claudiu Nesa <claudiu.nesa@atos.net>
#       * Bogdan Nyari (left Atos)
#       * Adrian Corici (left Atos)
#       * Maarten de Boer <maarten.deboer@atos.net>
# Description   : Script to forward OCUM alerts to Nagios (to SDM)
#
#(0.9),170524
#(0.10),171102  : Mod some var's & Added SDM12.9 part. & changed name to ocum-alert2nagios-sdm.sh
#(0.11),171213  : Added HOSTNAME & chk for no empty grep
#(0.12),180227  : Added create_sdm-ticket.sh
#(0.13),180716  : Added MAILTOSEV2 & sleep 1
#(0.14),180925  : Changed check on nlnaf10[67] -> CREATE SDM ticket
#(0.15),210421	: Changed for SNOW
#
PGM=$(basename $0|cut -d\. -f1)
VER="0.15"
#LOG="/var/log/ocum/${PGM}.log"
LOG="${HOME}/log/${PGM}.log"
TMP="/tmp/${PGM}.tmp"
HOSTNAME=`hostname|cut -d\. -f1`
MAILTOSEV2="maarten.deboer@atos.net"
VERBOSE=""
#
# Some init-VAR's
#
# For SDM12.9 => SNOW
#SDMCLASS="ZZ-Event.Storage.Storage"
SNOWCLASS=Storage.Storage.Other

# A "leftover" from IPsof(t) implementation. "[cdot]" is for cDOT-systems
ONTAPARCH="[cdot]"

NAGIOSPASSIVEDIR="/opt/netapp/ocum/nagios/PassiveCheck/DVL"
#NAGIOSPASSIVEDIR="/opt/netapp/ocum/nagios/PassiveCheck/PRD"

# Create read-only user
# Needed for getting cluser information for a (node-)CI
OCUMUSER="ocum-readonly"
OCUMPWD="Readonly-0cum"
CREATESDMTICKET="/home/aodfm01a/bin/create_sdm-ticket.sh"

# OCUM Variables default values
eventID=""
eventName=""
eventSeverity=""
eventSourceID=""
eventSourceName=""
eventSourceType=""
eventState=""
eventArgs=""
eventDate=$(/bin/date +'%Y-%m-%d-%H-%M-%S')
# Inititalize the eventSeverityID variable
eventSeverityID=""


# Some functions for "stand alone" usage
USAGE()
{
  echo "Usage: ${PGM} [<options>] <event_name> <event_value> "
  echo "  Version: ${VER}"
  echo "  options         :"
  echo "    -h|--help     : this Help"
  echo "    -V            : show Version"
  echo "    -x            : set -x"
}
# Check options
while [ $# -gt 0 ]
  do
  case $1 in
    -h | --help) USAGE; exit 1 ;;
    -v) VERBOSE=1 ;;
    -V) echo "${PGM}: v${VER}"; exit 3 ;;
    -x)  set -x ;;
# Capturing the OCUM variables passed as script arguments
    -eventID) eventID=$2; shift ;;
    -eventName) eventName=$2; shift ;;
    -eventSeverity) eventSeverity=$2; shift ;;
    -eventSourceID) eventSourceID=$2; shift ;;
    -eventSourceName) eventSourceName=$2; shift ;;
    -eventSourceType) eventSourceType=$2; shift ;;
    -eventState) eventState=$2; shift ;;
    -eventArgs) eventArgs=$2; shift ;;
  esac
    shift
done

# Grouping the event severity from OCUM to a number for SDM/SNOW trough Nagios
case $eventSeverity in
  normal) eventSeverityID="0" ;;
  information) eventSeverityID="0" ;;
  warning) eventSeverityID="1" ;;
  error) eventSeverityID="2" ;;
  emergency) eventSeverityID="2" ;;
  critical) eventSeverityID="2" ;;
esac

# Altering log file date
touch ${LOG}
chmod 666 ${LOG}

echo "Event timestamp=${eventDate}" >> ${LOG}
echo "eventID=${eventID}" >> ${LOG}
echo "eventName=${eventName}" >> ${LOG}
echo "eventSeverity=${eventSeverity}" >> ${LOG}
echo "eventSeverityID=${eventSeverityID}" >> ${LOG}
echo "eventSourceID=${eventSourceID}" >> ${LOG}
echo "eventSourceName=${eventSourceName}" >> ${LOG}
echo "eventSourceType=${eventSourceType}" >> ${LOG}
echo "eventState=${eventState}" >> ${LOG}
echo "eventArgs=${eventArgs}" >> ${LOG}
echo "--------------------------------------" >> ${LOG}


### Only create tickets for NEW events
if [ "$eventState" != "NEW" ]; then
    echo "INFO: ignoring OBSOLETE OR RESOLVED events" >> ${LOG}
    exit 1
fi

if [ ${VERBOSE} ]; then
  tail -10 ${LOG}
fi  # VERBOSE

exit


echo "`date` @ ${HOSTNAME}" > ${TMP}

# Initialize row variable
ROW=""
# SDM (12.9) specific variables
MONID=""
# Nagios file
nagiosFile="${NAGIOSPASSIVEDIR}/${eventDate}"

# Extracting the CI out of the eventSourceName param. And lower all, for SDM
CI=$(echo $eventSourceName | cut -d":" -f1 | tr [:upper:] [:lower:])

# SNOW specific

# Adding some info at the MONID
# By checking if CI is in the `cluster list`|`cluster node list`|`cluster svm list`
#
LOGINANSW="`/usr/bin/um cli login -u ${OCUMUSER} -p ${OCUMPWD}`"
echo "LOGINANSW=${LOGINANSW}" >> ${TMP}

if [ "${LOGINANSW}" != "" ] && [ "${CI}" != "" ]; then
  CLUSTERFND=`/usr/bin/um cluster list -q|awk '{print $2}'| grep ${CI}`
  echo "CLUSTERFND=${CLUSTERFND}" >> ${TMP}
  if [ "${CLUSTERFND}" = "" ]; then
#   CI is no cluster, check for node
    NODEFND=`/usr/bin/um cluster node list -q|awk '{print $2}'| grep ${CI}`
    echo "NODEFND=${NODEFND}" >> ${TMP}
    if [ "${NODEFND}" = "" ]; then
# Sort out only ONE result. Leave out -dr
      SVMFND=`/usr/bin/um svm list -q|awk '{print $2}'|grep ${CI}|sort|head -1`
      echo "SVMFND=${SVMFND}" >> ${TMP}
      if [ "${SVMFND}" = "" ]; then
      # CI is none, so hostname is used
        MONID="${MONIDHDR}.${HOSTNAME}"
      else
      # CI is SVM
        MONID="${MONIDHDR}.${CI}-VST"
      fi  # SVMFND
    else
    # CI is Node
      MONID="${MONIDHDR}.${CI}-SOS"
    fi  # NODEFND
  else
  # CI is Cluster
  MONID="${MONIDHDR}.${CI}-PLF"




# 180227,MdB: MONID with -PLF has problems in the line Nagios -> SDM. So we use IMI to gen. tickets
# 180925,MdB: Now only -PLF "problems" with nlnaf10[67]. So check for nlnaf10[67], then create SDM-ticket via IMI
    CHKCI=`echo "${CI}"|grep nlnaf10[67]-PLF`
    if [ "${CHKCI}" != "" ]; then
      ${CREATESDMTICKET} --imi --ci ${CI} --sev 3 --msg "${eventName} ${eventArgs} DFM_EVENT_ID=${eventID} (${eventDate}@${HOSTNAME})."
      echo "`date` ${CREATESDMTICKET} --imi --ci ${CI} --sev 3 --msg \"${eventName} ${eventArgs} DFM_EVENT_ID=${eventID} (${eventDate}@${HOSTNAME}).\" "|tee -a ${LOG}
    else
      echo "`date` No nlnaf10[67]-PLF. So NO CREATESDMTICKET"|tee -a ${LOG}
    fi  # "${CHKCI}" != ""




  fi  # CLUSTERFND

fi  # ${LOGINANSW}

# If MONID=""
if [ "${MONID}" = "" ]; then
  MONID="${MONIDHDR}.${HOSTNAME}"
fi  # MONID
echo "MONID=${MONID}" >> ${TMP}

# Example (SDM12.9)
# 0|CI=aoxnlfsd02 [cdot] User Files Soft Limit Not Exceeded  DFM_EVENT_ID=198002 (2017-11-02-00-39-28).|MONID=MAS.NL.1.aoxnlfsd02;CLASS=ZZ-Event.Storage.Storage;
# 0|CI=nlnafsmnp11 [cdot] Qtree Growth Rate Abnormal nlnafsmnp11:/mnp11_vol01001/groups7 DFM_EVENT_ID=198004 (2017-11-02-08-31-04).|MONID=MAS.NL.1.nlnafsmnp11-VST;CLASS=ZZ-Event.Storage.Storage

# Priority column
ROW+="${eventSeverityID}|"
# Text column
ROW+="CI=${CI} ${ONTAPARCH} ${eventName} ${eventArgs} DFM_EVENT_ID=${eventID} (${eventDate}@${HOSTNAME}).|"
# SDM(12.9) monid and class column
ROW+="MONID=${MONID};CLASS=${SDMCLASS};"

echo $ROW | tee -a ${nagiosFile} ${LOG}
echo "===== ${PGM} v${VER} ========================" >> ${LOG}

if [ ${eventSeverityID} -ge 2 ]; then
  echo "${eventSeverityID}|CI=${CI} ${ONTAPARCH} ${eventName} ${eventArgs} DFM_EVENT_ID=${eventID} (${eventDate}@${HOSTNAME}).|MONID=${MONID};CLASS=${SDMCLASS};" | mailx -s ":${HOSTNAME}: ${PGM}" ${MAILTOSEV2}
  echo "  Mailed Sev.2 to ${MAILTOSEV2}"|tee -a ${LOG}
fi

sleep 1

exit 0

