
#!/bin/sh
# File	: netapp-automation-menu.sh
# By	: Maarten.deBoer@Atos.net, 230329
# Subject	: Script a (kind) menu for Automation, based on NetApp+Ansible, of NetApp-ONTAP-systems
#(0.2),230330	: Added SVM
PGM=`basename $0|cut -d\. -f1`
VER="0.2"
LOG="${HOME}/log/${PGM}.log"
RCFILE="${HOME}/etc/${PGM}.rc"
SSH="/usr/bin/ssh -n"
HOSTNAME=`hostname |cut -d\. -f1`

# Defaults
NAO_CLUSTERNAME="tlenlfas9999"
NAO_SVM_NAME="tlenltnl99"
NAO_VOL_NAME="tnl99_vol99999"
NAO_VOL_AGGR_NAME="n01a9999"
NAO_VOL_STOR_CLASS="iron"
NAO_VOL_SIZE_UNIT="kb"
NAO_VOL_SIZE="9"
#SVM_PREFIX_NAME="nlnafs" 
SVM_PREFIX_NAME="tlenl" 
VOL_SUFFIX="vol09001"
#NAO_QTREE_STRING='{"ansible1":{"nao_quota_disk_limit":"1GB","nao_qtree_security_style":"unix"},"ansible2":{"nao_quota_disk_limit":"2GB","nao_qtree_security_style":"ntfs"},"ansible3":{"nao_quota_disk_limit":"3GB","nao_qtree_security_style":"mixed"}}'
NAO_QTREE_STRING={"ansible1":{"nao_quota_disk_limit":"1GB","nao_qtree_security_style":"unix"},"ansible2":{"nao_quota_disk_limit":"2GB","nao_qtree_security_style":"ntfs"},"ansible3":{"nao_quota_disk_limit":"3GB","nao_qtree_security_style":"mixed"}}

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

if [ -f ${RCFILE} ]; then
  echo "  Found RCFILE (${RCFILE}). Using it ..."
  . ${RCFILE}
fi

# MENU
CHOICE=9999999999999999
# When 1st param at script use it as CHOICE
if [ "${1}" != "" ]; then
  INPUT=${1}
fi
until [ ${CHOICE} -eq 0 ];
do
  echo "====================================================================="
  echo "NetApp ONTAP (Ansible Automation) Menu @${HOSTNAME}:"
  echo " 1 : Create Ansible user at NetApp-cluster"
#  echo "( 11 : Create Aggregate at NetApp-cluster"
  echo "16 : Create SVM (vserver) at NetApp-cluster"
  echo "( 18 : Join a (SMB/CIFS-)domain to SVM (vserver) at NetApp-cluster"
  echo "19 : Remove SVM (vserver) at NetApp-cluster"
  echo "21 : Create VOLUME at NetApp-cluster"
  echo "27 : Offlining VOLUME at NetApp-cluster"
  echo "28 : Removing (without offline-ing) VOLUME at NetApp-cluster"
  echo "31 : Create QTREE at NetApp-cluster"
  echo "32 : Create QUOTA at NetApp-cluster"
  echo "41 : Create NFS-EXPORT"
  echo "( 46 : Create SMB/CIFS-share"
  echo "( 51 : Create LUN at NetApp-cluster"
  echo "( 61 : Create SnapShot (Local backup) at NetApp-cluster"
  echo "( 63 : Create SnapVault (Remote backup) at NetApp-cluster"
  echo "( 67 : Create SnapMirror (DR) at NetApp-cluster"
  echo "90 : Show Cluster (via SSH-CLI)"
  echo "91 : Show SVMs (vservers) on a Cluster (via SSH-CLI)"
  echo "92 : Show Volume(s) on a Cluster & SVM (vserver) (via SSH-CLI)"
  echo "93 : Show Qtree(s) on a Cluster & SVM (vserver) (via SSH-CLI)"
  echo "94 : Show Quota(s) on a Cluster & SVM (vserver) (via SSH-CLI)"
  echo "95 : Show NFS-export(s) on a Cluster & SVM (vserver) (via SSH-CLI)"
  echo " 0 : Exit"
  if [ "${INPUT}" = "" ]; then
    echo -n "Choice: "
    read INPUT
  fi
  CHOICE=`echo ${INPUT}|grep "^[0-9]"`

  echo "  Choice=${CHOICE} "
  case ${CHOICE} in
    0) echo "  Exiting ..." ;;
    1) echo "  Create Ansible user at NetApp-cluster"
       echo -n "    Clustername (${NAO_CLUSTERNAME}):"
       read INPUT
       if [ "${INPUT}" != "" ]; then
         NAO_CLUSTERNAME=`echo ${INPUT}|grep "[a-z]*$"`
       fi  # INPUT}" != ""
       echo -n "      Creating user ansible at ${NAO_CLUSTERNAME} [y|N] ?" 
       read INPUT
       if [ "${INPUT}" == "y" ]; then
         ansible-playbook netapp-ontap_user_ansible_create.yml -e nao_clustername="${NAO_CLUSTERNAME}"
       fi  # y
        INPUT=""
      ;;

    16) echo "  Create SVM (vserver) at NetApp-cluster"
