
#!/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
#(0.5),201104	: Upd. with newest file in DATADIR
#(0.6),201104	: Added DETAIL, SYSNAME -> CLUSTERNAME
PGM="`basename $0|cut -d\. -f1`"
VER="0.6"
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"
DETAILDIR="${BASEDIR}/details"

PAGEDIR="/appl/netapp/html/decarbon"
TITLE="Storage 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 "DETAILDIR=${DETAILDIR}"
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
if [ ! -d ${DETAILDIR} ]; then
  echo "  NO DETAIL-dir (${DETAILDIR}) found. Exiting ..."|tee -a ${LOG}
  exit 6
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 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
echo "  Countries ..."
cat ${CLUSTERFILE}|grep -v ^#|awk -F\; '{print $1}'|sort -u|while read COUNTRY REST
do
#  echo "  ${COUNTRY} "
# selecte LAST file available
  DATAFILE=`grep "^${COUNTRY};" ${DATADIR}/country-systems*.csv|cut -d\: -f1|sort -u|tail -1`
# Get PROCDATE /country
  PROCDATE=`echo ${DATAFILE}|cut -d\_ -f2|cut -d\. -f1`
  if [ "${PROCDATE}" != "" ]; then
    PROCDATE="(${PROCDATE})"
  fi

  echo "    <TD>" >>  ${PAGE}
  echo "      <FONT COLOR=black face='verdana' size='2'><B><CENTER>${COUNTRY} ${PROCDATE}</FONT>" >> ${PAGE}
  echo "    </TD>" >>  ${PAGE}
done  # ${CLUSTERFILE}
echo "  </TR>" >> ${PAGE}

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

echo "    <TD>" >>  ${PAGE}
# Check if a unknown-file has some information
cat ../data/unknown-systems_*.csv|grep -v ^#|awk -F\; '{print $2}'|sort -u|while read LINE
  do
    echo "    <FONT COLOR=red face='verdana' size='2'> ${LINE} <BR> </FONT> <BR>" >> ${PAGE}
  done  # cat
echo "    </TD>" >>  ${PAGE}


echo "  Country info ..."

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

# selecte LAST file available
  DATAFILE=`grep "^${COUNTRY};" ${DATADIR}/country-systems*.csv|cut -d\: -f1|sort -u|tail -1`

  PROCDATE=`echo ${DATAFILE}|cut -d\_ -f2|cut -d\. -f1`
  if [ "${DATAFILE}" != "" ]; then

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

# When a SYStemNAME, then process for html-PAGE
    if [ "${CLUSTERNAME}" != "" ]; then
# update DETAILs
# nlnaf100;nlnaf100-01;n01a0601;hdd;100402
      if [ -f ${DETAILDIR}/${CLUSTERNAME}_${PROCDATE}.csv ]; then
        echo "  ${DETAILDIR}/${CLUSTERNAME}_${PROCDATE}.csv"
        DPAGE="${PAGEDIR}/${CLUSTERNAME}.html"
        echo "<HTML>" > ${DPAGE}
        echo "  <HEAD>" >> ${DPAGE}
        echo "  </HEAD>" >> ${DPAGE}
        echo "  <BODY>" >> ${DPAGE}

        echo "    <TABLE border=1>" >> ${DPAGE}
        echo "      <TR>" >> ${DPAGE}
        echo "        <TH> CLUSTERNAME </TH>" >> ${DPAGE}
        echo "        <TH> SYSTEMNAME </TH>" >> ${DPAGE}
        echo "        <TH> AGGR / POOL-NAME </TH>" >> ${DPAGE}
        echo "        <TH> TYPE </TH>" >> ${DPAGE}
        echo "        <TH> SIZE_GB </TH>" >> ${DPAGE}
        echo "      </TR>" >> ${DPAGE}

        cat ${DETAILDIR}/${CLUSTERNAME}_${PROCDATE}.csv|sort -u|grep -v ^#|awk -F\; '{print $1,$2,$3,$4,$5}'|while read CLUSTERNAME SYSTEMNAME AGGRNAME TYPE SIZE_GB REST2
        do
          echo "      <TR>" >> ${DPAGE}
          echo "        <TD> ${CLUSTERNAME} </TD>" >> ${DPAGE}
          echo "        <TD> ${SYSTEMNAME} </TD>" >> ${DPAGE}
          echo "        <TD> ${AGGRNAME} </TD>" >> ${DPAGE}
          if [ "${TYPE}" = "ssd" ]; then
            echo "        <TD BGCOLOR=green> ${TYPE} </TD>" >> ${DPAGE}
          else
            if [ "${TYPE}" = "legacy" ]; then
              echo "        <TD BGCOLOR=red> ${TYPE} </TD>" >> ${DPAGE}
            else
              echo "        <TD BGCOLOR=orange> ${TYPE} </TD>" >> ${DPAGE}
            fi
          fi  # TYPE
          echo "        <TD> ${SIZE_GB}GB </TD>" >> ${DPAGE}
          echo "      </TR>" >> ${DPAGE}
        done
        echo "    </TABLE>" >> ${DPAGE}
        echo "  </BODY>" >> ${DPAGE}
        echo "</HTML>" >> ${DPAGE}
      fi  # DETAILs

      SSD=`grep "${COUNTRY};" ${DATAFILE}|grep "${CLUSTERNAME};"|sort -u|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 "${CLUSTERNAME};"|sort -u|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 "${CLUSTERNAME};"|sort -u|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}"
      if [ -f ${PAGEDIR}/${CLUSTERNAME}.html ]; then
        echo "          <TD WIDTH='1%'><FONT COLOR=black face='verdana' size='2'><A HREF=${CLUSTERNAME}.html>${V}:${CLUSTERNAME}:</A></FONT> </TD>" >> ${PAGE}
      else
        echo "          <TD WIDTH='1%'><FONT COLOR=black face='verdana' size='2'>${V}:${CLUSTERNAME}:</FONT> </TD>" >> ${PAGE}
      fi

      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  # CLUSTERNAME <> ""

  done  # CLUSTERNAME

  fi  # DATAFILE <> ""

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

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 <B>TiB</FONT> </TD>" >> ${PAGE}
echo "    <TD BGCOLOR=orange><FONT COLOR=black face='verdana' size='2'>HDD <B>TiB</FONT> </TD>" >> ${PAGE}
echo "    <TD BGCOLOR=red><FONT COLOR=black face='verdana' size='2'>Legacy(N:7mode) <B>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

