
#!/bin/sh
# File	: noc_quota_create.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
PGM=`basename $0|cut -d\. -f1`
VER="0.1"
LOG="${HOME}/log/${PGM}.log"
SSH="/usr/bin/ssh -n"

DATADIR="${HOME}/data"
# Policy-filter
FILTER="mss"

CSV="${DATADIR}/nl-fsod-volume-qtree-quota_mss.csv"

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

echo "  FILTER(1)=${FILTER}"
echo "  CSV(2)=${CSV}"
sleep 1

if [ ! -f ${CSV} ]; then
  echo "  NO CSV (${CSV}) file find. Exiting ..."|tee -a ${LOG}
  exit 3
fi  # <> CSV

# NAO_CLUSTERNAME(1);NAO_SVM_NAME(2);NAO_VOL_NAME(3);NAO_VOL_AGGR_NAME(4);NAO_VOL_STOR_CLASS(5);NAO_VOL_SIZE(6);NAO_VOL_SIZE_UNIT(7);NAO_VOL_TYPE(8);ATOS_CHANGE_NR(9);NAO_QTREE_NAME(10);NAO_QUOTA_DISK_LIMIT(11);NAO_QTREE_SECURITY_STYLE(12);NAO_QTREE_EXPORT_POLICY(13);NAO_VOL_LANG(14);
#NAO_SOURE_CLUSTER(15);(12)NAO_SOURCE_SVM(16);NAO_SOURCE_VOLUME(17);[NAO_SOURCE_QTREE](18);
#

cat ${CSV}|grep -v ^#|grep "${FILTER}"|while read LINE
do
#  echo "  LINE=${LINE}"
  NAO_CLUSTERNAME=`echo ${LINE}|awk -F\; '{print $1}'`
  NAO_SVM_NAME=`echo ${LINE}|awk -F\; '{print $2}'`
  NAO_VOL_NAME=`echo ${LINE}|awk -F\; '{print $3}'`

  ATOS_CHANGE_NR=`echo ${LINE}|awk -F\; '{print $9}'`
  NAO_QTREE_NAME=`echo ${LINE}|awk -F\; '{print $10}'|tr [:upper:] [:lower:]`
  NAO_QUOTA_DISK_LIMIT=`echo ${LINE}|awk -F\; '{print $11}'`
  NAO_QTREE_EXPORT_POLICY=`echo ${LINE}|awk -F\; '{print $12}'`

  echo "  NAO_CLUSTERNAME=${NAO_CLUSTERNAME} NAO_SVM_NAME=${NAO_SVM_NAME} NAO_VOL_NAME=${NAO_VOL_NAME} NAO_QTREE_NAME=${NAO_QTREE_NAME} NAO_QUOTA_DISK_LIMIT=${NAO_QUOTA_DISK_LIMIT} NAO_QTREE_SECURITY_STYLE=${NAO_QTREE_SECURITY_STYLE} NAO_QTREE_EXPORT_POLICY=${NAO_QTREE_EXPORT_POLICY} "|tee -a ${LOG}

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

# Check /Create SVM Quota policy
    SVM_QUO_POL_NAME=`echo ${NAO_SVM_NAME}|sed 's/tlenl//g'|sed 's/nlnafs//g'`
    SVM_QUO_POL=`${SSH} ${NAO_CLUSTERNAME} "quota policy show -vserver ${NAO_SVM_NAME}"| grep " ${SVM_QUO_POL_NAME} "`
    if [ "${SVM_QUO_POL}" = "" ]; then
      echo "    Create (SVM) Quota Policy (${SVM_QUO_POL_NAME}) at ${NAO_SVM_NAME}"|tee -a ${LOG}
      ${SSH} ${NAO_CLUSTERNAME} "quota policy create -vserver ${NAO_SVM_NAME} -policy ${SVM_QUO_POL_NAME}"
      ${SSH} ${NAO_CLUSTERNAME} "quota policy show -vserver ${NAO_SVM_NAME}"
      sleep 1
    else
      echo "    SVM_QUO_POL=${SVM_QUO_POL} "
    fi  # SVM_QUO_POL" = ""

    SVM_VOL_QTREE=`${SSH} ${NAO_CLUSTERNAME} "qtree show -vserver ${NAO_SVM_NAME} -volume ${NAO_VOL_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_SVM_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_SVM_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_SVM_NAME} -volume ${NAO_VOL_NAME} -policy-name default -type tree -target \"\" "
        ${SSH} ${NAO_CLUSTERNAME} "volume quota on -vserver ${NAO_SVM_NAME} -volume ${NAO_VOL_NAME}"
      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_SVM_NAME} -policy-name default -volume ${NAO_VOL_NAME} -type tree -target \"\" "
        ${SSH} ${NAO_CLUSTERNAME} "volume quota policy rule create -vserver ${NAO_SVM_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_SVM_NAME} -volume ${NAO_VOL_NAME}"
        ${SSH} ${NAO_CLUSTERNAME} "quota on -vserver ${NAO_SVM_NAME} -volume ${NAO_VOL_NAME}"
      fi  # QUO_POL_RULE

      ${SSH} ${NAO_CLUSTERNAME} "qtree show -vserver ${NAO_SVM_NAME} -volume ${NAO_VOL_NAME} -qtree ${NAO_QTREE_NAME} -field vserver, volume, qtree,security-style"
      ${SSH} ${NAO_CLUSTERNAME} "quota show -vserver ${NAO_SVM_NAME} -volume ${NAO_VOL_NAME} -field vserver,volume,state,scan-status"
      ${SSH} ${NAO_CLUSTERNAME} "quota policy rule show -vserver ${NAO_SVM_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_SVM_NAME} -volume ${NAO_VOL_NAME} -qtree ${NAO_QTREE_NAME} -field vserver, volume, qtree,security-style"
done  # LINE

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

