
#!/bin/sh
# File	: netapp_ansible_batch_remove.sh
# By	: Maarten.deBoer@Atos.net, 220124
# Subject	: Script to run several ansible-playbook's
#
PGM=`basename $0|cut -d\. -f1`
VER="0.1"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
RCFILE="${HOME}/etc/${PGM}.rc"
SSH=" /usr/bin/ssh -n" 
CSVFILE="${HOME}/data/${PGM}.csv"
PLAYBOOKS="${HOME}/playbooks"
VERBOSE=""

CLUSTER="tlenlfas3270"
SFILTER="tlenlans01"

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
touch ${TMP}
if [ -f ${RCFILE} ]; then
  echo "  RCFILE (${RCFILE}) found. Reading" |tee -a ${LOG}
  . ${RCFILE}
fi

echo "  Getting list"
# CLUSTER;SVM_NAME;SVM_IP;AGGR_NAME;VOL_NAME;VOL_SIZE;SIZE_UNIT(MB);PROTOCOL;QTREE_NAME;QUOTA_SIZE(MB);EXPORTS; > ${CSVFILE}

${SSH} ${CLUSTER} "set -showseparator \";\" ; vserver show -field vserver"|grep ${SFILTER}|grep -iv vserver| grep ";" | while read LINE
#> ${TMP}
#cat ${TMP}| while read LINE
do
  VSERVER=`echo ${LINE}|awk -F\; '{print $1}'`
  if [ "${VSERVER}" != "" ]; then
#    echo ";${VSERVER};"
    ${SSH} ${CLUSTER} "set -showseparator \";\" ; volume show -vserver ${VSERVER} -field vserver,volume,total,junction-parent"|grep ${VSERVER}| while read LINE2
    do
      VOLUME=`echo ${LINE2}|awk -F\;  '{print $2}'`
      JUNCTION_PATH=`echo ${LINE2}|awk -F\;  '{print $3}'`
      TOTAL_SIZE=`echo ${LINE2}|awk -F\;  '{print $5}'`
      if [ "${JUNCTION_PATH}" != "-" ]; then
        ${SSH} ${CLUSTER} "set -showseparator \";\" ; qtree show -vserver ${VSERVER} -volume ${VOLUME} -field vserver,volume,qtree,export"|grep ${VOLUME}|while read LINE3
        do
          QTREE=`echo ${LINE3}|awk -F\; '{print $3}'`
          EXPORT_POLICY=`echo ${LINE3}|awk -F\; '{print $4}'`

          if [ "${QTREE}" != "\"\"" ]; then
#            QUOTA=`${SSH} ${CLUSTER} "set -showseparator \";\" ; quota report -vserver  ${VSERVER} -volume ${VOLUME} -tree ${QTREE} -field vserver,volume,tree,disk-limit"| grep ${QTREE}|head -1|awk -F\; '{print $5}'`
            QUOTA=`${SSH} ${CLUSTER} "set -showseparator \";\" ; quota policy rule show -vserver ${VSERVER} -volume ${VOLUME} -target ${QTREE} -field vserver,volume,target,disk-limit"| grep ${QTREE}|awk -F\; '{print $7}'`

            if [ "${EXPORT_POLICY}" != "" ]; then
              ${SSH} ${CLUSTER} "set -showseparator \";\";export-policy rule show -vserver ${VSERVER} -policy ${EXPORT_POLICY} -field vserver,policyname,clientmatch"| grep -v "0.0.0.0"|grep ${EXPORT_POLICY}|while read LINE4
              do
                EXPORTS=`echo ${LINE4}|awk -F\; '{print $4}'`

# CLUSTER;SVM_NAME;SVM_IP;AGGR_NAME;VOL_NAME;VOL_SIZE;SIZE_UNIT(MB);PROTOCOL;QTREE_NAME;QUOTA_SIZE(MB);EXPORTS;
                echo "${CLUSTER};${VSERVER};SVM_IP;AGGR_NAME;${VOLUME};${TOTAL_SIZE};NFS;${QTREE};${QUOTA};${EXPORTS};${EXPORT_POLICY}; "|tee -a ${CSVFILE}

              done  # LINE4
            fi  # EXPORT_POLICY}" != ""

          fi  # QTREE

        done  # QTREE

      fi  #  != "-"

    done  # LINE2

  fi  # VSERVER

done  # LINE

if [ -f ${CSVFILE} ]; then
  echo "  Reading ${CSVFILE}"|tee -a ${LOG}
  cat ${CSVFILE}|grep -v "^#"| while read LINE
  do
    echo "  LINE=${LINE}"
