
#!/bin/sh
# File	: proc_de-carbon.sh, 201019
# By	: Maarten.deBoer@Atos.net, 201019
# Subject	: SCript to process input-files with "de-carbon" info
#(0.2),201019	: Mod; proc /file. Move file to proc-ed-dir
#(0.3),201102	: Restructured for NetApp
#(0.4),201102	: Added EMC
PGM=`basename $0|cut -d\. -f1`
VER="0.4"
TMP="/tmp/${TMP}.$$"
BASEDIR="/appl/netapp/de-carbon"
LOG="${BASEDIR}/log/${PGM}.log"
INDIR="${BASEDIR}/input"
PROCDIR="${BASEDIR}/proc-ed"
RCFILE="${BASEDIR}/etc/${PGM}.rc"

PROCDATE=`date +%Y-%m-%d`

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

if [ -f ${RCFILE} ]; then
  echo "  RCFILE(${RCFILE}) found. Using it ..."|tee -a ${LOG}
  . ${RCFILE}
  sleep 1
fi
CLUSTERFILE="${BASEDIR}/${SYS_CLUST_FILE}/etc/country2systems2cluster2vendor.csv"
OUT_CSV="${BASEDIR}/data/country-system-tb_${PROCDATE}.csv"
UNKNOWN_CSV="${BASEDIR}/data/unknown-systems_${PROCDATE}.csv"
echo "BASEDIR=${BASEDIR}"
echo "CLUSTERFILE=${CLUSTERFILE}"
echo "INDIR=${INDIR}"
echo "OUT_CSV=${OUT_CSV}"
echo "UNKNOWN_CSV=${UNKNOWN_CSV}"
echo "PROCDIR=${PROCDIR}"
echo "PROCDATE=${PROCDATE}"
sleep 1

if [ ! -f ${CLUSTERFILE} ]; then
  echo "  NO CLUSTER-file (${CLUSTERFILE}) found. Exiting ..."|tee -a ${LOG}
  exit 4
fi  
if [ ! -d ${INDIR} ]; then
  echo "  NO in(put)-dir (${INDIR}) found. Exiting ..."|tee -a ${LOG}
  exit 5
fi  
if [ ! -d ${PROCDIR} ]; then
  echo "  NO proc-ed-dir (${PROCDIR}) found. Exiting ..."|tee -a ${LOG}
  exit 6
fi  

# Set/empty files
echo "# country; system(cluster / HA)name; vendor ; SSD [GiB]; HDD [GiB]; Legay(7mode) [GiB]; " > ${OUT_CSV}
echo "# - ; systemname ; " > ${UNKNOWN_CSV}
echo "# Sizes in GB" > ${TMP}


# Find file's to be processed
# From TODAY
# Put the TB's from known / unknown in a TMP-file

# NEtApp-cDOT
ls -1 ${INDIR}/na*_${PROCDATE}*_cdot-aggrs.csv| while read INFILE
do
  echo "   ${INFILE} ..."

# FILE: aggregate;storage-type;aggregate-type;owner-name;size;usedsize;physical-used;
  cat ${INFILE}|grep -v ^#|grep -v aggregate|awk -F\; '{print $2,$3,$4,$5}'|while read STOR_TYPE AGGR_TYPE OWNER SIZE_GB REST
  do
    if [ "${OWNER}" != "" ] && [ `grep ${OWNER} ${CLUSTERFILE}` ]; then
# OWNER = found in CLUSTERFILE
      CLUSTERNAME=`grep ${OWNER} ${CLUSTERFILE}|awk -F\; '{print $3}'`
      COUNTRY=`grep ${OWNER} ${CLUSTERFILE}|awk -F\; '{print $1}'`
      echo "    ${OWNER} => ${CLUSTERNAME} (${COUNTRY})"

      if [ "${AGGR_TYPE}" = "ssd" ]; then
        echo "${COUNTRY};${CLUSTERNAME};ssd;${SIZE_GB};" >> ${TMP}
      else
        echo "${COUNTRY};${CLUSTERNAME};${AGGR_TYPE};${SIZE_GB};" >> ${TMP}
      fi  # ssd

    else
      echo "    ${OWNER} unknown"|tee -a ${LOG}
      echo "-;${OWNER};" >> ${UNKNOWN_CSV}
    fi  # grep ${OWNER}
  done  # cat INFILE (*_cdot-aggrs.csv)

# NetApp-7mode (legacy)
ls -1 ${INDIR}/na*_${PROCDATE}*_7-mode-aggrs.csv| while read INFILE
do
  echo "   ${INFILE} ..."
# nlnaf25;Aggregate;total;used;avail;
  cat ${INFILE}|grep -v ^#|grep -v Aggregate|awk -F\; '{print $1,$3}'|while read SYSNAME SIZE_GB REST
  do
    if [ "${SYSNAME}" != "" ] && [ `grep ${SYSNAME} ${CLUSTERFILE}` ]; then
