
#!/bin/sh
# File	: create_sdm-ticket.sh
# By	: Maarten.deBoer@atos.net, 14xxyy, 150508
# Subject	: Script to create SDM-tickets via IMI and/or Nagios
#(0.2)	: Added CI
#(0.3)	: Mod. options check
#(0.1)	: copies from test_alert
#(0.2)	: Added NORMAL
#(0.3)	: Renamed to create_sdm-ticket.sh (from create_ticket.sh), Add IMI
#(0.4)	: Mod; --ci
#(0.5)	: Add --passive | -p check 
#(0.6)	: Mon right  MONID="${MONIDHDR}.${CI}
#(0.7),180228	: Added --sev & --msg) (was not in script)
PGM="`basename $0|cut -d\. -f1`"
VER="0.7"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
HOSTNAME="`hostname|cut -d\. -f1`"
SEVNR=0
NAGIOSSEV=""
MSGSTR="No message"
QUERY=""
PASSIVE=""
DATI="`date +%Y-%m-%d-%H-%M-%S`"

PASSIVECHKDIR="/appl/dfm/nagios/PassiveCheck/PRD/"
MONIDHDR="MAS.NL.1"
CLASS="CLASS=ZZ-Event.Storage.Storage"

# SDM via IMI
#SDMMAIL="prod-imi@gis.nl.ao-srv.com"
SDMMAIL="ESBIncident.it-solutions@atos.net"
SDMUSER="nl19471"
#SDMUSER="nldsm01"
SDMREPLYTO="maarten.deboer@atos.net"
#SDMREPLYTO="fsod@atos.net"
SDMMSG="${TMP}.sdm"

CI=${HOSTNAME}
SDMTYPE="Incident"
#SDMTYPE="Query"
#SDMTYPE="Change"
#SDMTYPE="Production"
SDMORG="AtosOrigin.Netherlands"
SDMAREA="NL.Storage.StorageOnDemand"
#SDMAREA="NL.Storage.StorageOnDemand.FSOD-1021"
#SDMAREA="NL.ProcessMgmt.ChangeMgmt.GenericWorkflowSmallChange"
SDMGROUP="NL.Storage.FSOD"
#SDMGROUP="PL.Storage.FSOD"
SDMTEXT="No text"


CREATE_SDM_TICKET()
{
  echo "@REQUESTTYPE: ${SDMTYPE}" > ${SDMMSG}
  echo "@REQUESTAREA: ${SDMAREA}" >> ${SDMMSG}
  echo "@SEVERITY: ${SDMSEV}" >> ${SDMMSG}
  echo "@CI: ${CI}" >> ${SDMMSG}
  echo "@ORGANISATION: ${SDMORG}" >> ${SDMMSG}
  echo "@GROUP: ${SDMGROUP}" >> ${SDMMSG}
  echo "@REPLYTO: ${SDMREPLYTO}" >> ${SDMMSG}
  echo "@PROXYUSER: ${SDMUSER}"  >> ${SDMMSG}
  echo "Ticket:" >> ${SDMMSG}
  echo "${SDMTEXT}" >> ${SDMMSG}
  echo "---" >> ${SDMMSG}
  echo "[${PGM} v${VER}] @${HOSTNAME}" >> ${SDMMSG}
  echo "" >> ${SDMMSG}
  echo "@ENDOFUSDMESSAGE" >> ${SDMMSG}

  cat ${SDMMSG}| mailx -s "${SDMUSER}: ${SDMTYPE}; CI=${CI}(${HOSTNAME})" ${SDMMAIL}
  echo "`date` Mailed to SDM-IMI (${SDMMAIL}): CI=${CI}"|tee -a ${LOG}
}

# SDM via Nagios/Naomi(/var/log/messages file)
# DFM-Severity  Action
# ------------  ------
# Emergency     USD + Pager/SMS
# Critical      USD + Pager/SMS
# Error         USD + Pager/SMS
# Warning       USD
# Information   Information message in DFM
# Normal        Message out of DFM
#
# Nagios
# ------
# MINOR         Nagios-WARNING & SEV.3
# WARNING       Nagios-WARNING & SEV.3
# CRITICAL      Nagios-CRITICAL & SEV.2
# FATAL         Nagios-CRITICAL & SEV.2
# logger -t NOTIFY FSOD-SUPPORT <Nagios-SEV> "Text"


USAGE()
{
  echo "Usage: ${PGM} <options>"
  echo "  Version: ${VER}"
  echo "  options:"
  echo "    -c | --ci      : Ci <CINAME> (${CI})"
  echo "    -g | --group   : sdm Group ({$SDMGROUP})"
  echo "    -h | --help    : this help"
  echo "    -i | --imi     : via IMI"
  echo "    -m | --msg     : ticket MeSsaGe (${MSGSTR})"
  echo "    -n | --nagios  : using Nagios(-syslog) [<sev>] (NORMAL|MINOR|WARNING|CRITICAL|FATAL) (${NAGIOSSEV})"
  echo "    -p | --passive : using nacl(nagios-client)-PassiveCheck"
  echo "    -q | --query   : create sdm-Query"
  echo "    -s | --sev     : Severity <nr> (0|1|2|3) (${SEVNR})"
  echo "    -V             : Version"
  echo "    -x             : set -x"
}

