
#/bin/sh
# File	: cdot_volume_delete-unmount.sh
# By	: Maarten de Boer@Atos.net, 221230
# Subject	: Script to remove volumes at cDOT, by unmounting. And deleting if unmounted (at 1st run)
#(0.2),260416	:  Was cdot_volume_remove.sh
PGM=`basename $0|cut -d\. -f1`
VER="0.2"
LOG="${HOME}/log/${PGM}.log"
SSH="/usr/bin/ssh -n"
RCFILE="${HOME}/etc/${PGM}.rc"
LIST_ONLY=""

DATAFILE="${HOME}/data/${PGM}.csv"
CFILTER="tlenlfas8040"
SFILTER="[?]*"
VFILTER="[?]*"

CLUSTERS="${HOME}/etc/clusters"

USAGE()
{
  echo "Usage: ${PGM} [<options>]"
  echo "  Version: ${VER}"
  echo "  options       :"
  echo "    -l          : List only"
  echo "    -c          : Cluster-filter (${CFILTER})"
  echo "    -s          : SVM-filter (${SFILTER})"
  echo "    -v          : Volume-filter (${VFILTER})"
  echo "    -h|--help   : this help"
  echo "    -V          : Version"
  echo "    -x          : set -x"
}
if [ -f ${RCFILE} ]; then
  echo "  RCFILE (${RCFILE}) found. Using it"
  . ${RCFILE}
fi  # RCFILE
while [ $# -gt 0 ]
  do
  case $1 in
    -c) CFILTER="${2}"; shift ;;
    -s) SFILTER="${2}"; shift ;;
    -v) VFILTER="${2}"; shift ;;
    -l) LIST_ONLY=1 ;;
    -h | --help) USAGE; exit 1 ;;
    -V) echo "${PGM}: v${VER}"; exit 2 ;;
    -x)  set -x ;;
    *)  echo "Option $1 not known."; USAGE; exit 1 ;;
  esac
    shift
done

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
echo "  CFILTER=${CFILTER}"
echo "  SFILTER=${SFILTER}"
echo "  VFILTER=${VFILTER}"
echo "  LIST_ONLY=${LIST_ONLY}"
sleep 1
echo "  Remove Volumes (1st: Unmount & Offline, 2nd: Delete) : "
echo "Press [ENTER]"
read INPUT


cat ${CLUSTERS}|grep -v ^#|grep "${CFILTER}"|while read CLUSTER REST
do
  ping -c 1 -W 1 ${CLUSTER}
  EC=${?}
  if [ ${EC} -eq 0 ]; then
    echo "  ${CLUSTER}|" 
    ${SSH} ${CLUSTER} "vserver show -operational-state running -field vserver"|grep "${SFILTER}"|grep "nl"|while read VSERVER REST
    do
      echo "    ${VSERVER}|" 
      ${SSH} ${CLUSTER} "volume show -vserver ${VSERVER} -field vserver,volume,state"|grep ${VSERVER}|grep -v "vol0root"|grep "${VFILTER}" |awk '{print $2,$3}'| while read VOLUME STATE REST
      do
        echo "      ${VOLUME} ,${STATE}|"
	if [ ! ${LIST_ONLY} ]; then
# Remove offlined volumes 1st
          VOL_OFFLINE=`${SSH} ${CLUSTER} "volume show -vserver ${VSERVER} -state offline"|grep "${VOLUME}"`
          if [ "${VOL_OFFLINE}" != "" ]; then
            echo "        Deleting ${VOLUME} volume at ${VSERVER}"|tee -a ${LOG}
            ${SSH} ${CLUSTER} "volume delete -vserver ${VSERVER} -volume ${VOLUME}"
          fi  # VOL_ONLINE
          VOL_ONLINE=`${SSH} ${CLUSTER} "volume show -vserver ${VSERVER} -state online"|grep "${VOLUME}"`
          if [ "${VOL_ONLINE}" != "" ]; then
            echo "        Unmounting & offlining volume ${VOLUME} at ${VSERVER}"|tee -a ${LOG}
            ${SSH} ${CLUSTER} "volume unmount -vserver ${VSERVER} -volume ${VOLUME}"
            ${SSH} ${CLUSTER} "volume offline -vserver ${VSERVER} -volume ${VOLUME}"
          fi  # online
        fi  # LIST_ONLY

      done  # VOLUME

    done  # VSERVER
  else
    echo "  ${CLUSTER} NOT reachable"
  fi  # EC=0
	 

done  # CLUSTER



exit 1


  if [ "${VSERVER}" != "" ] && [ "${VOLUME}" != "" ]; then

# Umount & offline the volume
    fi  # VOL_ONLINE

  fi  # != ""


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