# SYSNAME = found in CLUSTERFILE
      CLUSTERNAME=`grep ${SYSNAME} ${CLUSTERFILE}|awk -F\; '{print $3}'`
      COUNTRY=`grep ${SYSNAME} ${CLUSTERFILE}|awk -F\; '{print $1}'`
      echo "    ${SYSNAME} => ${CLUSTERNAME} (${COUNTRY})"
      echo "${COUNTRY};${CLUSTERNAME};legacy;${SIZE_GB};" >> ${TMP}
    else
      echo "    ${SYSNAME} unknown"|tee -a ${LOG}
      echo "-;${SYSNAME};" >> ${UNKNOWN_CSV}
    fi  # grep ${OWNER}
  done  # INFILE
done  # 7-mode


# EMC

ls -1 ${INDIR}/emc*_${PROCDATE}*_disk_pool_vmax.csv| while read INFILE
do
  echo "   ${INFILE} ..."
# array ; tech ; pool_name ; owner ; pool_usable ; pool_used ; pool_physical ; data_ratio ; vp_ratio ; overall_ratio
  cat ${INFILE}|grep -v ^#|grep -v array|awk -F\; '{print $1,$2,$3,$5}'|while read ARRAY TECH POOL_NAME USABLE_GB REST
  do
    ARRAYNAME=`echo ${ARRAY} |sed "s/'//g"`
#      echo "    ${ARRAYNAME}"
    if [ "${ARRAYNAME}" != "" ] && [ `grep ${ARRAYNAME} ${CLUSTERFILE}` ]; then
      CLUSTERNAME=`grep ${ARRAYNAME} ${CLUSTERFILE}|awk -F\; '{print $3}'`
      COUNTRY=`grep ${ARRAYNAME} ${CLUSTERFILE}|awk -F\; '{print $1}'`
      echo "    ${ARRAYNAME} => ${CLUSTERNAME} (${COUNTRY})"

      SIZE_GB=`echo ${USABLE_GB}|cut -d\. -f1`

      if [ "${TECH}" = "ssd" ]; then
        echo "${COUNTRY};${CLUSTERNAME};ssd;${SIZE_GB};" >> ${TMP}
      else
        echo "${COUNTRY};${CLUSTERNAME};${TECH};${SIZE_GB};" >> ${TMP}
      fi  # ssd

    else
      echo "    ${ARRAYNAME} unknown"|tee -a ${LOG}
      echo "-;${ARRAYNAME};" >> ${UNKNOWN_CSV}
    fi

done  # INFILE


done  # EMC





# Move file to PROC(-ed)DIR
#  mv ${INFILE} ${PROCDIR}/
done  # INFILE





echo "  2nd part."
cat ${TMP}
sleep 1

TOTAL_SSD=0 
echo "TOTAL_SSD=${TOTAL_SSD}" > ${TMP}.ssd
TOTAL_HDD=0 
echo "TOTAL_OLD=${TOTAL_OLD}" > ${TMP}.old
# Legaycy = OLD
TOTAL_OLD=0 
echo "TOTAL_HDD=${TOTAL_HDD}" > ${TMP}.hdd

cat ${TMP}|grep -v ^#|awk -F\; '{print $2}'|sort -u|while read CLUSTER REST
do
  echo "  ${CLUSTER}"
  TOTAL_SSD=0 
  echo "TOTAL_SSD=${TOTAL_SSD}" > ${TMP}.ssd
  TOTAL_HDD=0 
  echo "TOTAL_OLD=${TOTAL_OLD}" > ${TMP}.old
  TOTAL_OLD=0 
  echo "TOTAL_HDD=${TOTAL_HDD}" > ${TMP}.hdd
  cat ${TMP}|grep -v ^#|grep ${CLUSTER}|awk -F\; '{print $2,$3,$4}'|while read CLUSTERNAME TYPE SIZE_GB
  do
#    echo "    ${TYPE} ${SIZE_GB} "
    if [ "${TYPE}" = "ssd" ]; then
      TOTAL_SSD=`expr ${TOTAL_SSD} + ${SIZE_GB}`
      echo "      ${TOTAL_SSD} SSD"
      echo "TOTAL_SSD=${TOTAL_SSD}" > ${TMP}.ssd
    else  # ssd
      if [ "${TYPE}" = "legacy" ]; then
        TOTAL_OLD=`expr ${TOTAL_OLD} + ${SIZE_GB}`
        echo "      ${TOTAL_OLD} OLD"
        echo "TOTAL_OLD=${TOTAL_OLD}" > ${TMP}.old
      else  # legacy
        TOTAL_HDD=`expr ${TOTAL_HDD} + ${SIZE_GB}`
        echo "      ${TOTAL_HDD} HDD"
        echo "TOTAL_HDD=${TOTAL_HDD}" > ${TMP}.hdd
      fi  # legacy
    fi  # ssd
  done  # cat TMP

  COUNTRY=`grep ${CLUSTER} ${CLUSTERFILE}|grep -v ^#|awk -F\; '{print $1}'|sort -u|head -1`
  VENDOR=`grep ${CLUSTER} ${CLUSTERFILE}|grep -v ^#|awk -F\; '{print $4}'|sort -u|head -1`
  echo "${COUNTRY};${CLUSTER};${VENDOR};`cat ${TMP}.ssd|cut -d\= -f2`;`cat ${TMP}.hdd|cut -d\= -f2`;`cat ${TMP}.old|cut -d\= -f2`;"|tee -a ${OUT_CSV}

  rm ${TMP}.ssd ${TMP}.hdd ${TMP}.old
done  # cat TMP


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