# Check var with reg-expr, Until valid. Then to next Question
        INPUT=" "
# When 2nd param, use this as NAO_CLUSTERNAME
        if [ "${2}" != "" ]; then
          NAO_CLUSTERNAME="${2}"
          INPUT=""
        fi
        until [ "${INPUT}" = "" ] && [ "${NAO_CLUSTERNAME}" != "" ]; do
          echo -n "    Clustername (${NAO_CLUSTERNAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_CLUSTERNAME=`echo ${INPUT}|grep "[a-z]*$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until
        INPUT=" "
        until [ "${INPUT}" = "" ] && [ "${NAO_SVM_NAME}" != "" ]; do
          echo -n "    SVM (vserver)name [tlenl<aaa><00>] (${NAO_SVM_NAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_SVM_NAME=`echo ${INPUT}|grep "[a-z]*[0-9]$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until
        INPUT=" "
        until [ "${INPUT}" = "" ] && [ "${NAO_SVM_ADDRESS}" != "" ]; do
          echo -n "    SVM (vserver)address [www.xxx.yyy.zzz] (${NAO_SVM_ADDRESS}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_SVM_ADDRESS=`echo ${INPUT}|grep "[0-9.]"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

SVM_SUFFIX_NAME=`echo ${NAO_SVM_NAME}|sed "s/${SVM_PREFIX_NAME}//g"`
#
NAO_SVM_ROOT_VOLUME="${SVM_SUFFIX_NAME}_vol0root"
NAO_SVM_ROOT_VOLUME_AGGREGATE="${NAO_VOL_AGGR_NAME}"
NAO_SVM_INTERFACE_NAME="${SVM_SUFFIX_NAME}"
NAO_SVM_HOME_NODE="${NAO_CLUSTERNAME}-02"

#NAO_IPSPACE="${SVM_SUFFIX_NAME}-ipspace"

#NAO_SVM_ADDRESS="10.90.32.55"
#NAO_SVM_NETMASK="255.255.255.0"
#NAO_SVM_HOME_PORT="a300a-2"
#NAO_SVM_GATEWAY="10.90.32.1"

echo "NAO_SVM_ROOT_VOLUME=${NAO_SVM_ROOT_VOLUME}"
echo "NAO_SVM_ROOT_VOLUME_AGGREGATE=${NAO_SVM_ROOT_VOLUME_AGGREGATE}"
echo "NAO_SVM_INTERFACE_NAME=${NAO_SVM_INTERFACE_NAME}"
echo "NAO_SVM_ADDRESS=${NAO_SVM_ADDRESS}"
echo "NAO_SVM_NETMASK=${NAO_SVM_NETMASK}"
echo "NAO_SVM_HOME_NODE=${NAO_SVM_HOME_NODE}"
echo "NAO_SVM_HOME_PORT=${NAO_SVM_HOME_PORT}"
echo "NAO_SVM_GATEWAY=${NAO_SVM_GATEWAY}"
echo "NAO_IPSPACE=${NAO_IPSPACE} "

       echo -n "      Creating SVM (vserver) ${NAO_CLUSTERNAME}:${NAO_SVM_NAME} [y|N] ? " 
       read INPUT
       if [ "${INPUT}" == "y" ]; then
         ansible-playbook netapp-ontap_svm_create-update.yml -e nao_clustername="${NAO_CLUSTERNAME}" -e nao_svm_name="${NAO_SVM_NAME}" -e nao_svm_root_volume="${NAO_SVM_ROOT_VOLUME}" -e nao_svm_root_volume_aggregate="${NAO_SVM_ROOT_VOLUME_AGGREGATE}" -e nao_svm_interface_name="${NAO_SVM_INTERFACE_NAME}" -e nao_svm_address="${NAO_SVM_ADDRESS}" -e nao_svm_netmask="${NAO_SVM_NETMASK}" -e nao_svm_home_node="${NAO_SVM_HOME_NODE}" -e nao_svm_home_port="${NAO_SVM_HOME_PORT}" -e nao_svm_gateway="${NAO_SVM_GATEWAY}" -e nao_ipspace="${NAO_IPSPACE}"

         INPUT=91
       fi  # y
       ;;


    19) echo "  Remove SVM (vserver) at NetApp-cluster"
