
#!/bin/sh
# File	: noc_quota_update.sh
# By	: Maarten.deBoer@Atos.net, 230905, 231218, 240103
# Subject	: Netapp Ontap Cli script to create qtrees based on CSV-file
#(0.1)	: Copied from noc_quota_create.sh
#(0.2),240320	: From noc_quota_create.sh , for RC-files
#(0.3),250407	: Update SVM_QUO_POL=
#(0.4),260518	: Update SVM_QUO_POL_NAME
PGM=`basename $0|cut -d\. -f1`
VER="0.4"
LOG="${HOME}/log/${PGM}.log"
SSH="/usr/bin/ssh -n"

DATADIR="${HOME}/data"
DATAINDIR="${DATADIR}/rc"

# NAO defaults
NAO_CLUSTERNAME="nlnaf999"
NAO_VSERVER_NAME="nlnafsmss99"
NAO_VOL_NAME="mss99_vol09999"
NAO_VOL_STOR_CLASS="gold"
ATOS_CHANGE_NR="CHG123456789"
#
NAO_QTREE_NAME="qtree01"
NAO_QUOTA_DISK_LIMIT="1gb"
NAO_QUOTA_POLICY_NAME=""

# Policy-filter
FILTER="mss"

if [ "${1}" != "" ]; then
  FILTER="${1}"
fi
if [ "${2}" != "" ]; then
  DATAINDIR="${2}"
fi
echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
echo "  FILTER(1)=${FILTER}"
echo "  DATAINDIR(2)=${DATAINDIR}"
sleep 1

if [ ! -d ${DATAINDIR} ]; then
  echo "  NO DATAINDIR (${DATAINDIR}) found. Exiting ..."|tee -a ${LOG}
  exit 4
fi  # ! DATAINDIR

cd ${DATAINDIR}
ls -1 *volume*quota*.rc|grep "${FILTER}"|while read FNAME
do
  echo "FNAME=${FNAME}|"

# Reading VAR's of all RC-files in DATAINDIR
  if [ "${FNAME}" != "" ] && [ -f ${FNAME} ]; then
    . ${DATAINDIR}/${FNAME}

    echo "NAO_CLUSTERNAME=${NAO_CLUSTERNAME}|"
    echo "NAO_VSERVER_NAME=${NAO_VSERVER_NAME}|"
    echo "NAO_VOL_NAME=${NAO_VOL_NAME}|"
    echo "ATOS_CHANGE_NR=${ATOS_CHANGE_NR}|"

    echo "NAO_QTREE_NAME=${NAO_QTREE_NAME}|"
    echo "NAO_QUOTA_DISK_LIMIT=${NAO_QUOTA_DISK_LIMIT}|"
    echo "NAO_QUOTA_POLICY_NAME=${NAO_QUOTA_POLICY_NAME}|"
#    echo "NAO_QTREE_EXPORT_POLICY=${NAO_QTREE_EXPORT_POLICY}|"

    if [ "${NAO_CLUSTERNAME}" != "" ] && [ "${NAO_VSERVER_NAME}" != "" ] && [ "${NAO_QTREE_NAME}" != "" ]; then

# Check /Create SVM Quota policy
#      SVM_QUO_POL_NAME=`echo ${NAO_VSERVER_NAME}|sed 's/tlenl//g'|sed 's/nlnafs//g'`
#
# Check if NAO_QUOTA_POLICY_NAME is set, otherwise use SVM_name
# quota policy name became FULL vserver/SVM name
      if [ "${NAO_QUOTA_POLICY_NAME}" != "" ]; then
        SVM_QUO_POL_NAME="${NAO_QUOTA_POLICY_NAME}"
      else
        SVM_QUO_POL_NAME=`echo ${NAO_VSERVER_NAME}`
        SVM_QUO_POL=`${SSH} ${NAO_CLUSTERNAME} "quota policy show -vserver ${NAO_VSERVER_NAME} -field policy"|awk '{print $2}'| grep "${SVM_QUO_POL_NAME}"`
        if [ "${SVM_QUO_POL}" = "" ]; then
          echo "    Create (SVM) Quota Policy (${SVM_QUO_POL_NAME}) at ${NAO_VSERVER_NAME}"|tee -a ${LOG}
          ${SSH} ${NAO_CLUSTERNAME} "quota policy create -vserver ${NAO_VSERVER_NAME} -policy ${SVM_QUO_POL_NAME}"
          ${SSH} ${NAO_CLUSTERNAME} "quota policy show -vserver ${NAO_VSERVER_NAME}"
          sleep 1
        else
          echo "    SVM_QUO_POL=${SVM_QUO_POL} "
        fi  # SVM_QUO_POL" = ""
      fi  # NAO_QUOTA_POLICY_NAME <> ""

      SVM_VOL_QTREE=`${SSH} ${NAO_CLUSTERNAME} "qtree show -vserver ${NAO_VSERVER_NAME} -volume ${NAO_VOL_NAME} -qtree ${NAO_QTREE_NAME}" | grep ${NAO_QTREE_NAME}`
      if [ "${SVM_VOL_QTREE}" != "" ]; then
        echo "  Create Quota ${NAO_QTREE_NAME} in ${NAO_VOL_NAME}"|tee -a ${LOG}

        QUO_POL_RULE=`${SSH} ${NAO_CLUSTERNAME} "quota policy rule show -vserver ${NAO_VSERVER_NAME}"|grep " ${NAO_QTREE_NAME} "`

