

#!/bin/sh
# File	: noc_qtree_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_volume_create.sh
#(0.2),240216	: Added 'export-policy create'
#(0.3),240320	: From noc_qtree_create.sh, for RC-files
#(0.4),250515	: Mod. NAO_QTREE_EXPORT_POLICY
#(0.5),251202	: Add. NAO_QTREE_UNIX_PERMISSIONS
PGM=`basename $0|cut -d\. -f1`
VER="0.5"
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_QTREE_SECURITY_STYLE="unix"  # of ntfs
NAO_QTREE_EXPORT_POLICY="mss"
NAO_QTREE_UNIX_PERMISSIONS="---rwxr-xr-x"

# 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 *qtree*.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_QTREE_SECURITY_STYLE=${NAO_QTREE_SECURITY_STYLE}|"
    echo "NAO_QTREE_EXPORT_POLICY=${NAO_QTREE_EXPORT_POLICY}|"
    echo "NAO_QTREE_UNIX_PERMISSIONS=${NAO_QTREE_UNIX_PERMISSIONS}|"

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

# Check NFS when NAO_QTREE_EXPORT_POLICY
      if [  "${NAO_QTREE_EXPORT_POLICY}" != "" ]; then

# Check is NFS server is active
        NAO_NFS_SVM=`${SSH} ${NAO_CLUSTERNAME} "vserver nfs show -vserver ${NAO_VSERVER_NAME}"|grep "${NAO_VSERVER_NAME}"`
        echo "NAO_NFS_SVM=${NAO_NFS_SVM}"
        if [ "${NAO_NFS_SVM}" == "" ]; then
          ${SSH} ${NAO_CLUSTERNAME} "vserver nfs create -vserver ${NAO_VSERVER_NAME} -v3 enabled -v4.0 disabled -udp disabled -v4.1 disabled"
          ${SSH} ${NAO_CLUSTERNAME} "vserver nfs start -vserver ${NAO_VSERVER_NAME}"
        fi  # NAO_NFS_SVM

# Check & Create NAO_QTREE_EXPORT_POLICY
        NAO_EXPORT_POL=`${SSH} ${NAO_CLUSTERNAME} "export-policy show -vserver ${NAO_VSERVER_NAME} -policy ${NAO_QTREE_EXPORT_POLICY} -field vserver,policy"|grep "${NAO_QTREE_EXPORT_POLICY}"`
# When no export-polocy rule, create a default one
        echo "NAO_EXPORT_POL=${NAO_EXPORT_POL}"
        if [ "${NAO_EXPORT_POL}" == "" ]; then
          ${SSH} ${NAO_CLUSTERNAME} "export-policy create -vserver ${NAO_VSERVER_NAME} -policy ${NAO_QTREE_EXPORT_POLICY} "
        fi  # NAO_EXPORT_POL_RULE
      fi  # NAO_QTREE_EXPORT_POLICY

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

          if [ "${NAO_QTREE_EXPORT_POLICY}" != "" ]; then
            ${SSH} ${NAO_CLUSTERNAME} "qtree create -vserver ${NAO_VSERVER_NAME} -qtree-path /vol/${NAO_VOL_NAME}/${NAO_QTREE_NAME} -security-style ${NAO_QTREE_SECURITY_STYLE} -export-policy ${NAO_QTREE_EXPORT_POLICY} -unix-permissions ${NAO_QTREE_UNIX_PERMISSIONS}"
          else
            ${SSH} ${NAO_CLUSTERNAME} "qtree create -vserver ${NAO_VSERVER_NAME} -qtree-path /vol/${NAO_VOL_NAME}/${NAO_QTREE_NAME} -security-style ${NAO_QTREE_SECURITY_STYLE} -unix-permissions ${NAO_QTREE_UNIX_PERMISSIONS}"
          fi  # NAO_QTREE_EXPORT_POLICY != ""

          sleep 1
        else
          echo "  Modify Qtree ${NAO_QTREE_NAME} in ${NAO_VOL_NAME}"|tee -a ${LOG}
          if [ "${NAO_QTREE_EXPORT_POLICY}" = "" ]; then
            NAO_QTREE_EXPORT_POLICY="default"
          fi  # NAO_QTREE_EXPORT_POLICY = "" 
          ${SSH} ${NAO_CLUSTERNAME} "qtree modify -vserver ${NAO_VSERVER_NAME} -qtree-path /vol/${NAO_VOL_NAME}/${NAO_QTREE_NAME} -security-style ${NAO_QTREE_SECURITY_STYLE} -export-policy ${NAO_QTREE_EXPORT_POLICY} -unix-permissions ${NAO_QTREE_UNIX_PERMISSIONS}"
        fi  # SVM_VOL_QTREE

        ${SSH} ${NAO_CLUSTERNAME} "qtree show -vserver ${NAO_VSERVER_NAME} -qtree-path /vol/${NAO_VOL_NAME}/${NAO_QTREE_NAME} -field vserver,volume,qtree,export-policy,security-styleunix-permissions"
      fi  # QTREE}" != ""

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

  fi  # ${FNAME}" != ""

done  # LINE

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