# Check var with reg-expr, Until valid. Then to next Question
        INPUT=" "
# When 2nd param, use this as NAO_CLUSTERNAME
        if [ "${2}" != "" ]; then
          NAO_CLUSTERNAME="${2}"
          INPUT=""
        fi
        until [ "${INPUT}" = "" ] && [ "${NAO_CLUSTERNAME}" != "" ]; do
          echo -n "    Clustername (${NAO_CLUSTERNAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_CLUSTERNAME=`echo ${INPUT}|grep "[a-z]*$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        INPUT=" "
        until [ "${INPUT}" = "" ] && [ "${NAO_SVM_NAME}" != "" ]; do
          echo -n "    SVM (vserver)name [tlenl<aaa><00>] (${NAO_SVM_NAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_SVM_NAME=`echo ${INPUT}|grep "[a-z]*[0-9]$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until


#SVM_PREFIX_NAME="nlnafs" 
SVM_PREFIX_NAME="tlenl" 
SVM_SUFFIX_NAME=`echo ${NAO_SVM_NAME}|sed "s/${SVM_PREFIX_NAME}//g"`
#
NAO_SVM_ROOT_VOLUME="${SVM_SUFFIX_NAME}_vol0root"
NAO_SVM_INTERFACE_NAME="${SVM_SUFFIX_NAME}"

echo "NAO_SVM_ROOT_VOLUME=${NAO_SVM_ROOT_VOLUME}"
echo "NAO_SVM_INTERFACE_NAME=${NAO_SVM_INTERFACE_NAME}"

       echo -n "      Removing SVM (vserver) ${NAO_CLUSTERNAME}:${NAO_SVM_NAME} [y|N] ? " 
       read INPUT
       if [ "${INPUT}" == "y" ]; then
         ansible-playbook netapp-ontap_svm_remove.yml -e nao_clustername="${NAO_CLUSTERNAME}" -e nao_svm_name="${NAO_SVM_NAME}" -e nao_svm_root_volume="${NAO_SVM_ROOT_VOLUME}" -e nao_svm_interface_name="${NAO_SVM_INTERFACE_NAME}"

#         - nao_clustername
#        - nao_svm_name
#        - nao_svm_root_volume
#        - nao_svm_interface_name

       fi  # y
        INPUT=""
      ;;

    21) echo "  Create Volume at NetApp-cluster"
# Check var with reg-expr, Until valid. Then to next Question
        INPUT=" "
# When 2nd param, use this as NAO_CLUSTERNAME
        if [ "${2}" != "" ]; then
          NAO_CLUSTERNAME="${2}"
          INPUT=""
        fi
        until [ "${INPUT}" = "" ] && [ "${NAO_CLUSTERNAME}" != "" ]; do
          echo -n "    Clustername (${NAO_CLUSTERNAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_CLUSTERNAME=`echo ${INPUT}|grep "[a-z]*$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        INPUT=" "
        until [ "${INPUT}" = "" ] && [ "${NAO_SVM_NAME}" != "" ]; do
          echo -n "    SVM (vserver)name [tlenl<aaa><00>] (${NAO_SVM_NAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_SVM_NAME=`echo ${INPUT}|grep "[a-z]*[0-9]$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        SVM_SUFFIX_NAME=`echo ${NAO_SVM_NAME}|sed "s/${SVM_PREFIX_NAME}//g"`
        NAO_VOL_NAME="${SVM_SUFFIX_NAME}_${VOL_SUFFIX}"
        INPUT=" "
        until [ "${INPUT}" = "" ] && [ "${NAO_VOL_NAME}" != "" ]; do
          echo -n "    Volume suffix-name [${SVM_PREFIX_NAME}_vol<00000>] (${VOL_SUFFIX}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