# Check if Quota is on. If not then create default-volume-policy & set on
        QUO_VOL_STATUS=`${SSH} ${NAO_CLUSTERNAME} "quota show -vserver ${NAO_VSERVER_NAME} -field state"|grep ${NAO_VOL_NAME}|awk '{print $3}'`
        if [ "${QUO_VOL_STATUS}" = "off" ]; then
# volume quota policy rule create -vserver tlenlpkc01 -policy-name default -volume pkc01_vol01003 -type tree -target ""
          echo "    Creating default quota policy on volume ${NAO_VOL_NAME} and Enabling quota"|tee -a ${LOG}
          ${SSH} ${NAO_CLUSTERNAME} "volume quota policy rule create -vserver ${NAO_VSERVER_NAME} -volume ${NAO_VOL_NAME} -policy-name default -type tree -target \"\" "
          ${SSH} ${NAO_CLUSTERNAME} "volume quota on -vserver ${NAO_VSERVER_NAME} -volume ${NAO_VOL_NAME}"

          sleep 2
        fi  # QUO_VOL_STATUS}" = "off

        if [ "${QUO_POL_RULE}" = "" ]; then
          echo "     Set Quota on with ${Q_POLICY}"
          ${SSH} ${NAO_CLUSTERNAME} "volume quota policy rule create -vserver ${NAO_VSERVER_NAME} -policy-name default -volume ${NAO_VOL_NAME} -type tree -target \"\" "
          ${SSH} ${NAO_CLUSTERNAME} "volume quota policy rule create -vserver ${NAO_VSERVER_NAME} -policy-name ${SVM_QUO_POL_NAME} -volume ${NAO_VOL_NAME} -type tree -target ${NAO_QTREE_NAME} -disk-limit ${NAO_QUOTA_DISK_LIMIT}"
          ${SSH} ${NAO_CLUSTERNAME} "quota off -vserver ${NAO_VSERVER_NAME} -volume ${NAO_VOL_NAME}"
          ${SSH} ${NAO_CLUSTERNAME} "quota on -vserver ${NAO_VSERVER_NAME} -volume ${NAO_VOL_NAME}"

          sleep 2
        fi  # QUO_POL_RULE

        ${SSH} ${NAO_CLUSTERNAME} "qtree show -vserver ${NAO_VSERVER_NAME} -volume ${NAO_VOL_NAME} -qtree ${NAO_QTREE_NAME} -field vserver, volume, qtree,security-style"
        ${SSH} ${NAO_CLUSTERNAME} "quota show -vserver ${NAO_VSERVER_NAME} -volume ${NAO_VOL_NAME} -field vserver,volume,state,scan-status"
        ${SSH} ${NAO_CLUSTERNAME} "quota policy rule show -vserver ${NAO_VSERVER_NAME} -volume ${NAO_VOL_NAME} -target ${NAO_QTREE_NAME}  -field vserver,policy-name,volume,type,target,disk-limit,threshold"

      else
        echo "    Qtree: ${NAO_VOL_NAME}/${SVM_VOL_QTREE}"
      fi  # SVM_VOL_QTREE

      sleep 1
    else
      echo "  Not all VAR's has a value."|tee -a ${LOG}
    fi  # "${NAO_CLUSTERNAME}" != "" ]  ....

    ${SSH} ${NAO_CLUSTERNAME} "qtree show -vserver ${NAO_VSERVER_NAME} -volume ${NAO_VOL_NAME} -qtree ${NAO_QTREE_NAME} -field vserver, volume, qtree,security-style"

  fi  # ${FNAME}" != ""

done  # LINE

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

