
#!/bin/bash
# File	: upl_decarbon_to_graphite.sh
# By	: MaartenDeBoer.nl, 2015-01-17, 2020-11-05
# Subject	: Script to upload DeCarbon-data to Graphite
#set -x
#(0.2),201111	: Mod. input
#(0.3),201111	: Mod. INPUT-file(s) & Add DISKSFILE
#(0.4),210210	: Added grep -v ^country at cat
PGM="`basename $0|cut -d\. -f1`"
VER="0.4"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
RESULT=""
# aoxnlfsd07 ("server"-graphite)
GRAPHITESRV="10.192.109.164 2003"
# aoxnlfsd06 ("netapp"-graphite)
#GRAPHITESRV="10.192.109.224 2003"
GRAPHITE=""
NC="/usr/bin/nc"

APPLDIR="/appl/netapp/decarbon"
DATADIR="${APPLDIR}/data"
#PROCDATE=`date +%Y-%m-%d --set=yesterday`
PROCDATE=`date +%Y-%m-%d --set=today`
POOLSFILE="${DATADIR}/country-systems-pools_${PROCDATE}.csv"
DISKSFILE="${DATADIR}/country-systems-disks_${PROCDATE}.csv"

USAGE()
{
  echo "Usage: ${PGM} [options]"
  echo "Options          : "
  echo "     -g          : send to Graphite"
  echo "     -h | --help : This help"
  echo "     -V          : Version"
  echo "     -f | --file : other POOLSFILE (${POOLSFILE})"
  echo "     -d | --date : other PROCDATE (${PROCDATE})"
#  echo "     --datadir   : other DATADIR (${DATADIR})"
}
while [ ${#} -gt 0 ]
do
  case "${1}" in
    -g)  GRAPHITE=1 ;;
    -h | --help)  USAGE; exit 1 ;;
    -x)  set -x ;;
    -V)  echo "Version=${VER}" ; exit 1 ;;
    -f | --file)  
      POOLSFILE=${2} 
      PROCDATE=`echo "${POOLSFILE}"|cut -d\_ -f2|cut -d\. -f1`
      shift  ;;
    -d | --date)  
      PROCDATE=${2} 
      DISKSFILE="${DATADIR}/country-systems-disks_${PROCDATE}.csv"
      POOLSFILE="${DATADIR}/country-systems-pools_${PROCDATE}.csv"
      shift  ;;
#    --datadir)  DATADIR=${2}; shift  ;;
    *) echo "Option ${1} not found." ; USAGE; exit 1 ;;
  esac
  shift
done

#FILE="${DATADIR}/country-systems_${PROCDATE}.csv"

# Get epoch-date for the DATE at 00:00:00
if [ "${PROCDATE}" != "" ]; then
  EPOCH=`date +%s -d"${PROCDATE}"`
else
  EPOCH=`date +%s`
fi

echo "`date` ${PGM} v${VER} started."|tee ${LOG} 
echo "DISKSFILE=${DISKSFILE}"
echo "EPOCH=${EPOCH}"
echo "GRAPHITE=${GRAPHITE}"
echo "GRAPHITESRV=${GRAPHITESRV}"
echo "POOLSFILE=${POOLSFILE}"
echo "PROCDATE=${PROCDATE}"
echo "PGM=${PGM}"
echo "VER=${VER}"
sleep 1

if [ -f ${POOLSFILE} ]; then
# country; system(cluster / HA)name; vendor ; SSD [GiB]; HDD [GiB]; Legay(7mode) [GiB];
  cat ${POOLSFILE}|grep -v ^#|grep -v ^country|sort -u|awk -F\; '{print $1,$2,$3,$4,$5,$6,$7}'| while read COUNTRY CLUSTER VENDOR SSD_GB HDD_GB OLD_GB REST
  do
    echo "  atos.decarbon.${COUNTRY}.${CLUSTER}.${VENDOR}.gb.ssd ${SSD_GB} ${EPOCH}"
    echo "  atos.decarbon.${COUNTRY}.${CLUSTER}.${VENDOR}.gb.hdd ${HDD_GB} ${EPOCH}"
    echo "  atos.decarbon.${COUNTRY}.${CLUSTER}.${VENDOR}.gb.old ${OLD_GB} ${EPOCH}"
    if [ ${GRAPHITE} ]; then
      echo "  To GRAPHITESRV=${GRAPHITESRV}"|tee -a ${LOG}
      echo "atos.decarbon.${COUNTRY}.${CLUSTER}.${VENDOR}.gb.ssd ${SSD_GB} ${EPOCH}"| ${NC} ${GRAPHITESRV}
      echo "atos.decarbon.${COUNTRY}.${CLUSTER}.${VENDOR}.gb.hdd ${HDD_GB} ${EPOCH}"| ${NC} ${GRAPHITESRV}
      echo "atos.decarbon.${COUNTRY}.${CLUSTER}.${VENDOR}.gb.old ${OLD_GB} ${EPOCH}"| ${NC} ${GRAPHITESRV}
    fi  # GRAPHITE
  done  # cat
fi  # if -f POOLSFILE
if [ -f ${DISKSFILE} ]; then
#country; system(cluster / HA)name; vendor ; SSD [# disks]; HDD [# disks];
  cat ${DISKSFILE}|grep -v ^#|grep -v ^country|sort -u|awk -F\; '{print $1,$2,$3,$4,$5,$6,$7}'| while read COUNTRY CLUSTER VENDOR SSD_CNT HDD_CNT REST
  do
    echo "  atos.decarbon.${COUNTRY}.${CLUSTER}.${VENDOR}.cnt.ssd ${SSD_CNT} ${EPOCH}"
    echo "  atos.decarbon.${COUNTRY}.${CLUSTER}.${VENDOR}.cnt.hdd ${HDD_CNT} ${EPOCH}"
    if [ ${GRAPHITE} ]; then
      echo "  To GRAPHITESRV=${GRAPHITESRV}"|tee -a ${LOG}
      echo "atos.decarbon.${COUNTRY}.${CLUSTER}.${VENDOR}.cnt.ssd ${SSD_CNT} ${EPOCH}"| ${NC} ${GRAPHITESRV}
      echo "atos.decarbon.${COUNTRY}.${CLUSTER}.${VENDOR}.cnt.hdd ${HDD_CNT} ${EPOCH}"| ${NC} ${GRAPHITESRV}
    fi
  done  # cat POOLSFILE
fi  # if -f DISKSFILE

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