#            NAO_VOL_NAME=`echo ${INPUT}|grep "[a-z][a-z][a-z][0-9][0-9]_vol[0-9][0-9][0-9][0-9][0-9]"`
            VOL_SUFFIX=`echo ${INPUT}|grep "vol[0-9][0-9][0-9][0-9][0-9]"`
            NAO_VOL_NAME="${SVM_SUFFIX_NAME}_${VOL_SUFFIX}"
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        INPUT=" "
        until [ "${INPUT}" = "" ] && [ "${NAO_VOL_AGGR_NAME}" != "" ]; do
          echo -n "    Aggregatename [n<00>a<0000>] (${NAO_VOL_AGGR_NAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_VOL_AGGR_NAME=`echo ${INPUT}|grep "n[0-9][0-9]a[0-9][0-9][0-9][0-9]"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        INPUT=" "
        until [ "${INPUT}" = "" ] && [ "${NAO_VOL_STOR_CLASS}" != "" ]; do
          echo -n "    Storage class [bronze|silver|gold|platinum] (${NAO_VOL_STOR_CLASS}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_VOL_STOR_CLASS=`echo ${INPUT}|egrep "bronze|silver|gold|platinum"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        INPUT=" "
        until [ "${INPUT}" = "" ] && [ "${NAO_VOL_SIZE_UNIT}" != "" ]; do
          echo -n "    Volume size unit [gb|mb] (${NAO_VOL_SIZE_UNIT}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_VOL_SIZE_UNIT=`echo ${INPUT}|egrep "gb|mb"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        INPUT=" "
        until [ "${INPUT}" = "" ] && [ "${NAO_VOL_SIZE}" != "" ]; do
          echo -n "    Volume size [in ${NAO_VOL_SIZE_UNIT}] (${NAO_VOL_SIZE}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_VOL_SIZE=`echo ${INPUT}|grep "^[0-9]*"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

       echo -n "      Creating volume ${NAO_CLUSTERNAME}:${NAO_SVM_NAME}:${NAO_VOL_NAME} of ${NAO_VOL_SIZE} ${NAO_VOL_SIZE_UNIT} [y|N] ? " 
       read INPUT
       if [ "${INPUT}" == "y" ]; then
         ansible-playbook netapp-ontap_volume_create-update.yml -e nao_clustername="${NAO_CLUSTERNAME}" -e nao_svm_name="${NAO_SVM_NAME}" -e nao_vol_name="${NAO_VOL_NAME}" -e nao_vol_aggr_name="${NAO_VOL_AGGR_NAME}" -e nao_vol_stor_class="${NAO_VOL_STOR_CLASS}" -e nao_vol_size="${NAO_VOL_SIZE}" -e nao_vol_size_unit="${NAO_VOL_SIZE_UNIT}"
         INPUT=31
       else
         INPUT=""
       fi  # y
       ;;

    27) echo "  Offlining Volume at NetApp-cluster"
# Check var with reg-expr, Until valid. Then to next Question
        INPUT=" "
# When 2nd param, use this as NAO_CLUSTERNAME
        if [ "${2}" != "" ]; then
          NAO_CLUSTERNAME="${2}"
          INPUT=""
        fi
        until [ "${INPUT}" = "" ] && [ "${NAO_CLUSTERNAME}" != "" ]; do
          echo -n "    Clustername (${NAO_CLUSTERNAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_CLUSTERNAME=`echo ${INPUT}|grep "[a-z]*$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        INPUT=" "
        until [ "${INPUT}" = "" ] && [ "${NAO_SVM_NAME}" != "" ]; do
          echo -n "    SVM (vserver)name [tlenl<aaa><00>] (${NAO_SVM_NAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_SVM_NAME=`echo ${INPUT}|grep "[a-z]*[0-9]$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        INPUT=" "
        until [ "${INPUT}" = "" ] && [ "${NAO_VOL_NAME}" != "" ]; do
          echo -n "    Volumename [<svm-part>_vol<00000>] (${NAO_VOL_NAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_VOL_NAME=`echo ${INPUT}|grep "[a-z][a-z][a-z][0-9][0-9]_vol[0-9][0-9][0-9][0-9][0-9]"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        INPUT=" "
        until [ "${INPUT}" = "" ] && [ "${NAO_VOL_AGGR_NAME}" != "" ]; do
          echo -n "    Aggregatename [n<00>a<0000>] (${NAO_VOL_AGGR_NAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_VOL_AGGR_NAME=`echo ${INPUT}|grep "n[0-9][0-9]a[0-9][0-9][0-9][0-9]"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        echo -n "      Offlining volume ${NAO_CLUSTERNAME}:${NAO_SVM_NAME}:${NAO_VOL_NAME} (${NAO_VOL_AGGR_NAME}) [y|N] ? " 
        read INPUT
        if [ "${INPUT}" == "y" ]; then
          ansible-playbook netapp-ontap_volume_offline.yml -e nao_clustername="${NAO_CLUSTERNAME}" -e nao_svm_name="${NAO_SVM_NAME}" -e nao_vol_name="${NAO_VOL_NAME}" -e nao_aggr_name="${NAO_VOL_AGGR_NAME}"
        fi  # y
        INPUT=""
        ;;

    28) echo "  Deleting Volume at NetApp-cluster"
# Check var with reg-expr, Until valid. Then to next Question
        INPUT=" "
