
#!/bin/sh
# File	: noc_volume_create.sh
# By	: Maarten.deBoer@Atos.net, 230905, 231218
# Subject	: Netapp Ontap Cli script to create volumes based on CSV-file
#(0.2)	: Renamed to nao_ and renamed var's
#(0.3),240103	: Mod. $1, $2
#(0.4),240123	: Mod's & Add NAO_VOL_LANG
#(0.5),240216	: Added QOS
PGM=`basename $0|cut -d\. -f1`
VER="0.5"
LOG="${HOME}/log/${PGM}.log"
SSH="/usr/bin/ssh -n"

DATADIR="${HOME}/data"
CSVDIR="${DATADIR}/csv"

# Policy-filter
FILTER="mss"
CSV="${CSVDIR}/noc_volume-snapmirror-vault_mss.csv"

if [ "${1}" != "" ]; then
  FILTER="${1}"
fi
if [ "${2}" != "" ]; then
  CSV="${2}"
fi

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
echo "  FILTER(1)=${FILTER}"
echo "  CSV(2)=${CSV}"
sleep 2

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}'`
  NAO_VOL_AGGR_NAME=`echo ${LINE}|awk -F\; '{print $4}'`
  NAO_VOL_STOR_CLASS=`echo ${LINE}|awk -F\; '{print $5}'|tr [:upper:] [:lower:]|egrep "gold|silver|bronze"`
  NAO_VOL_SIZE=`echo ${LINE}|awk -F\; '{print $6}'`
  NAO_VOL_SIZE_UNIT=`echo ${LINE}|awk -F\; '{print $7}'|tr [:lower:] [:upper:]|egrep "KB|MB|GB|TB"`
  NAO_VOL_TYPE=`echo ${LINE}|awk -F\; '{print $8}'|tr [:lower:] [:upper:]|sed 's/XDP/DP/g'|egrep "RW|DP" `
  ATOS_CHANGE_NR=`echo ${LINE}|awk -F\; '{print $9}'`
  NAO_VOL_LANG=`echo ${LINE}|awk -F\; '{print $14}'`


# Volume create
  if [ "${NAO_CLUSTERNAME}" != "" ] && [ "${NAO_SVM_NAME}" != "" ] && [ "${NAO_VOL_NAME}" != "" ]; then

# Storage Class / QoS added (for billing purpose)
    QOS_POL_GROUP="${NAO_SVM_NAME}_${NAO_VOL_STOR_CLASS}"
    CHK_QOS_POL_GROUP=`${SSH} ${NAO_CLUSTERNAME} "qos policy-group show -vserver ${NAO_SVM_NAME}"|grep "${QOS_POL_GROUP}"`
    if [ "${CHK_QOS_POL_GROUP}" = "" ]; then
# No QOS_POL_GROUP found, create
      ${SSH} ${NAO_CLUSTERNAME} "qos policy-group create -vserver ${NAO_SVM_NAME} -policy-group ${QOS_POL_GROUP} -max-throughput INF"
    fi  # CHK_QOS_POL_GROUP
    ${SSH} ${NAO_CLUSTERNAME} "qos policy-group show -vserver ${NAO_SVM_NAME} -policy-group ${QOS_POL_GROUP} -field policy-group,vserver,throughput-policy"

# Autosizing
    NAO_MAX_AUTOSIZE=`expr ${NAO_VOL_SIZE} \* 11 / 10`
    NAO_MAX_AUTOSIZE="${NAO_MAX_AUTOSIZE}${NAO_VOL_SIZE_UNIT}"
    echo "    NAO_MAX_AUTOSIZE=${NAO_MAX_AUTOSIZE}"

    echo "  NAO_CLUSTERNAME=${NAO_CLUSTERNAME} NAO_SVM_NAME=${NAO_SVM_NAME} NAO_VOL_NAME=${NAO_VOL_NAME} NAO_VOL_SIZE=${NAO_VOL_SIZE} NAO_VOL_SIZE_UNIT=${NAO_VOL_SIZE_UNIT} "|tee -a ${LOG}

# When no LANGUAGE, then use without
    if [ "${NAO_VOL_LANG}" == "" ]; then
      ${SSH} ${NAO_CLUSTERNAME} "volume create -vserver ${NAO_SVM_NAME} -volume ${NAO_VOL_NAME} -aggregate ${NAO_VOL_AGGR_NAME} -size ${NAO_VOL_SIZE}${NAO_VOL_SIZE_UNIT} -type ${NAO_VOL_TYPE} -qos-policy-group ${NAO_SVM_NAME}_${NAO_VOL_STOR_CLASS} -comment ${ATOS_CHANGE_NR} -min-autosize 5GB -max-autosize ${NAO_MAX_AUTOSIZE} -autosize-mode grow_shrink "
    else
      ${SSH} ${NAO_CLUSTERNAME} "volume create -vserver ${NAO_SVM_NAME} -volume ${NAO_VOL_NAME} -aggregate ${NAO_VOL_AGGR_NAME} -size ${NAO_VOL_SIZE}${NAO_VOL_SIZE_UNIT} -type ${NAO_VOL_TYPE} -qos-policy-group ${NAO_SVM_NAME}_${NAO_VOL_STOR_CLASS} -comment ${ATOS_CHANGE_NR} -min-autosize 5GB -max-autosize ${NAO_MAX_AUTOSIZE} -autosize-mode grow_shrink -language ${NAO_VOL_LANG} "
    fi  # NAO_VOL_LANG}" == ""

    if [ "${NAO_VOL_TYPE}" = "RW" ]; then
      ${SSH} ${NAO_CLUSTERNAME} "volume mount -vserver ${NAO_SVM_NAME} -volume ${NAO_VOL_NAME} -junction-path \"/${NAO_VOL_NAME}\" "
    fi  # RW

    ${SSH} ${NAO_CLUSTERNAME} "volume show -vserver ${NAO_SVM_NAME} -volume ${NAO_VOL_NAME} -field volume,aggregate,size,qos-policy-group,junction-path,type,language"
    sleep 1
  else
    echo "  Not all VAR's has a value."|tee -a ${LOG}
  fi  # !=

done  # LINE

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

