
#!/bin/bash
# File	: upd_decarbon.sh
# By	: Maarten.deBoer, 201019
# Subject	: Script to update the decarbon website
#(0.2),201020	: Add unknown systems in 1st row
#(0.3),201103	: Mod. to (new) structure
#(0.4),201103	: Upd. some text
PGM="`basename $0|cut -d\. -f1`"
VER="0.4"
TMP="/tmp/${PGM}.$$.asc"
BASEDIR="/appl/netapp/decarbon"
LOG="${BASEDIR}/log/${PGM}.log"
RCFILE="${BASEDIR}/etc/${PGM}.rc"
UP_DATI=`date +%Y-%m-%d-%H-%M-%S`
MAIL=1
MAILTO="maarten.deboer@atos.net"
TXTFILE="${BASEDIR}/etc/${PGM}.txt"
HTMLMAILTO="atos@agrarix.it"

DATADIR="${BASEDIR}/data"
ETCDIR="${BASEDIR}/etc"

PAGEDIR="/appl/netapp/html/decarbon"
TITLE="DeCarbonize Dashboard"

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

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

if [ -f ${RCFILE} ]; then
  echo "  RCFILE(${RCFILE}) found. Using it ..."|tee -a ${LOG}
  . ${RCFILE}
fi

CLUSTERFILE="${BASEDIR}/etc/country2systems2cluster2vendor.csv"
PAGE="${PAGEDIR}/index.html"
DATAFILE="${BASEDIR}/data/country-systems_${PROCDATE}.csv"
UNKNOWNFILE="${BASEDIR}/data/unknown-systems_${PROCDATE}.csv"

echo "PGM=${PGM}"
echo "VER=${VER}"
echo "LOG=${LOG}"
echo "CLUSTERFILE=${CLUSTERFILE}"
echo "DATADIR=${DATADIR}"
echo "DATAFILE=${DATAFILE}"
echo "PAGEDIR=${PAGEDIR}"
echo "PAGE=${PAGE}"
echo "PROCDATE=${PROCDATE}"
echo "TITLE=${TITLE}"
echo "UNKNOWNFILE=${UNKNOWNFILE}"
sleep 1

if [ ! -f ${CLUSTERFILE} ]; then
  echo "  NO NO CLUSTER-file (${CLUSTERFILE}) found. Exiting ..."|tee -a ${LOG}
  exit 4
fi
if [ ! -d ${DATADIR} ]; then
  echo "  NO DATA-dir (${DATADIR}) found. Exiting ..."|tee -a ${LOG}
  exit 5
fi


touch ${PAGE}

echo "<!DOCTYPE html>" > ${PAGE}
echo "<HTML>" >> ${PAGE}
echo "<HEAD>" >> ${PAGE}
echo "<META charset='UTF-8'>" >> ${PAGE}
echo "<META name='author' content='Maarten de Boer' />" >> ${PAGE}
echo "<META name='author' content='Maarten de Boer' />" >> ${PAGE}
echo "<META name='generator' content='${PGM} v${VER}' />">> ${PAGE}
echo "<META name='up-dati' content='${UP_DATI}' />">> ${PAGE}
echo "<TITLE>${TITLE}</TITLE>" >> ${PAGE}
echo "<basefont face='verdana'>" >> ${PAGE}
echo "</HEAD>" >> ${PAGE}
#echo "<BODY aLink=red bgColor=#D3D0D3 link=red text=#000000 vLink=red>" >> ${PAGE}
echo "<BODY aLink=red bgColor=lightgrey link=red text=#000000 vLink=red>" >> ${PAGE}
echo "<TABLE BORDER=0 WIDTH='100%'>" >> ${PAGE}
echo "<TR HEIGHT=40px>" >> ${PAGE}
#echo "  <TD BGCOLOR=#5BC3FC>" >> ${PAGE}
echo "  <TD BGCOLOR=lightgreen>" >> ${PAGE}
echo "    <FONT COLOR=darkgrey face='verdana' size='8'> <B>${TITLE}</B> </FONT>" >> ${PAGE}
echo "    <BR>" >> ${PAGE}
echo "    <DIV align=left>" >> ${PAGE}
echo "    <FONT COLOR=black face='verdana' size='3'>For storage environments (at ${PROCDATE}) in country => </A>  </FONT> " >> ${PAGE}
echo "     </B> </FONT> " >> ${PAGE}
echo "    <DIV align=right>" >> ${PAGE}
echo "    <FONT COLOR=white face='verdana' size='-3'>At `hostname` </B> </FONT>" >> ${PAGE}
echo "    </DIV>" >> ${PAGE}
echo "  </TD>" >> ${PAGE}
echo "</TR>" >> ${PAGE}
echo "</TABLE>" >> ${PAGE}


