
#!/bin/sh
# File	: proc_asup-files_to_db.sh
# By	: Maarten.deBoer@Atos.net, 150817
# SUbject	: Script to process ASUP-files into database-files
#(0.2)	: Added DB_READ
#(0.3)	: Add check ASUP-files for Models & SYSID
#(0.4)	: Add OS-version get from asup-data/
#(0.5)	: Mode. ASUPDATADIR
#(0.6)	: Mod. get info from *.messages.desc for MODEL
#(0.7)	: Added if [ -d
#(0.8)	: Added AFF (at MODELS; N|FAS)
PGM="`basename $0|cut -d\. -f1`"
VER="0.8"
TMP="/tmp/${PGM}.$$"

BASEDIR="`pwd | sed 's/scripts//'|sed 's/bin//'`"
ETCENV="${BASEDIR}/etc/afsp.env"
LOG="${BASEDIR}/log/${PGM}.log"

DBDIR="${BASEDIR}/data/database"
ASUPDIR="/appl/mdr/mdrglob/afsp/glob/data/asup"
#ASUPDATADIR="/appl/mdr/mdrglob/asup-data"
ASUPDATADIR="/appl/asup/data"

COUNTRY="`echo ${BASEDIR}| cut -d\/ -f6`"

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
touch ${TMP}
echo "BASEDIR=${BASEDIR}"

# Read Functions file
source ./afsp-db_functions.sh
DB_FUNC_VER

# List DB-files and check is they are in ASUP
cd ${DBDIR}
ls -1 *.asc|cut -d\. -f1| while read DBFILENAME
do
  echo "Processing ${DBFILENAME} ..."
# Process ASUP-mail-file 1st
  ASUPFILE="${ASUPDIR}/sn_${DBFILENAME}.csv"
  if [ -f ${ASUPFILE} ]; then
    CONTROLER_NAME="`cat ${ASUPFILE}|awk -F\; '{print $1}'`"
    SNMP_LOCATION="`cat ${ASUPFILE}|awk -F\; '{print $2}'`"
    MODEL="`cat ${ASUPFILE}|awk -F\; '{print $3}'|sed 's/ //g'`"
    OS_VERSION="`cat ${ASUPFILE}|awk -F\; '{print $4}'`"
	# 5=firmware
    SERIAL_NUMBER="`cat ${ASUPFILE}|awk -F\; '{print $6}'`"
    PARTNER_HOSTNAME="`cat ${ASUPFILE}|awk -F\; '{print $7}'`"
    SNMP_CONTACT="`cat ${ASUPFILE}|awk -F\; '{print $8}'`"
    ASUP_GENERATED_ON="`cat ${ASUPFILE}|awk -F\; '{print $9}'`"

    echo "  ${DBFILENAME} + ${CONTROLER_NAME} ..."

    echo "  Reading ${DBFILENAME}.asc ..."
    DB_READ ${DBFILENAME}.asc
    echo "DB_MODEL_NAME=${DB_MODEL_NAME}"

      # modify field
      if [ "${DB_CONTROLER_NAME}" != "${CONTROLER_NAME}" ] && [ "${CONTROLER_NAME}" != "" ]; then
        DB_CONTROLER_NAME="${CONTROLER_NAME}"
	echo "DB_CONTROLER_NAME=${DB_CONTROLER_NAME}"
	MODIFIED=1
      fi
      if [ "${DB_SNMP_LOCATION}" != "${SNMP_LOCATION}" ]&& [ "${SNMP_LOCATION}" != "" ]; then
        DB_SNMP_LOCATION="${SNMP_LOCATION}"
        echo "DB_SNMP_LOCATION=${DB_SNMP_LOCATION}"
        MODIFIED=1
      fi
      if [ "${DB_OS_VERSION}" != "${OS_VERSION}" ] && [ "${OS_VERSION}" != "" ]; then
        DB_OS_VERSION="${OS_VERSION}"
        echo "DB_OS_VERSION=${DB_OS_VERSION}"
        MODIFIED=1
      fi
      if [ "${DB_MODEL_NAME}" != "${MODEL}" ] && [ "${MODEL}" != "" ]; then
        DB_MODEL_NAME="${MODEL}"
        echo "DB_MODEL_NAME=${MODEL}"
        MODIFIED=1
      fi
      if [ "${DB_PARTNER_HOSTNAME}" != "${PARTNER_HOSTNAME}" ] && [ "${PARTNER_HOSTNAME}" != "" ]; then
        DB_PARTNER_HOSTNAME="${PARTNER_HOSTNAME}"
        echo "DB_PARTNER_HOSTNAME=${DB_PARTNER_HOSTNAME}"
        MODIFIED=1
      fi
      if [ "${DB_SNMP_CONTACT}" != "${SNMP_CONTACT}" ] && [ "${SNMP_CONTACT}" != "" ]; then
        DB_SNMP_CONTACT="${SNMP_CONTACT}"
        echo "DB_SNMP_CONTACT=${DB_SNMP_CONTACT}"
        MODIFIED=1
      fi
      if [ "${DB_ASUP_GENERATED_ON}" != "${ASUP_GENERATED_ON}" ] && [ "${ASUP_GENERATED_ON}" != "" ]; then
        DB_ASUP_GENERATED_ON="${ASUP_GENERATED_ON}"
        echo "DB_ASUP_GENERATED_ON=${DB_ASUP_GENERATED_ON}"
        MODIFIED=1
      fi
    fi  # -f

  if [ "${DB_CONTROLER_NAME}" != "" ] && [ "${DB_SERIAL_NUMBER}" != "" ]; then
    MODEL=""
    SYSID=""

    if [ -f ${ASUPDATADIR}/${DB_CONTROLER_NAME}_${DB_SERIAL_NUMBER}/SYSCONFIG-A.txt ]; then