# When 2nd param, use this as NAO_CLUSTERNAME
        if [ "${2}" != "" ]; then
          NAO_CLUSTERNAME="${2}"
          INPUT=""
        fi
        until [ "${INPUT}" = "" ] && [ "${NAO_CLUSTERNAME}" != "" ]; do
          echo -n "    Clustername (${NAO_CLUSTERNAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_CLUSTERNAME=`echo ${INPUT}|grep "[a-z]*$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        INPUT=" "
        until [ "${INPUT}" = "" ] && [ "${NAO_SVM_NAME}" != "" ]; do
          echo -n "    SVM (vserver)name [tlenl<aaa><00>] (${NAO_SVM_NAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_SVM_NAME=`echo ${INPUT}|grep "[a-z]*[0-9]$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        SVM_SUFFIX_NAME=`echo ${NAO_SVM_NAME}|sed "s/${SVM_PREFIX_NAME}//g"`
        NAO_VOL_NAME="${SVM_SUFFIX_NAME}_${VOL_SUFFIX}"
        INPUT=" "
        until [ "${INPUT}" = "" ] && [ "${NAO_VOL_NAME}" != "" ]; do
          echo -n "    Volume suffix-name [${SVM_PREFIX_NAME}_vol<00000>] (${VOL_SUFFIX}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
#            NAO_VOL_NAME=`echo ${INPUT}|grep "[a-z][a-z][a-z][0-9][0-9]_vol[0-9][0-9][0-9][0-9][0-9]"`
            VOL_SUFFIX=`echo ${INPUT}|grep "vol[0-9][0-9][0-9][0-9][0-9]"`
            NAO_VOL_NAME="${SVM_SUFFIX_NAME}_${VOL_SUFFIX}"
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        INPUT=" "
        until [ "${INPUT}" = "" ] && [ "${NAO_VOL_AGGR_NAME}" != "" ]; do
          echo -n "    Aggregatename [n<00>a<0000>] (${NAO_VOL_AGGR_NAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_VOL_AGGR_NAME=`echo ${INPUT}|grep "n[0-9][0-9]a[0-9][0-9][0-9][0-9]"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        echo -n "      Removing (when offline) volume ${NAO_CLUSTERNAME}:${NAO_SVM_NAME}:${NAO_VOL_NAME} (${NAO_VOL_AGGR_NAME}) [y|N] ? " 
        read INPUT
        if [ "${INPUT}" == "y" ]; then
          ansible-playbook netapp-ontap_volume_remove.yml -e nao_clustername="${NAO_CLUSTERNAME}" -e nao_svm_name="${NAO_SVM_NAME}" -e nao_vol_name="${NAO_VOL_NAME}" 
#-e nao_aggr_name="${NAO_VOL_AGGR_NAME}"
          INPUT=92
        else
          INPUT=""
        fi  # y
        ;;

    31) echo "  Create QTREE at NetApp-cluster"
# Check var with reg-expr, Until valid. Then to next Question
        INPUT=" "
# When 2nd param, use this as NAO_CLUSTERNAME
        if [ "${2}" != "" ]; then
          NAO_CLUSTERNAME="${2}"
          INPUT=""
        fi
        until [ "${INPUT}" = "" ] && [ "${NAO_CLUSTERNAME}" != "" ]; do
          echo -n "    Clustername (${NAO_CLUSTERNAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_CLUSTERNAME=`echo ${INPUT}|grep "[a-z]*$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until
        INPUT=" "
# When 3rd param, use this as NAO_SVM_NAME
        if [ "${3}" != "" ]; then
          NAO_SVM_NAME="${3}"
          INPUT=""
        fi
        until [ "${INPUT}" = "" ] && [ "${NAO_SVM_NAME}" != "" ]; do
          echo -n "    SVM (vserver)name [tlenl<aaa><00>] (${NAO_SVM_NAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_SVM_NAME=`echo ${INPUT}|grep "[a-z]*[0-9]$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        SVM_SUFFIX_NAME=`echo ${NAO_SVM_NAME}|sed "s/${SVM_PREFIX_NAME}//g"`
        NAO_VOL_NAME="${SVM_SUFFIX_NAME}_${VOL_SUFFIX}"
        INPUT=" "
        until [ "${INPUT}" = "" ] && [ "${NAO_VOL_NAME}" != "" ]; do
          echo -n "    Volume suffix-name [${SVM_PREFIX_NAME}_vol<00000>] (${VOL_SUFFIX}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
#            NAO_VOL_NAME=`echo ${INPUT}|grep "[a-z][a-z][a-z][0-9][0-9]_vol[0-9][0-9][0-9][0-9][0-9]"`
            VOL_SUFFIX=`echo ${INPUT}|grep "vol[0-9][0-9][0-9][0-9][0-9]"`
            NAO_VOL_NAME="${SVM_SUFFIX_NAME}_${VOL_SUFFIX}"
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

