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

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

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}'`
    QUOTA_POLICY=`echo ${SVM_NAME}|sed 's/tlenl//g'`
    EXPORTS=`echo ${LINE}|awk -F\; '{print $11}'`

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

    echo "  CLUSTER=${CLUSTER}"
    echo "  SVM_NAME=${SVM_NAME}"
    echo "  SVM_IP=${SVM_IP}"
    echo "  AGGR_NAME=${AGGR_NAME}"
    echo "  VOL_NAME=${VOL_NAME}"
    echo "  VOL_SIZE=${VOL_SIZE}"
    echo "  VOL_UNIT=${VOL_UNIT}"
    echo "  QTREE_NAME=${QTREE_NAME}"
    echo "  QUOTA_SIZE=${QUOTA_SIZE}"
    echo "  EXPORT_POLICY=${EXPORT_POLICY}"
    echo "  EXPORT_MATCH=${EXPORT_MATCH}"
    sleep 1

# Check if SVM exist
    ANSW=`${SSH} ${CLUSTER} "vserver show -vserver ${SVM_NAME} -field vserver"|grep ${SVM_NAME}`    
ANSW=${ANSW}
    if [ "${ANSW}" = "" ]; then
      echo "    VSERVER (${SVM_NAME}) does NOT exist. Need to be created"
      sleep 1

    else

    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 (${SVM_NAME}:/${VOL_NAME}/${QTREE_NAME} = ${QUOTA_SIZE}):" 
      ansible-playbook ${PLAYBOOKS}/netapp_quota_create-update.yml ${VERBOSE} -e na_clustername=${CLUSTER} -e na_svm_name=${SVM_NAME} -e na_quota_policy_name=${QUOTA_POLICY} -e na_vol_name=${VOL_NAME} -e na_qtree_name=${QTREE_NAME} -e na_quota_type="tree" -e na_quota_disk_limit=${QUOTA_SIZE}
      ${SSH} ${CLUSTER} "quota report -vserver ${SVM_NAME} -tree * " 
    fi  # QUOTA_SIZE

    fi  # = SVM

  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}" 

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