# Check options
if [ ${#} -eq 0 ]; then
  echo "No option(s) given. So not to know what to do. Exiting..."; echo; USAGE;
  exit 1
fi
while [ ${#} -ge 1 ]
  do
  case ${1} in
    -c | --ci) CI=${2}; shift ;;
    -h | --help) USAGE; exit 1 ;;
    -i | --imi) IMI="1" ;;
    -n | --nagios) NAGIOS="1"; SEVNR=${2}; shift ;;
    -g | --group) SDMGROUP=${2}; shift ;;
    -m | --msg) MSGSTR=${2}; shift ;;
    -p | --passive) PASSIVE="1" ;;
    -q | --query) QUERY="1" ;;
    -s | --sev) SEVNR=${2}; shift ;;
    -V) echo "${PGM}: v${VER}"; exit 3 ;;
    -x)  set -x ;;
    *)  echo "Option ${1} not known."; USAGE; exit 1 ;;
  esac
    shift
done

if [ "${CI}" = "" ]; then
  echo "CI is empty. Exiting ..."; echo; USAGE; 
  exit 2
fi
if [ ! ${IMI} ] && [ ! ${NAGIOS} ] && [ ! ${PASSIVE} ] ; then
  echo "No choice (IMI | Nagios | Passive). Exiting ..."; echo; USAGE;
  exit 3
fi

if [ ${QUERY} ]; then
  SDMTYPE="Query"
fi

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
touch ${TMP}
echo "CI=${CI}"
echo "IMI=${IMI}"
echo "MSGSTR=${MSGSTR}"
echo "NAGIOS=${NAGIOS}"
echo "PASSIVE=${PASSIVE}"
echo "PASSIVECHKDIR=${PASSIVECHKDIR}"
echo "QUERY=${QUERY}"
echo "SEVNR=${SEVNR}"
echo "SDMAREA=${SDMAREA}"
echo "SDMGROUP=${SDMGROUP}"
echo "SDMMAIL=${SDMMAIL}"
echo "SDMORG=${SDMORG}"
echo "SDMREPLYTO=${SDMREPLY}"
echo "SDMTYPE=${SDMTYPE}"
echo "SDMUSER=${SDMUSER}"

if [ ${IMI} ]; then
  if [ ${SEVNR} -eq 0 ]; then
    SDMSEV="4"
  else
    SDMSEV="${SEVNR}"
  fi
  SDMTEXT="${MSGSTR}"
  CREATE_SDM_TICKET
  rm ${SDMMSG}
fi  #{ IMI}

if [ ${NAGIOS} ]; then
  if [ "${NAGIOSSEV}" = "" ]; then
    case ${SEVNR} in
      0) NAGIOSSEV="NORMAL" ;;
      2) NAGIOSSEV="CRITICAL" ;;
      3) NAGIOSSEV="WARNING" ;;
      4) NAGIOSSEV="INFORMATION" ;;
      *) echo "Severity ${SEVNR} not known. Stays NORMAL" ;;
    esac
  fi
  MSGSTR="  ${NAGIOSSEV}:${MSGSTR} [${PGM} v${VER} @${HOSTNAME}]"|tee -a ${LOG}
  /usr/bin/logger -t NOTIFY FSOD-SUPPORT ${NAGIOSSEV} CI=${CI} "${MSGSTR}"
  echo "/var/log/messages:"
  grep 'FSOD-SUPPORT' /var/log/messages | tail -1
fi  # NAGIOS

if [ ${PASSIVE} ]; then
  MSGSTR="${MSGSTR} [${PGM} v${VER} @${HOSTNAME}]"|tee -a ${LOG}
# 1|nlnaf25: CI=nlnaf25 Host Down nlnaf25 DFM_EVENT_ID=0000000 (YYYY-MM-DD-hh-mm-ss).|MONID=MAS.NL.1.nlnaf25-SOS;CLASS=ZZ-Event.Storage.Storage;
  MONID="${MONIDHDR}.${CI}"
# Filers
  ANSW="`echo ${CI}|egrep 'nlnaf[0-9][0-9]'`"
  if [ "${ANSW}" != "" ]; then
    # Then Filer = -SOS
    MONID="${MONIDHDR}.${CI}-SOS"
  fi
# Clusters
  ANSW="`echo ${CI}|egrep 'nlnaf[0-9][0-9][0-9]'`"
  if [ "${ANSW}" != "" ]; then
    # Then CLuster = -PLF
    MONID="${MONIDHDR}.${CI}-PLF"
  fi
# Nodes
  ANSW="`echo ${CI}|egrep 'nlnaf[0-9][0-9][0-9]-[0-9][0-9]'`"
  if [ "${ANSW}" != "" ]; then
    # Then Nodes = -SOS
    MONID="${MONIDHDR}.${CI}-SOS"
  fi
# Vfilers
  ANSW="`echo ${CI}|egrep 'nlnafv|nlnafs'`"
  if [ "${ANSW}" != "" ]; then
    # Then Vfiler / SVM = -VST
    MONID="${MONIDHDR}.${CI}-VST"
  fi

  PASSIVEFILE=${PASSIVECHKDIR}/${DATI}
  echo "${SEVNR}|${CI}: CI=${CI} ${MSGSTR} (${DATI}).|MONID=${MONID};CLASS=${CLASS};"|tee -a ${PASSIVEFILE}
  ls -l ${PASSIVECHKDIR}| tee -a ${LOG}
fi  # PASSIVE

rm ${TMP}
echo "`date` ${PGM} finished."|tee -a ${LOG}
exit 0