# CLUSTER;SVM_NAME;SVM_IP;AGGR_NAME;VOL_NAME;VOL_SIZE;SIZE_UNIT(MB);PROTOCOL;QTREE_NAME;QUOTA_SIZE(MB);EXPORTS;
    CLUSTER=`echo ${LINE}|awk -F\; '{print $1}'`
    SVM_NAME=`echo ${LINE}|awk -F\; '{print $2}'`
    SVM_IP=`echo ${LINE}|awk -F\; '{print $3}'`
    AGGR_NAME=`echo ${LINE}|awk -F\; '{print $4}'`
    VOL_NAME=`echo ${LINE}|awk -F\; '{print $5}'`
    VOL_SIZE=`echo ${LINE}|awk -F\; '{print $6}'`
    VOL_UNIT=`echo ${LINE}|awk -F\; '{print $7}'|tr [:upper:] [:lower:]`
    PROTOCOL=`echo ${LINE}|awk -F\; '{print $8}'`
    QTREE_NAME=`echo ${LINE}|awk -F\; '{print $9}'`
    QUOTA_SIZE=`echo ${LINE}|awk -F\; '{print $10}'`
    EXPORTS=`echo ${LINE}|awk -F\; '{print $11}'`

    EXPORT_POLICY="${PROTOCOL}-`echo ${SVM_NAME}|sed 's/tlenl//g'`"
    EXPORT_MATCH=${EXPORTS}

    echo "  ${CLUSTER}:${SVM_NAME}(${SVM_IP})/(${AGGR_NAME})${VOL_NAME}(${VOL_SIZE}${VOL_UNIT})/${QTREE_NAME}(${QUOTA_SIZE}) : (${EXPORT_POLICY})${EXPORT_MATCH}"|tee -a ${LOG}

#    if [ "${VOL_NAME}" != "" ]; then
#      echo "- Volume (${AGGR_NAME}, ${VOL_NAME}, ${VOL_SIZE}${VOL_UNIT}) :" 
#      ansible-playbook ${PLAYBOOKS}/netapp_volume_create-update.yml ${VERBOSE} -e na_clustername=${CLUSTER} -e na_svm_name=${SVM_NAME} -e na_vol_aggr_name=${AGGR_NAME} -e na_vol_name=${VOL_NAME} -e na_vol_size=${VOL_SIZE} -e na_vol_size_unit=${VOL_UNIT}
#      ${SSH} ${CLUSTER} "volume show -vserver ${SVM_NAME} -volume ${VOL_NAME} -field vserver,volume,total,policy" 
#    fi  # VOLume
#
#    if [ "${EXPORT_POLICY}" != "" ] && [ "${EXPORT_MATCH}" != "" ]; then
#      echo "- NFS export-rule (${EXPORT_POLICY}) ${EXPORT_MATCH} :" 
#      ansible-playbook ${PLAYBOOKS}/netapp_nfs-export_create-update.yml ${VERBOSE} -e na_clustername=${CLUSTER} -e na_svm_name=${SVM_NAME} -e na_export_policy_name=${EXPORT_POLICY} -e na_export_policy_client_match=${EXPORT_MATCH}
#      ${SSH} ${CLUSTER} "export-policy rule show -vserver ${SVM_NAME} -policy ${EXPORT_POLICY}" 
#    fi  # EXPORT_POLICY
#
#    if [ "${QTREE_NAME}" != "" ]; then
#      echo "- Qtree (${QTREE_NAME}) :" 
#      ansible-playbook ${PLAYBOOKS}/netapp_qtree_create-update.yml ${VERBOSE} -e na_clustername=${CLUSTER} -e na_svm_name=${SVM_NAME} -e na_vol_name=${VOL_NAME} -e na_qtree_name=${QTREE_NAME} -e na_qtree_export_policy=${EXPORT_POLICY}
#      ${SSH} ${CLUSTER} "qtree show -vserver ${SVM_NAME} -qtree ${QTREE_NAME} -field vserver,volume,qtree,export" 
#    fi  # QTREE_NAME
#
    if [ "${QTREE_NAME}" != "" ] && [ "${QUOTA_SIZE}" != "" ]; then
      echo "- Quota (${QTREE_NAME} = ${QUOTA_SIZE}):" 
      ansible-playbook ${PLAYBOOKS}/netapp_quota_remove.yml ${VERBOSE} -e na_clustername=${CLUSTER} -e na_svm_name=${SVM_NAME} -e na_vol_name=${VOL_NAME} -e na_qtree_name=${QTREE_NAME}
#      ${SSH} ${CLUSTER} "quota report -vserver ${SVM_NAME} -tree ${QTREE_NAME} " 
    fi  # QUOTA_SIZE


  done  #   LINE
fi  # -f ${CSFVFILE}


#echo "CHECK:" 
#echo "$ sudo mount ${SVM_IP}:/${VOL_NAME}/${QTREE_NAME} /mnt/${QTREE_NAME}" 
#echo "$ df -h /mnt/${QTREE_NAME}" 

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

