
#!/bin/sh
# File	: ontap_vol_rpt.sh
# By	: Maarten.deBoer@Atos.net, 200930
# Subject	: Script to report (cDOT/ONTAP) volumes into CSV-file
#(0.2),200930	: Added CFILTER
#(0.3),201001	: Added at -field Aggregate, node
#(0.4),201124	: Added USAGE
#(0.5),231024	: Mod. mail-hdr, Added RCFILE
#(0.6),240611,MdB	: Add 1st line explanation
#(0.7),240625	: Added [MB], Renamed from cdot_rpt_volumes.sh
PGM=`basename $0|cut -d\. -f1`
VER="0.7"
SSH="/usr/bin/ssh -n"
LOG="${HOME}/log/${PGM}.log"
MAILTO="maarten.deboer@atos.net"
HOSTNAME=`hostname |cut -d\. -f1`
RCFILE="${HOME}/etc/${PGM}.rc"

DATI=`date +%Y-%m-%d-%H-%M-%S`

CLUSTERS="${HOME}/etc/clusters"
CFILTER="[?]*"
SFILTER="[?]*"
VFILTER="[?]*"
MAIL=""
EXT_RPT=""


USAGE()
{
  echo "Usage: $PGM [options] "
  echo "  Version: ${VER}"
  echo "  options:"
  echo "    -c | --cluster  : Cluster filter (${CFILTER})"
  echo "    -E | --Extended : Extended reporting"
  echo "    -s | --svm      : SVM filter (${SFILTER})"
  echo "    -v | --vol      : Volume filter (${VFILTER})"
  echo "    -m | --mail     : Mail report"
  echo "    --mailto        : change mailto (${MAILTO})"
  echo "    -h              : this help"
  echo "    -V              : Version"
  echo "    -x              : set -x"
}
if [ -f ${RCFILE} ]; then
  echo "  RCFILE (${RCFILE}) found. Using it"|tee -a ${LOG}
  . ${RCFILE}
fi  # RCFILE
# Check options
while [ $# -gt 0 ]
  do
  case ${1} in
    -c | --cluster) CFILTER=${2}; shift ;;
    -s | --svm) SFILTER=${2}; shift ;;
    -v | --vol) VFILTER=${2}; shift ;;
    -m | --mail) MAIL=1 ;;
    -E | --Extended) EXT_RPT=1 ;;
    --mailto) MAILTO=${2}; shift; MAIL=1 ;;
    -h | --help) USAGE; exit 1 ;;
    -V) echo "${PGM}: v${VER}"; exit 3 ;;
    -x)  set -x ;;
    *)  echo "Option ${1} not known."; USAGE; exit 1 ;;
  esac
    shift
done

if [ "${CFILTER}" == "[?]*" ]; then
  CSV="/tmp/${PGM}_${DATI}.csv"
else
  CSV="/tmp/${PGM}_${CFILTER}_${DATI}.csv"
fi  # [?]*

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG} ${TMP}.mail
echo "  CLUSTERS=${CLUSTERS}" |tee -a ${TMP}.mail
echo "  CSV=${CSV}" |tee -a ${TMP}.mail
echo "  CFILTER=${CFILTER}" |tee -a ${TMP}.mail
echo "  SFILTER=${SFILTER}" |tee -a ${TMP}.mail
echo "  VFILTER=${VFILTER}" |tee -a ${TMP}.mail
echo "  MAIL=${MAIL}" |tee -a ${TMP}.mail
echo "  MAILTO=${MAILTO}" |tee -a ${TMP}.mail
if [ ${EXT_RPT} ]; then
  echo "  EXT_RPT=${EXT_RPT}" |tee -a ${TMP}.mail
fi  # EXT_RPT
sleep 1

if [ ${EXT_RPT} ]; then
  echo "# vserver;volume;aggregate;available [MB];total [MB];used [MB];percent-used;max-autosize [MB];min-autosize [MB];autosize-grow-threshold-percent;autosize-shrink-threshold-percent;autosize-mode;space-guarantee;node;sis-space-saved;dedupe-space-saved [MB];compression-space-saved [MB];qos-policy-group;qos-adaptive-policy-group;logical-used [MB];logical-available [MB];is-space-reporting-logical;is-space-enforcement-logical;" > ${CSV}
else
  echo "# vserver;volume;aggregate [MB];available [MB];total [MB];used [MB];percent-used;max-autosize [MB];min-autosize [MB];autosize-grow-threshold-percent;autosize-shrink-threshold-percent;autosize-mode;qos-policy-group;qos-adaptive-policy-group;" > ${CSV}
fi  # EXT_RPT

cat ${CLUSTERS}|grep -v ^#|grep "${CFILTER}"|while read CLUSTER REST
do
  echo "# ${CLUSTER}:"|tee -a ${CSV}
  if [ ${EXT_RPT} ] ;then
    ${SSH} ${CLUSTER} "set -units MB -showseparator \";\" ; volume show -volume * -field vserver,aggregate,node,volume,total,logical-used,is-space-reporting-logical,logical-available,is-space-enforce,percent-used,logical-used-percent,min,max,autosize-grow-threshold-percent,autosize-shrink-threshold-percent,autosize-mode,used,avail,sis-space-saved,dedupe-space-saved,compression-space-saved,space-guarantee,compression-space-saved,qos-policy-group,qos-adaptive-policy-group" |grep -v 'Vserver Name'|sed 's/MB//g'|grep ${SFILTER}|grep ${VFILTER} >> ${CSV}
  else
# "simple" version with less info & only volumes with "vol" in the name
    ${SSH} ${CLUSTER} "set -units MB -showseparator \";\" ; volume show -volume *vol* -field vserver,aggregate,volume,total,percent-used,min,max,autosize-grow-threshold-percent,autosize-shrink-threshold-percent,autosize-mode,used,avail,qos-policy-group,qos-adaptive-policy-group" |grep -v 'Vserver Name'|sed 's/MB//g'|grep ${SFILTER}|grep ${VFILTER} >> ${CSV}
  fi  # EXT_RPT

done  # cat ${CLUSTERS}

echo "# Figures are in MB" >> ${CSV}
echo "" >> ${CSV}
echo "# `date` ${PGM} v${VER} @${HOSTNAME}" >> ${CSV}

if [ ${MAIL} ]; then
  cat ${TMP}.mail | mailx -a ${CSV} -s ":${HOSTNAME}: FSOD cDOT Volume report [${PGM} v${VER}]" "${MAILTO}"
  echo "  Mailed to ${MAILTO}"|tee -a ${LOG}
fi  # MAIL

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