#        NAO_QTREE_STRING='{"ansible1":{"nao_quota_disk_limit":"1GB","nao_qtree_security_style":"unix"},"ansible2":{"nao_quota_disk_limit":"2GB","nao_qtree_security_style":"ntfs"},"ansible3":{"nao_quota_disk_limit":"3GB","nao_qtree_security_style":"mixed"}}'

        echo "NAO_QTREE_STRING=${NAO_QTREE_STRING}"

        echo -n "      Creating Qtree(s) ${NAO_CLUSTERNAME}:${NAO_SVM_NAME}:${NAO_VOL_NAME}  [y|N] ? " 
        read INPUT
        if [ "${INPUT}" == "y" ]; then
          ansible-playbook netapp-ontap_qtree_create-update-loop.yml -e nao_clustername="${NAO_CLUSTERNAME}" -e nao_svm_name="${NAO_SVM_NAME}" -e nao_vol_name="${NAO_VOL_NAME}" -e nao_qtree_string=${NAO_QTREE_STRING}
          INPUT=93
        else
          INPUT=""
        fi  # y
        ;;


    32) echo "  Create QUOTA at NetApp-cluster"
# Check var with reg-expr, Until valid. Then to next Question
        INPUT=" "
# When 2nd param, use this as NAO_CLUSTERNAME
        if [ "${2}" != "" ]; then
          NAO_CLUSTERNAME="${2}"
          INPUT=""
        fi
        until [ "${INPUT}" = "" ] && [ "${NAO_CLUSTERNAME}" != "" ]; do
          echo -n "    Clustername (${NAO_CLUSTERNAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_CLUSTERNAME=`echo ${INPUT}|grep "[a-z]*$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until
        INPUT=" "
# When 3rd param, use this as NAO_SVM_NAME
        if [ "${3}" != "" ]; then
          NAO_SVM_NAME="${3}"
          INPUT=""
        fi
        until [ "${INPUT}" = "" ] && [ "${NAO_SVM_NAME}" != "" ]; do
          echo -n "    SVM (vserver)name [tlenl<aaa><00>] (${NAO_SVM_NAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_SVM_NAME=`echo ${INPUT}|grep "[a-z]*[0-9]$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        SVM_SUFFIX_NAME=`echo ${NAO_SVM_NAME}|sed "s/${SVM_PREFIX_NAME}//g"`
        NAO_VOL_NAME="${SVM_SUFFIX_NAME}_${VOL_SUFFIX}"
        INPUT=" "
        until [ "${INPUT}" = "" ] && [ "${NAO_VOL_NAME}" != "" ]; do
          echo -n "    Volume suffix-name [${SVM_PREFIX_NAME}_vol<00000>] (${VOL_SUFFIX}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
#            NAO_VOL_NAME=`echo ${INPUT}|grep "[a-z][a-z][a-z][0-9][0-9]_vol[0-9][0-9][0-9][0-9][0-9]"`
            VOL_SUFFIX=`echo ${INPUT}|grep "vol[0-9][0-9][0-9][0-9][0-9]"`
            NAO_VOL_NAME="${SVM_SUFFIX_NAME}_${VOL_SUFFIX}"
            INPUT=""
          fi  # INPUT}" != ""
        done  # until


        echo "NAO_QTREE_STRING=${NAO_QTREE_STRING}"

        echo -n "      Creating QUOTA(s) ${NAO_CLUSTERNAME}:${NAO_SVM_NAME}:${NAO_VOL_NAME}  [y|N] ? " 
        read INPUT
        if [ "${INPUT}" == "y" ]; then
          ansible-playbook netapp-ontap_quota_create-update-loop.yml -e nao_clustername="${NAO_CLUSTERNAME}" -e nao_svm_name="${NAO_SVM_NAME}" -e nao_vol_name="${NAO_VOL_NAME}" -e nao_qtree_string=${NAO_QTREE_STRING}
          INPUT=94
        else
          INPUT=""
        fi  # y
        ;;




    41) echo "  Create NFS-exports at NetApp-cluster"
# Check var with reg-expr, Until valid. Then to next Question
        INPUT=" "
# When 2nd param, use this as NAO_CLUSTERNAME
        if [ "${2}" != "" ]; then
          NAO_CLUSTERNAME="${2}"
          INPUT=""
        fi
        until [ "${INPUT}" = "" ] && [ "${NAO_CLUSTERNAME}" != "" ]; do
          echo -n "    Clustername (${NAO_CLUSTERNAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_CLUSTERNAME=`echo ${INPUT}|grep "[a-z]*$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until
        INPUT=" "
