
#/bin/sh
# File	: cdot_volume-qtree-quota_config.sh
# By	: Maarten de Boer@Atos.net, 221222
# Subject	: Script to create volumes onto cDOT
PGM=`basename $0|cut -d\. -f1`
VER="0.1"
LOG="${HOME}/log/${PGM}.log"
SSH="/usr/bin/ssh -n"
RCFILE="${HOME}/etc/${PGM}.rc"

DATAFILE="${HOME}/data/${PGM}.csv"
CLUSTER="tlenlfas8040"
NFILTER="[?]*"

USAGE()
{
  echo "Usage: ${PGM} [<options>]"
  echo "  Version: ${VER}"
  echo "  options       :"
  echo "    -c          : Clustername (${CLUSTER})"
  echo "    -d          : Datafile (${DATAFILE})"
  echo "    -s          : Svmname (${VSERVER})"
  echo "    -h|--help   : this help"
  echo "    -V          : Version"
  echo "    -x          : set -x"
}
if [ -f ${RCFILE} ]; then
  echo "  RCFILE (${RCFILE}) found. Using it"
  . ${RCFILE}
fi  # RCFILE
while [ $# -gt 0 ]
  do
  case $1 in
    -c) CLUSTER="${2}"; shift ;;
    -s) VSERVER="${2}"; shift ;;
    -d) DATAFILE="${2}"; shift ;;
    -h | --help) USAGE; exit 1 ;;
    -V) echo "${PGM}: v${VER}"; exit 2 ;;
    -x)  set -x ;;
    *)  echo "Option $1 not known."; USAGE; exit 1 ;;
  esac
    shift
done

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

if [ ! -f ${DATAFILE} ]; then
  echo "  DATAFILE (${DATAFILE}) NOT found. Exiting ..."
  exit 3
fi
echo "  Config VOlume-Qtree-Quota: CLUSTER=${CLUSTER} NFILTER=${NFILTER}"
echo "Press [ENTER]"
read INPUT

# DATAFILE
#  cluster;vserver;volume;aggregate;size;snapshot-policy;comment;qtree;secu-style;quota(disk-limit);
#
cat ${DATAFILE}|grep -v ^#|grep ${CLUSTER}|grep ${NFILTER}|while read LINE
do
  CLUSTER=`echo ${LINE}|awk -F\; '{print $1}'`
  VSERVER=`echo ${LINE}|awk -F\; '{print $2}'`
  VOLUME=`echo ${LINE}|awk -F\; '{print $3}'`
  AGGR=`echo ${LINE}|awk -F\; '{print $4}'`
  SIZE=`echo ${LINE}|awk -F\; '{print $5}'`
  SS_POL=`echo ${LINE}|awk -F\; '{print $6}'`
  COMMENT=`echo ${LINE}|awk -F\; '{print $7}'`
  QTREE=`echo ${LINE}|awk -F\; '{print $8}'`
  SECU_STYLE=`echo ${LINE}|awk -F\; '{print $9}'`
  QUOTA=`echo ${LINE}|awk -F\; '{print $10}'`

  echo "  CLUSTER=${CLUSTER} VSERVER=${VSERVER} VOLUME=${VOLUME} AGGR=${AGGR} SIZE=${SIZE} SS_POL=${SS_POL} COMMENT=${COMMENT} QTREE=${QTREE} SECU_STYLE=${SECU_STYLE} QUOTA=${QUOTA}"|tee -a ${LOG}

  if [ "${SS_POL}" = "" ]; then
    SS_POL="none"
  fi
  if [ "${COMMENT}" = "" ]; then
    COMMENT="By ${PGM} `date`"
  fi

  Q_POLICY=`echo ${VSERVER}|sed 's/tlenl//g'|sed 's/nlnafs//g'`

# 1. Create volume "
  if [ "${VSERVER}" != "" ] && [ "${VOLUME}" != "" ]; then
    SVM_VOL=`${SSH} ${CLUSTER} "volume show -vserver ${VSERVER}"|grep "${VOLUME}"`
    if [ "${SVM_VOL}" = "" ]; then
      echo "    1. Create volume ${VOLUME} at ${VSERVER}"|tee -a ${LOG}
      ${SSH} ${CLUSTER} "volume create -vserver ${VSERVER} -volume ${VOLUME} -aggregate ${AGGR} -size ${SIZE} -junction-path /${VOLUME} -comment \"${COMMENT}\" -snapshot-policy ${SS_POL} -foreground true -percent-snapshot-space 0 -min-auto 1g -autosize-grow-threshold-percent 85% -autosize-shrink-threshold-percent 75% -autosize-mode grow_shrink -language C -space-guarantee none -type RW"
      ${SSH} ${CLUSTER} "volume show -vserver ${VSERVER}"
      sleep 1
    fi  # SVM_VOL
  fi  # VSERVER}" != "" && VOLUME}" != ""


# 2. Create Qtree 
  if [ "${VSERVER}" != "" ] && [ "${VOLUME}" != "" ] && [ "${QTREE}" != "" ]; then
    SVM_VOL_QTREE=`${SSH} ${CLUSTER} "qtree show -vserver ${VSERVER} -volume ${VOLUME}"|grep "${QTREE}"`
    if [ "${SVM_VOL_QTREE}" = "" ]; then
      echo "  2. Create Qtree ${QTREE} in ${VOLUME}"|tee -a ${LOG}
      ${SSH} ${CLUSTER} "qtree create -vserver ${VSERVER} -qtree-path /vol/${VOLUME}/${QTREE} -security-style ${SECU_STYLE}"
      ${SSH} ${CLUSTER} "qtree show -vserver ${VSERVER} -qtree-path /vol/${VOLUME}/${QTREE}"
      sleep 1
    fi  # SVM_VOL_QTREE
  fi  # QTREE}" != ""


# 3. Set Quota 
  if [ "${VSERVER}" != "" ] && [ "${QTREE}" != "" ] && [ "${QUOTA}" != "" ]; then
    QUO_POL_RULE=`${SSH} ${CLUSTER} "quota policy rule show -vserver ${VSERVER}"|grep " ${QTREE} "`
    if [ "${QUO_POL_RULE}" = "" ]; then
      echo "  3. Set Quota on with ${Q_POLICY}"
      ${SSH} ${CLUSTER} "quota policy create -vserver ${VSERVER} -policy ${Q_POLICY}"
      ${SSH} ${CLUSTER} "quota policy rule create -vserver ${VSERVER} -policy-name ${Q_POLICY} -volume ${VOLUME} -target ${QTREE} -disk-limit ${QUOTA} -type tree"
      ${SSH} ${CLUSTER} "quota on -vserver ${VSERVER} -volume ${VOLUME}"
      ${SSH} ${CLUSTER} "quota policy rule show -vserver ${VSERVER} -target ${QTREE}"
    fi  # QUO_POL_RULE

  fi # QUOTA}" != ""

done  # DATAFILE


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