echo "<TABLE BORDER=1 WIDTH='100%' cellspacing='0'>" >> ${PAGE}
echo "  <TR>" >> ${PAGE}
echo "    <TD>" >>  ${PAGE}
echo "      <FONT COLOR=black face='verdana' size='2'><B>Unknown</FONT>" >> ${PAGE}
echo "    </TD>" >>  ${PAGE}


# Countries
cat ${CLUSTERFILE}|grep -v ^#|awk -F\; '{print $1}'|sort -u|while read COUNTRY REST
do
  echo "  ${COUNTRY} "
  echo "    <TD>" >>  ${PAGE}
  echo "      <FONT COLOR=black face='verdana' size='2'><B><CENTER>${COUNTRY}</FONT>" >> ${PAGE}
  echo "    </TD>" >>  ${PAGE}
done  # ${CLUSTERFILE}
echo "  </TR>" >> ${PAGE}

echo "  <TR>" >> ${PAGE}

echo "    <TD>" >>  ${PAGE}
#    echo "    <FONT COLOR=black face='verdana' size='3'> <B> UNKNOWN : </FONT> <BR>" >> ${PAGE}
if [ -f ${UNKNOWNFILE} ]; then
  cat ${UNKNOWNFILE}|grep -v ^#|awk -F\; '{print $2}'|sort -u| while read SYSNAME REST
  do
    echo "    <FONT COLOR=red face='verdana' size='2'> ${SYSNAME} </FONT> <BR>" >> ${PAGE}
  done  # SYSNAME

#echo "    <FONT COLOR=green face='verdana' size='2'><B> SSD TiB</FONT> <BR>" >> ${PAGE}
#echo "    <FONT COLOR=orange face='verdana' size='2'><B> HDD TiB</FONT> <BR>" >> ${PAGE}
#echo "    <FONT COLOR=red face='verdana' size='2'><B> 7mode TiB</FONT> <BR>" >> ${PAGE}

fi  # UNKNOWNFILE

echo "    </TD>" >>  ${PAGE}


cat ${CLUSTERFILE}|grep -v ^#|awk -F\; '{print $1}'|sort -u|while read COUNTRY REST
do
  echo "  ${COUNTRY} "
  echo "    <TD>" >>  ${PAGE}


# country; system(cluster / HA)name; vendor ; SSD [GiB]; HDD [GiB]; Legay(7mode) [GiB]; " 
  cat ${DATAFILE}|grep "^${COUNTRY};"|sort|grep -v ^#|sort|awk -F\; '{print $2,$3}'|while read SYSNAME VENDOR REST
  do
    echo "   ${SYSNAME} (${VENDOR})"

# When a SYStemNAME, then process for html-PAGE
    if [ "${SYSNAME}" != "" ]; then

      SSD=`grep "${COUNTRY};" ${DATAFILE}|grep "${SYSNAME};"|grep -v ^#|sort|awk -F\; '{print $4}'`
# Make TB's of it
      if [ "${SSD}" = "" ]; then
        SSD_TB=0
      else
        SSD_TB=`expr ${SSD} / 1024`
      fi
      HDD=`grep "${COUNTRY};" ${DATAFILE}|grep "${SYSNAME};"|grep -v ^#|sort|awk -F\; '{print $5}'`
# Make TB's of it
      if [ "${HDD}" = "" ]; then
        HDD_TB=0
      else
        HDD_TB=`expr ${HDD} / 1024`
      fi
      OLD=`grep "${COUNTRY};" ${DATAFILE}|grep "${SYSNAME};"|grep -v ^#|sort|awk -F\; '{print $6}'`
# Make TB's of it
      if [ "${OLD}" = "" ]; then
        OLD_TB=0
      else
        OLD_TB=`expr ${OLD} / 1024`
      fi
      echo "     S:${SSD_TB}TiB(${SSD}GB) H:${HDD_TB}TiB(${HDD}GB) O:${OLD_TB}TiB(${OLD}GB) "
  
      echo "      <TABLE BORDER=0 width='0%' cellspacing='0'>" >> ${PAGE}
      echo "        <TR>" >> ${PAGE}

# Calculate PCT for "bar"-graph
      TTL=`expr ${SSD} + ${HDD} + ${OLD}`
      if [ ${TTL} -gt 0 ]; then
        PCT1=`expr ${SSD} \* 100 / ${TTL}`
        PCT2=`expr ${HDD} \* 100 / ${TTL}`
        PCT3=`expr ${OLD} \* 100 / ${TTL}`
      else
        PCT1=0
        PCT2=0
        PCT3=0
      fi
      echo "${PCT1} ${PCT2} ${PCT3} / ${TTL}"


      V=""
      if [ "${VENDOR}" = "netapp" ]; then
        V="N"
      fi
      if [ "${VENDOR}" = "emc" ]; then
        V="E"
      fi
      if [ "${VENDOR}" = "hds" ]; then
        V="H"
      fi