echo "${ASUPDATADIR}/${DB_CONTROLER_NAME}_${DB_SERIAL_NUMBER}/SYSCONFIG-A.txt found"|tee -a ${LOG}
      # Remove Spaces & CR's by sed
      MODEL="`cat ${ASUPDATADIR}/${DB_CONTROLER_NAME}_${DB_SERIAL_NUMBER}/SYSCONFIG-A.txt|grep 'Model Name:'|cut -d\: -f2|egrep 'AFF|FAS|N|V'|sed 's/ //g'|sed 's/\r//g'`" 
      OSVERSION="`cat ${ASUPDATADIR}/${DB_CONTROLER_NAME}_${DB_SERIAL_NUMBER}/SYSCONFIG-A.txt|egrep 'NetApp Release|ONTAP'|cut -d\: -f1|sed 's/Release //g'|sed 's/NetApp //g'|sed 's/Data //g'|sed 's/ONTAP //g'`"
      SYSID="`cat ${ASUPDATADIR}/${DB_CONTROLER_NAME}_${DB_SERIAL_NUMBER}/SYSCONFIG-A.txt|grep 'System ID:'|cut -d\: -f2| sed 's/ //g'|cut -d\( -f1`" 

      echo "  Model: ${MODEL} SysID ${SYSID} "
    else
# Check is DIR exists
      if [ -d ${ASUPDATADIR}/${DB_CONTROLER_NAME}_${DB_SERIAL_NUMBER} ]; then
# Check for MODEL in *.messages.desc
        LASTMSGDESC="`ls -1tr ${ASUPDATADIR}/${DB_CONTROLER_NAME}_${DB_SERIAL_NUMBER}/*.messages.desc|tail -1`"
        MODEL="`grep 'System Board' -A+1 ${LASTMSGDESC}| egrep 'AFF|FAS|N'|cut -d\: -f2|sed 's/ //g'`"
        SYSID="`grep 'System ID:' ${LASTMSGDESC}|cut -d\: -f2|cut -d\( -f1|sed 's/ //g'`"
        OSVERSION="`cat ${LASTMSGDESC}|grep 'VERSION='|cut -d\= -f2|cut -d\: -f1|sed 's/Release //g'|sed 's/NetApp //g'|sed 's/Data //g'|sed 's/ONTAP //g'`"
      fi  # [ -d
    fi  # -f ${ASUPDATADIR}

    # modify field only when DB <> var and var is NOT empty. Otherwise info will be emptied
    if [ "${MODEL}" != "" ] && [ "${DB_MODEL_NAME}" != "${MODEL}" ]; then
      echo "DB_MODEL_NAME(${DB_MODEL_NAME}) => ${MODEL}"
      DB_MODEL_NAME="${MODEL}"
      echo "DB_MODEL_NAME=${DB_MODEL_NAME}"|tee -a ${LOG}
      MODIFIED=1
    fi
    if [ "${OSVERSION}" != "" ] && [ "${DB_OS_VERSION}" != "${OSVERSION}" ]; then
      DB_OS_VERSION="${OSVERSION}"
      echo "DB_OS_VERSION=${DB_OS_VERSION}"|tee -a ${LOG}
      MODIFIED=1
    fi
    if [ "${SYSID}" != "" ] && [ "${DB_SYSTEM_ID}" != "${SYSID}" ]; then 
      DB_SYSTEM_ID="${SYSID}" 
      echo "DB_SYSTEM_ID=${DB_SYSTEM_ID}"|tee -a ${LOG}
      MODIFIED=1 
    fi
  fi  # NAME && SER.NR


# Writing updated DB
  if [ ${MODIFIED} ]; then
    echo "  Writing ${DBFILENAME}.asc ..."
    DB_WRITE ${DBFILENAME}.asc
    MODIFIED=""
  fi  # MODIFIED

done  # ls -1

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