# When 3rd param, use this as NAO_SVM_NAME
        if [ "${3}" != "" ]; then
          NAO_SVM_NAME="${3}"
          INPUT=""
        fi
        until [ "${INPUT}" = "" ] && [ "${NAO_SVM_NAME}" != "" ]; do
          echo -n "    SVM (vserver)name [tlenl<aaa><00>] (${NAO_SVM_NAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_SVM_NAME=`echo ${INPUT}|grep "[a-z]*[0-9]$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        SVM_SUFFIX_NAME=`echo ${NAO_SVM_NAME}|sed "s/${SVM_PREFIX_NAME}//g"`
        NAO_VOL_NAME="${SVM_SUFFIX_NAME}_${VOL_SUFFIX}"
        INPUT=" "
        until [ "${INPUT}" = "" ] && [ "${NAO_VOL_NAME}" != "" ]; do
          echo -n "    Volume suffix-name [${SVM_PREFIX_NAME}_vol<00000>] (${VOL_SUFFIX}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
#            NAO_VOL_NAME=`echo ${INPUT}|grep "[a-z][a-z][a-z][0-9][0-9]_vol[0-9][0-9][0-9][0-9][0-9]"`
            VOL_SUFFIX=`echo ${INPUT}|grep "vol[0-9][0-9][0-9][0-9][0-9]"`
            NAO_VOL_NAME="${SVM_SUFFIX_NAME}_${VOL_SUFFIX}"
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        echo "NAO_QTREE_STRING=${NAO_QTREE_STRING}"

        echo -n "      Creating QUOTA(s) ${NAO_CLUSTERNAME}:${NAO_SVM_NAME}:${NAO_VOL_NAME}  [y|N] ? " 
        read INPUT
        if [ "${INPUT}" == "y" ]; then
          ansible-playbook _netapp-ontap_export_create-update-loop.yml -e nao_clustername="${NAO_CLUSTERNAME}" -e nao_svm_name="${NAO_SVM_NAME}" -e nao_vol_name="${NAO_VOL_NAME}" -e nao_qtree_string=${NAO_QTREE_STRING}
          INPUT=95
        else
          INPUT=""
        fi  # y
        ;;






    90) echo "  Show Cluster (via SSH-CLI)"
# Check var with reg-expr, Until valid. Then to next Question
        INPUT=" "
# When 2nd param, use this as NAO_CLUSTERNAME
        if [ "${2}" != "" ]; then
          NAO_CLUSTERNAME="${2}"
          INPUT=""
        fi
        until [ "${INPUT}" = "" ] && [ "${NAO_CLUSTERNAME}" != "" ]; do
          echo -n "    Clustername (${NAO_CLUSTERNAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_CLUSTERNAME=`echo ${INPUT}|grep "[a-z]*$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until
        ${SSH} ${NAO_CLUSTERNAME} "cluster show"
        echo "[ENTER]"
        read INPUT
        ;;

    91) echo "  Show SVMs (vservers) on a Cluster (via SSH-CLI)"
# Check var with reg-expr, Until valid. Then to next Question
        INPUT=" "
# When 2nd param, use this as NAO_CLUSTERNAME
        if [ "${2}" != "" ]; then
          NAO_CLUSTERNAME="${2}"
          INPUT=""
        fi
        until [ "${INPUT}" = "" ] && [ "${NAO_CLUSTERNAME}" != "" ]; do
          echo -n "    Clustername (${NAO_CLUSTERNAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_CLUSTERNAME=`echo ${INPUT}|grep "[a-z]*$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until
        ${SSH} ${NAO_CLUSTERNAME} "vserver show -field vserver,type,operational-state,aggregate,rootvolume"
        ${SSH} ${NAO_CLUSTERNAME} "network interface show -field vserver, lif,address,curr-node,curr-port"
        echo "[ENTER]"
        read INPUT
        ;;


    92) echo "  Show Volumes on a Cluster & SVM (vserver) (via SSH-CLI)"
# Check var with reg-expr, Until valid. Then to next Question
        INPUT=" "
# When 2nd param, use this as NAO_CLUSTERNAME
        if [ "${2}" != "" ]; then
          NAO_CLUSTERNAME="${2}"
          INPUT=""
        fi
        until [ "${INPUT}" = "" ] && [ "${NAO_CLUSTERNAME}" != "" ]; do
          echo -n "    Clustername (${NAO_CLUSTERNAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_CLUSTERNAME=`echo ${INPUT}|grep "[a-z]*$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        INPUT=" "
# When 3rd param, use this as NAO_SVM_NAME
        if [ "${3}" != "" ]; then
          NAO_SVM_NAME="${3}"
          INPUT=""
        fi
        until [ "${INPUT}" = "" ] && [ "${NAO_SVM_NAME}" != "" ]; do
          echo -n "    SVM (vserver)name [tlenl<aaa><00>] (${NAO_SVM_NAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_SVM_NAME=`echo ${INPUT}|grep "[a-z]*[0-9]$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        ${SSH} ${NAO_CLUSTERNAME} "volume show -vserver \"${NAO_SVM_NAME}\" -field vserver,volume,aggregate,qos-policy-group,state,total,type,create-time,policy"
        echo "[ENTER]"
        read INPUT
        ;;

    93) echo "  Show Qtree(s) + Volume(s) on a Cluster & SVM (vserver) (via SSH-CLI)"
