
#!/bin/sh
# File	: ontap_volume_thin_space-gar.sh
# By	: Maarten.deBoer@Atos.net, 260120
# Subject	: Script to report & set space-garantee (thin / thick provisioning)
PGM=`basename $0|cut -d\. -f1`
VER="0.1"
LOG="${HOME}/log/${PGM}.log"
SSH="/usr/bin/ssh -n"
RCFILE="${HOME}/etc/${PGM}.rc"

CLUSTERS="${HOME}/etc/clusters"
CFILTER="[?]*"
VFILTER="[?]*"
RPT=""
CHK=""
MAILTO="maarten.deboer@atos.net"
MAIL=""
CSV="/tmp/${PGM}.csv"
EXCLUDE="vol0;|_vol0root;|MDV"
SET=""

USAGE()
{
  echo "Usage: ${PGM} [<options>]"
  echo "  Version: ${VER}"
  echo "  options       :"
  echo "    -c          : Cluster filter (${CFILTER})"
  echo "    -m|--mail   : Mail report to ${MAILTO}"
  echo "    --mailto    : set MAILTO (${MAILTO})"
  echo "    -r|--rpt    : Report (${RPT})"
  echo "    --set       : SET thin provisioning (space-garantee=none)"
  echo "    -h|--help   : this help"
  echo "    -v          : Volume filter (${VFILTER})"
  echo "    -V          : Version"
  echo "    -x          : set -x"
}
if [ -f ${RCFILE} ]; then
  echo "  RCFILE(${RCFILE}) found. Reading it ..."|tee -a ${LOG}
  . ${RCFILE}
fi  # RCFILE
# Check options
while [ ${#} -gt 0 ]
  do
  case $1 in
    --help|-h) USAGE; exit 1 ;;
    -c) CFILTER=${2}; shift ;;
    -v) VFILTER=${2}; shift ;;
    --mailto) MAILTO=${2}; MAIL=1; shift ;;
    --chk) CHK=1 ;;
    --set) SET=1 ;;
    -m|--mail) MAIL=1 ;;
    -r|--rpt) RPT=1 ;;
    -V) echo "${PGM}: v${VER}"; exit 3 ;;
    -x)  set -x ;;
    *)  echo "Option $1 not known."; USAGE; exit 1 ;;
  esac
    shift
done

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
echo "  CLUSTERS=${CLUSTERS}|"
echo "  CFILTER=${CFILTER}|"
echo "  EXCLUDE=${EXCLUDE}|"
echo "  VFILTER=${VFILTER}|"
echo "  MAIL=${MAIL}"
echo "  MAILTO=${MAILTO}|"
echo "  CHK=${CHK}"
echo "  RPT=${RPT}"
echo "  SET=${SET}"
sleep 1

if [ ${RPT} ] || [ ${CHK} ]; then
  echo "#vserver;volume;space-guarantee-enabled;space-guarantee;" >  ${CSV}
fi  # RPT  || CHK

cat ${CLUSTERS}|grep -v ^#|awk '{print $1}'|grep ${CFILTER}|while read CLUSTER
do
  echo "  ${CLUSTER}"

  if [ ${RPT} ]; then
    ${SSH} ${CLUSTER} "set -showseparator \";\" ; volume show -fields vserver,volume,space-guarantee,space-guarantee-enabled"|grep "nlnaf"|grep ${VFILTER}|tee -a ${CSV}
  fi  # RPT

  if [ ${CHK} ]; then
    ${SSH} ${CLUSTER} "set -showseparator \";\" ; volume show -space-guarantee-enabled true -space-guarantee volume -fields vserver,volume,space-guarantee,space-guarantee-enabled"|grep "nlnaf"|grep ${VFILTER}|egrep -v "${EXCLUDE}"|tee -a ${CSV}
  fi  # CHK

  if [ ${SET} ]; then
    ${SSH} ${CLUSTER} "set -showseparator \";\" ; volume show -space-guarantee-enabled true -space-guarantee volume -fields vserver,volume,space-guarantee,space-guarantee-enabled"|grep "nlnaf"|grep ${VFILTER}|egrep -v "${EXCLUDE}"|while read LINE
    do
      echo "    LINE=${LINE}"
#     LINE=nlnafsmss13;mss13_vol03001;true;volume;
      VSERVER=`echo ${LINE}|awk -F\; '{print $1}'`
      VOLUME=`echo ${LINE}|awk -F\; '{print $2}'`
      ENABLED=`echo ${LINE}|awk -F\; '{print $3}'`
      TYPE=`echo ${LINE}|awk -F\; '{print $4}'`

      if [ "${ENABLED}" != "true" ] && [ "${VSERVER}" != "" ] && [ "${VOLUME}" != "" ]; then
        ${SSH} ${CLUSTER} "volume modify -vserver ${VSERVER} -volume ${VOLUME} -space-guarantee-enabled true"
        EC=${?}
        echo "    ENABLE volume (${VSERVER}:${VOLUME}) space-guarantee (${EC})"|tee -a ${LOG}
      fi  # ENABLED

      if [ "${TYPE}" != "none" ] && [ "${VSERVER}" != "" ] && [ "${VOLUME}" != "" ]; then
        ${SSH} ${CLUSTER} "volume modify -vserver ${VSERVER} -volume ${VOLUME} -space-guarantee none"
        EC=${?}
        echo "    SET volume (${VSERVER}:${VOLUME}) space-guarantee to none (${EC})"|tee -a ${LOG}
      fi  # TYPE

    done  # LINE
  fi  # SET

done  # CLUSTER

if [ ${MAIL} ] && [ "${MAILTO}" != "" ]; then
  echo "  Mailing to ${MAILTO}"|tee -a ${LOG}
  date | mailx -a ${CSV} -s ":${HOSTNAME}: Space garantee (provisioning) report [${PGM} v${VER}]" "${MAILTO}"
fi  # MAIL

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

