
#!/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
PGM="`basename $0|cut -d\. -f1`"
VER="0.4"
LOG="${HOME}/log/${PGM}.log"
HOSTNAME="`hostname|cut -d\. -f1`"
SEVNR=0
NAGIOSSEV=""
MSGSTR="No message"
QUERY=""

# 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 : Nagios [<sev>] (NORMAL|MINOR|WARNING|CRITICAL|FATAL) (${NAGIOSSEV})"
  echo "    -q | --query  : create sdm-Query"
  echo "    -s | --sev    : Severity <nr> (0|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) MSGSTR=${2}; shift ;;
    -q | --query) QUERY="1" ;;
    -s) 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} ]; then
  echo "No choice (IMI | Nagios). Exiting ..."; echo; USAGE;
  exit 3
fi

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

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
echo "CI=${CI}"
echo "MSGSTR=${MSGSTR}"
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
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

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