# Check var with reg-expr, Until valid. Then to next Question
        INPUT=" "
# When 2nd param, use this as NAO_CLUSTERNAME
        if [ "${2}" != "" ]; then
          NAO_CLUSTERNAME="${2}"
          INPUT=""
        fi
        until [ "${INPUT}" = "" ] && [ "${NAO_CLUSTERNAME}" != "" ]; do
          echo -n "    Clustername (${NAO_CLUSTERNAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_CLUSTERNAME=`echo ${INPUT}|grep "[a-z]*$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until
        INPUT=" "
# When 3rd param, use this as NAO_SVM_NAME
        if [ "${3}" != "" ]; then
          NAO_SVM_NAME="${3}"
          INPUT=""
        fi
        until [ "${INPUT}" = "" ] && [ "${NAO_SVM_NAME}" != "" ]; do
          echo -n "    SVM (vserver)name [tlenl<aaa><00>] (${NAO_SVM_NAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_SVM_NAME=`echo ${INPUT}|grep "[a-z]*[0-9]$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        ${SSH} ${NAO_CLUSTERNAME} "qtree show -vserver \"${NAO_SVM_NAME}\" -field vserver,volume,qtree,export,security-style"
        echo "[ENTER]"
        read INPUT
        ;;

    94) echo "  Show Quota(s) + Volume(s) on a Cluster & SVM (vserver) (via SSH-CLI)"
# Check var with reg-expr, Until valid. Then to next Question
        INPUT=" "
# When 2nd param, use this as NAO_CLUSTERNAME
        if [ "${2}" != "" ]; then
          NAO_CLUSTERNAME="${2}"
          INPUT=""
        fi
        until [ "${INPUT}" = "" ] && [ "${NAO_CLUSTERNAME}" != "" ]; do
          echo -n "    Clustername (${NAO_CLUSTERNAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_CLUSTERNAME=`echo ${INPUT}|grep "[a-z]*$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until
        INPUT=" "
# When 3rd param, use this as NAO_SVM_NAME
        if [ "${3}" != "" ]; then
          NAO_SVM_NAME="${3}"
          INPUT=""
        fi
        until [ "${INPUT}" = "" ] && [ "${NAO_SVM_NAME}" != "" ]; do
          echo -n "    SVM (vserver)name [tlenl<aaa><00>] (${NAO_SVM_NAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_SVM_NAME=`echo ${INPUT}|grep "[a-z]*[0-9]$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        ${SSH} ${NAO_CLUSTERNAME} "quota report -vserver \"${NAO_SVM_NAME}\" -field vserver,volume,tree,disk-limit"

        echo "[ENTER]"
        read INPUT
        ;;


    95) echo "  Show Exports + Volume(s) on a Cluster & SVM (vserver) (via SSH-CLI)"
# Check var with reg-expr, Until valid. Then to next Question
        INPUT=" "
# When 2nd param, use this as NAO_CLUSTERNAME
        if [ "${2}" != "" ]; then
          NAO_CLUSTERNAME="${2}"
          INPUT=""
        fi
        until [ "${INPUT}" = "" ] && [ "${NAO_CLUSTERNAME}" != "" ]; do
          echo -n "    Clustername (${NAO_CLUSTERNAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_CLUSTERNAME=`echo ${INPUT}|grep "[a-z]*$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until
        INPUT=" "
# When 3rd param, use this as NAO_SVM_NAME
        if [ "${3}" != "" ]; then
          NAO_SVM_NAME="${3}"
          INPUT=""
        fi
        until [ "${INPUT}" = "" ] && [ "${NAO_SVM_NAME}" != "" ]; do
          echo -n "    SVM (vserver)name [tlenl<aaa><00>] (${NAO_SVM_NAME}): "
          read INPUT
          if [ "${INPUT}" != "" ]; then
            NAO_SVM_NAME=`echo ${INPUT}|grep "[a-z]*[0-9]$"`
            INPUT=""
          fi  # INPUT}" != ""
        done  # until

        ${SSH} ${NAO_CLUSTERNAME} "export-policy rule show -vserver \"${NAO_SVM_NAME}\" -field vserver,policyname,ruleindex,protocol,clientmatch,rorule,rwrule,superuser,allow-suid"

        echo "[ENTER]"
        read INPUT
        ;;



    *) echo "  UNknown choice (${INPUT}). Try again"; CHOICE=99999999999 
        sleep 2
        ;;
  esac
#  INPUT=""
done  # CHOICE


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

