
#!/bin/sh
# File	: na-sto-co_make_sap-sids.sh
# By	: Maarten.deBoer@Atos.net, 220928
# Subject	: Script to run Ansible-playbooks for creating a NetApp-storage-container for SAP-SID
# (0.3),230525	: Mod for SAP-AVI deploy, add DORUN
#
PGM=`basename $0|cut -d\. -f1`
VER="0.3"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"

AP_DIR="/home/ansible/GIT_hub-atos-FIN/netapp-ontap-ansible"
VERBOSE="-vvvv"
VERBOSE=""

DORUN_VOL=1
DORUN_VOL=""
# Qtr+Quota
DORUN_QQ=1
DORUN_QQ=""
# NFS-export
# Is NOT working, yet. Adds another entry at the end of the Index
#nlnafsuod02  sid             1       nfs      nlxsapan12nas         sys
#nlnafsuod02  sid             65000   any      0.0.0.0/0             none
#nlnafsuod02  sid             65001   nfs      nlxsapan12nas,        sys
#                                              nlxsapan11nas
#DORUN_NFS_EXP=1
DORUN_NFS_EXP=""

#CSV_FILE="../data/${PGM}.csv"
#CSV_FILE="../data/sap-sids.csv"
CSV_FILE="../data/sap-sids_uod02.csv"

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

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

cat ${CSV_FILE}|grep -v ^#|awk -F\; '{print $1}'|sort -u|while read CLUSTER
do
  echo "  CLUSTER=${CLUSTER}"
  cat ${CSV_FILE}|grep -v ^#|grep ${CLUSTER}|awk -F\; '{print $2}'|sort -u|while read SVM_NAME
  do
    echo "========================================"
    echo "    SVM_NAME=${SVM_NAME}"

    cat ${CSV_FILE}|grep -v ^#|grep ${CLUSTER}|grep ${SVM_NAME}|sort -u|while read LINE1
    do
      echo ""
      echo "----------------------------------------"
#echo "LINE1=${LINE1}"
      VOL_NAME=`echo ${LINE1}|awk -F\; '{print $3}'`
      AGGR_NAME=`echo ${LINE1}|awk -F\; '{print $4}'`
      STOR_CLASS=`echo ${LINE1}|awk -F\; '{print $5}'`
      VOL_SIZE_GB=`echo ${LINE1}|awk -F\; '{print $6}'|grep -i gb|sed 's/gb//g'`
      echo "      VOL_NAME=${VOL_NAME} AGGR_NAME=${AGGR_NAME} STOR_CLASS=${STOR_CLASS} VOL_SIZE_GB=${VOL_SIZE_GB}"
      SIZE_UNIT="gb"

      EC=0
# Volume
      if [ ${DORUN_VOL} ] && [ "${VOL_NAME}" != "" ] && [ "${AGGR_NAME}" != "" ] && [ "${STOR_CLASS}" != "" ] && [ "${VOL_SIZE_GB}" != "" ] ; then
        echo "  Volume"
        ansible-playbook ${VERBOSE} ${AP_DIR}/netapp-ontap_volume_create-update.yml -e nao_clustername=${CLUSTER} -e nao_svm_name=${SVM_NAME} -e nao_vol_name=${VOL_NAME} -e nao_vol_aggr_name=${AGGR_NAME} -e nao_vol_size=${VOL_SIZE_GB} -e nao_vol_size_unit=${SIZE_UNIT} -e nao_vol_stor_class=${STOR_CLASS} 
        EC=${?}
        echo "EXITCODE=${EC}"
      else
        echo "  NOT Volume (DORUN_VOL=${DORUN_VOL} OR one of the VARs is empty)"
        EC=0
        sleep 1
      fi  # DORUN_VOL

      if [ ${EC} -eq 0 ]; then
        QTREE_STR_TMP=""
        cat ${CSV_FILE}|grep -v ^#|grep ${CLUSTER}|grep ${SVM_NAME}|grep ${VOL_NAME}|sort -u|while read LINE2
        do
          QTREE=`echo ${LINE2}|awk -F\; '{print $7}'`
          QUOTA_GB=`echo ${LINE2}|awk -F\; '{print $8}'|grep -i gb|sed 's/gb//g'|sed 's/ //g'`
          EXPORT_POL=`echo ${LINE2}|awk -F\; '{print $9}'`
          EXPORT_ADDR=`echo ${LINE2}|awk -F\; '{print $10}'`

          echo "        QTREE=${QTREE} QUOTA_GB=${QUOTA_GB} EXPORT_POL=${EXPORT_POL} EXPORT_ADDR=${EXPORT_ADDR}"
          echo ""

          QTREE_STR="\"${QTREE}\":{\"nao_quota_disk_limit\":\"${QUOTA_GB}GB\",\"nao_qtree_security_style\":\"unix\",\"nao_export_policy_client_match\":\"${EXPORT_ADDR}\",\"nao_qtree_export_policy\":\"${EXPORT_POL}\"}"

#echo "Creating / Updating a NetApp-storage-container (Volume+Qtree+Quota)"
# ${CLUSTER}:${SVM_NAME}:(${AGGR_NAME}):${VOL_NAME}:${QTREE_STRING}"
#sleep 2

          QTREE_STR_TMP="${QTREE_STR_TMP}${QTREE_STR}"
#echo "QTREE_STR_TMP=${QTREE_STR_TMP}"

# Save when exiting loop
          echo "${QTREE_STR_TMP}" > ${TMP}.qs
# Add , when next loop
          QTREE_STR_TMP="${QTREE_STR_TMP},"

        done  # LINE2

        QTREE_STRING="{`cat ${TMP}.qs`}"
        echo "QTREE_STRING=${QTREE_STRING}"
# Qtree
        if [ ${DORUN_QQ} ]; then
          echo "  Qtree + Quota + NFS-export"
          ansible-playbook ${VERBOSE} ${AP_DIR}/netapp-ontap_qtree_create-update-loop.yml -e nao_clustername=${CLUSTER} -e nao_svm_name=${SVM_NAME} -e nao_vol_name=${VOL_NAME} -e nao_qtree_string=${QTREE_STRING}

# Quota
          ansible-playbook ${VERBOSE} ${AP_DIR}/netapp-ontap_quota_create-update-loop.yml -e nao_clustername=${CLUSTER} -e nao_svm_name=${SVM_NAME} -e nao_vol_name=${VOL_NAME} -e nao_qtree_string=${QTREE_STRING}
        else
          echo "  NOT Qtree + Quota"
        fi  # DORUN_QQ
# NFS-export
        if [ ${DORUN_NFS_EXP} ]; then
          ansible-playbook ${VERBOSE} ${AP_DIR}/_netapp-ontap_export_create-update-loop.yml  -e nao_clustername=${CLUSTER} -e nao_svm_name=${SVM_NAME} -e nao_vol_name=${VOL_NAME} -e nao_qtree_string=${QTREE_STRING}
        else
          echo "  NOT NFS-export"
        fi  # DORUN_NFS_EXP

      fi  # EC

    done  # LINE1
  done  # SVM
done  # read CLUSTER


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

