
#!/bin/sh
# File	: noc_snap-mirror-vault_create.sh
# By	: Maarten.deBoer@Atos.net, 230628, 231220
# Subject	: Netapp Ontap Cli script to create SnapMirror/Vails connections from CSV-file
#(0.2),230629	: Mod. CSV, etc
#(0.3),230725	: Mod. CSV-layout (a bit)
#(0.4),230911	: Add LOG, Mod's DATADIR, renamed from cdot_cre_snapmirror.sh, using $1
#(0.5),231220	: Renamed & renamed VARs
#(0.6),230123	: Update
PGM=`basename $0| cut -d\. -f1`
VER="0.6"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
SSH="/bin/ssh -n"
FILTER="mss"

DATADIR="${HOME}/data"
CSV="${DATADIR}/noc_volume-snap-mirror-vault_mss.csv"

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

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-file (${CSV}) found. Exiting ..."|tee -a ${LOG}
  exit 3
fi  # ! CSV

#Check CSV-name & SM_POLICY
CSV_MIRROR=`echo ${CSV}|grep -i mirror|grep -vi vault`
CSV_VAULT=`echo ${CSV}|grep -i vault|grep -vi mirror`

echo "  CSV_MIRROR=${CSV_MIRROR}"
echo "  CSV_VAULT=${CSV_VAULT}"
if [ "${CSV_MIRROR}" = "" ] && [ "${CSV_VAULT}" = "" ]; then
  echo "    NO choice in CSV-filename (${CSV}) for MIRROR  / VAULT . Exiting ..."
  exit 4
fi

# 
# For SnapMirror copies
if [ "${CSV_MIRROR}" != "" ]; then
  SM_POLICY="MirrorAllSnapshots"
fi  #
# For SnapVault relations
if [ "${CSV_VAULT}" != "" ]; then
  SM_POLICY="MirrorAndVault"
fi

echo "  SM_POLICY=${SM_POLICY}"|tee -a ${LOG}
sleep 1

# SnapMirror (xDP) DEST ... SOURC
# 1st part also for 'volume create'
# 2nd part for SnapMirror config
#
# 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);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_TYPE=`echo ${LINE}|awk -F\; '{print $8}'`
  NAO_QTREE_NAME=`echo ${LINE}|awk -F\; '{print $10}'|grep -v "#"`

  NAO_SOURE_CLUSTER=`echo ${LINE}|awk -F\; '{print $15}'`
  NAO_SOURCE_SVM=`echo ${LINE}|awk -F\; '{print $16}'`
  NAO_SOURCE_VOLUME=`echo ${LINE}|awk -F\; '{print $17}'`
  NAO_SOURCE_QTREE=`echo ${LINE}|awk -F\; '{print $18}'|grep -v "#"`

  echo "  DEST: NAO_CLUSTERNAME=${NAO_CLUSTERNAME} NAO_SVM_NAME=${NAO_SVM_NAME} NAO_VOL_NAME=${NAO_VOL_NAME} NAO_QTREE_NAME=${NAO_QTREE_NAME} "
  echo "    NAO_SOURE_CLUSTER=${NAO_SOURE_CLUSTER} NAO_SOURCE_SVM=${NAO_SOURCE_SVM} NAO_SOURCE_VOLUME=${NAO_SOURCE_VOLUME} NAO_SOURCE_QTREE=${NAO_SOURCE_QTREE} "
  echo "      NAO_VOL_TYPE(SM_TYPE)=${NAO_VOL_TYPE} SM_POLICY=${SM_POLICY}"
  sleep 1

  if [ "${NAO_SOURE_CLUSTER}" != "" ] && [ "${NAO_SOURCE_SVM}" != "" ] && [ "${NAO_SOURCE_VOLUME}" != "" ]; then
    echo ""
    ${SSH} ${NAO_CLUSTERNAME} "snapmirror create -source-path ${NAO_SOURCE_SVM}:${NAO_SOURCE_VOLUME} -destination-path ${NAO_SVM_NAME}:${NAO_VOL_NAME} -type ${NAO_VOL_TYPE} -policy ${SM_POLICY}"
    ${SSH} ${NAO_CLUSTERNAME} "snapmirror initialize -destination-path ${NAO_SVM_NAME}:${NAO_VOL_NAME}"
  else
    echo "  Not all var's are known"|tee -a ${LOG}
  fi  # SRC_CLSTR}" != ""  ...

  echo "  SnapMirror show (dest-)vserver/volume :${NAO_SVM_NAME}/${NAO_VOL_NAME}"
  ${SSH} ${NAO_CLUSTERNAME} "snapmirror show -destination-vserver ${NAO_SVM_NAME} -destination-volume ${NAO_VOL_NAME} -field lag,state,unhealthy-reason,last-transfer-error"|tee -a ${LOG}
done  # LINE

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