echo "VENDOR=${VENDOR} V=${V}"
      echo "          <TD WIDTH='1%'><FONT COLOR=black face='verdana' size='2'>${V}:${SYSNAME}:</FONT> </TD>" >> ${PAGE}
      echo "          <TD WIDTH=${PCT1}% BGCOLOR=green><FONT COLOR=black face='verdana' size='2'>${SSD_TB}</FONT> </TD>" >> ${PAGE}
      echo "          <TD WIDTH=${PCT2}% BGCOLOR=orange><FONT COLOR=black face='verdana' size='2'>${HDD_TB}</FONT> </TD>" >> ${PAGE}
      echo "          <TD WIDTH=${PCT3}% BGCOLOR=red><FONT COLOR=black face='verdana' size='2'>${OLD_TB}</FONT> </TD>" >> ${PAGE}

      echo "        </TR>" >> ${PAGE}
      echo "      </TABLE>" >> ${PAGE}

    fi  # SYSNAME <> ""

  done  # SYSNAME

  echo "    </TD>" >>  ${PAGE}
done  # ${DATAFILE}

echo "  </TR>" >> ${PAGE}
echo "</TABLE>" >> ${PAGE}


echo "<HR>" >> ${PAGE}
echo "<TABLE BORDER=0>" >> ${PAGE}
echo "  <TR>" >> ${PAGE}
echo "    <TD><FONT COLOR=black face='verdana' size='2'> <B> Legenda: </FONT> </TD>" >> ${PAGE}
echo "    <TD></TD>" >> ${PAGE}
echo "    <TD></TD>" >> ${PAGE}
echo "  </TR>" >> ${PAGE}
echo "  <TR>" >> ${PAGE}
echo "    <TD><FONT COLOR=black face='verdana' size='2'>E = <IMG SRC=EMC2.jpg height=20%> </FONT> </TD>" >> ${PAGE}
echo "    <TD><FONT COLOR=black face='verdana' size='2'>H = <IMG SRC=HDS.png height=10%> </FONT> </TD>" >> ${PAGE}
echo "    <TD><FONT COLOR=black face='verdana' size='2'>N = <IMG SRC=NetApp.jpg height=20%> </FONT> </TD>" >> ${PAGE}
echo "  </TR>" >> ${PAGE}
echo "  <TR>" >> ${PAGE}
echo "    <TD BGCOLOR=green><FONT COLOR=black face='verdana' size='2'>SSD TiB</FONT> </TD>" >> ${PAGE}
echo "    <TD BGCOLOR=orange><FONT COLOR=black face='verdana' size='2'>HDD TiB</FONT> </TD>" >> ${PAGE}
echo "    <TD BGCOLOR=red><FONT COLOR=black face='verdana' size='2'>Legacy(N:7mode) TiB</FONT> </TD>" >> ${PAGE}
echo "  </TR>" >> ${PAGE}
echo "</TABLE>" >> ${PAGE}

# When (explanation)TXT-file
if [ -f ${TXTFILE} ]; then
  echo "<HR>" >> ${PAGE}
  echo "  <FONT COLOR=black face='verdana' size='3'>" >> ${PAGE}
  cat ${TXTFILE}|while read LINE
  do
    echo "${LINE} <BR>" >> ${PAGE}
  done  # TXTFILE
  echo "  </FONT>" >> ${PAGE}
fi  # TXTFILE


echo "<HR>" >> ${PAGE}
echo "<TABLE BORDER=0 WIDTH='100%'>" >> ${PAGE}
echo "<TR>" >> ${PAGE}
echo "  <TD bgColor=#0066A1 >" >> ${PAGE}
echo "    <FONT COLOR=white face='Verdana' size='1'>" >> ${PAGE}
echo "      <CENTER>" >> ${PAGE}
echo "Contact & Content Owner: <A HREF=mailto:Maarten.deBoer@Atos.net>Maarten de Boer</A> |Last Update: `date` [${PGM} v${VER}] <BR>" >> ${PAGE}
echo "For internal use (c) Atos S.A. `date +%Y` all rights reserved. Reproduction in whole or in part is prohibited without the written consent of Atos SA." >> ${PAGE}
echo "      </CENTER>" >> ${PAGE}
echo "    </FONT>" >> ${PAGE}
echo "  </TD>" >> ${PAGE}
echo "</TR>" >> ${PAGE}
echo "</TABLE>" >> ${PAGE}
echo "</BODY>" >> ${PAGE}
echo "</HTML>" >> ${PAGE}

if [ "${HTMLMAILTO}" != "" ]; then
  cat ${PAGE}|mailx -s "html:decarbon.html" ${HTMLMAILTO}
  echo "  Mailed HTML-page to ${HTMLMAILTO}"|tee -a ${LOG}
fi

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

