
#/bin/sh
# File	: cdot_vol-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

if [ ! -f ${DATAFILE} ]; then
  echo "  DATAFILE (${DATAFILE}) NOT found. Exiting ..."
  exit 3
fi
echo "  Config vserver(SVM):"
echo "  CLUSTER=${CLUSTER}"
echo "  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}'`
  SH_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} SH_POL=${SH_POL} COMMENT=${COMMENT} QTREE=${QTREE} SECU_STYLE=${SECU_STYLE} QUOTA=${QUOTA}"

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

  echo "  1. Create volume ${VOLUME} at ${VSERVER}"
  ${SSH} ${CLUSTER} "volume create -vserver ${VSERVER} -volume ${VOLUME} -aggregate ${AGGR} -size ${SIZE} -junction-path /${VOLUME} -comment \"${COMMENT}\" -snapshot-policy ${SH_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


  echo "  2. Create Qtree "
  ${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


  Q_POLICY=`echo ${VSERVER}|sed 's/tlenl//g'`
  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}"

done  # DATAFILE


exit 0

