
#/bin/sh
# File	: cdot_vol-lun-mapping.sh
# By	: Maarten de Boer@Atos.net, 221222
# Subject	: Script to create volumes+LUNs onto cDOT
PGM=`basename $0|cut -d\. -f1`
VER="0.1"
LOG="${HOME}/log/${PGM}.log"
SSH="/usr/bin/ssh -n"
RCFILE="${HOME}/etc/${PGM}.rc"

DATAFILE="${HOME}/data/${PGM}.csv"
CLUSTER="tlenlfas8040"
NFILTER="[?]*"

USAGE()
{
  echo "Usage: ${PGM} [<options>]"
  echo "  Version: ${VER}"
  echo "  options       :"
  echo "    -c          : Clustername (${CLUSTER})"
  echo "    -d          : Datafile (${DATAFILE})"
  echo "    -s          : Svmname (${VSERVER})"
  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) CLUSTER="${2}"; shift ;;
    -s) VSERVER="${2}"; shift ;;
    -d) DATAFILE="${2}"; shift ;;
    -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

if [ ! -f ${DATAFILE} ]; then
  echo "  DATAFILE (${DATAFILE}) NOT found. Exiting ..."
  exit 3
fi
echo "  Config vserver(SVM):"
echo "  CLUSTER=${CLUSTER}"
echo "  NFILTER=${NFILTER}"
echo "Press [ENTER]"
read INPUT

# DATAFILE
# cluster;vserver;volume;aggr;vol_size;vol-comment;lun;lun-size;ostype;lun-comment;
# ostype: {vmware|hyper_v|windows_2008|windows_gpt|windows|linux|xen|solaris|solaris_efi|hpux|aix|netware|openvms}
# $ "-vserver tlenlvmw02 -volume vmw02_vol01001 -path /vol/vmw02_vol01001/anslun01
#tlenlfas8040;tlenltnl01;tnl01_vol01001;n01a0901;10g;V_COMMENT;lun001;5g;vmware;ESX-LUN;
#
cat ${DATAFILE}|grep -v ^#|grep ${CLUSTER}|grep ${NFILTER}|while read LINE
do
  CLUSTER=`echo ${LINE}|awk -F\; '{print $1}'`
  VSERVER=`echo ${LINE}|awk -F\; '{print $2}'`
  VOLUME=`echo ${LINE}|awk -F\; '{print $3}'`
  AGGR=`echo ${LINE}|awk -F\; '{print $4}'`
  V_SIZE=`echo ${LINE}|awk -F\; '{print $5}'`
  V_COMMENT=`echo ${LINE}|awk -F\; '{print $6}'`
  LUN=`echo ${LINE}|awk -F\; '{print $7}'`
  L_SIZE=`echo ${LINE}|awk -F\; '{print $8}'`
  OS_TYPE=`echo ${LINE}|awk -F\; '{print $9}'`
  L_COMMENT=`echo ${LINE}|awk -F\; '{print $10}'`

  echo "  CLUSTER=${CLUSTER} VSERVER=${VSERVER} VOLUME=${VOLUME} AGGR=${AGGR} V_SIZE=${V_SIZE} V_COMMENT=${V_COMMENT} LUN=${LUN} L_SIZE=${L_SIZE} OS_TYPE=${OS_TYPE} L_COMMENT=${L_COMMENT}"

  if [ "${V_COMMENT}" = "" ]; then
    V_COMMENT="By ${PGM} `date +%Y%m%d-%H%M%S`"
  fi
  if [ "${L_COMMENT}" = "" ]; then
    L_COMMENT="By ${PGM} `date +%Y%m%d-%H%M%S`"
  fi

  ${SSH} ${CLUSTER} "volume show -vserver ${VSERVER} -volume ${VOLUME}" 1> /dev/null
  EC=${?}
# While volume is (EC=0) then modify
  if [ ${EC} -eq 0 ]; then
    echo "  1. Modify volume ${VOLUME} at ${VSERVER}"
    ${SSH} ${CLUSTER} "volume modify -vserver ${VSERVER} -volume ${VOLUME} -size ${V_SIZE} -comment \"${V_COMMENT}\" "
  else
    echo "  1. Create volume ${VOLUME} at ${VSERVER}"
    ${SSH} ${CLUSTER} "volume create -vserver ${VSERVER} -volume ${VOLUME} -aggregate ${AGGR} -size ${V_SIZE} -junction-path /${VOLUME} -comment \"${V_COMMENT}\" -snapshot-policy default -foreground true -percent-snapshot-space 0 -min-auto 1g -autosize-grow-threshold-percent 85% -autosize-shrink-threshold-percent 75% -autosize-mode grow_shrink -language C.UTF-8 -space-guarantee volume -type RW"
  fi
  ${SSH} ${CLUSTER} "volume show -vserver ${VSERVER}"
  sleep 1

  echo "  2. Create LUN (${LUN}) onto volume ${VOLUME} at ${VSERVER}"
  ${SSH} ${CLUSTER} "lun create -vserver ${VSERVER} -volume ${VOLUME} -lun ${LUN} -size ${L_SIZE} -ostype ${OS_TYPE} -comment ${L_COMMENT} "
  ${SSH} ${CLUSTER} "lun show -vserver ${VSERVER} "
  sleep 1



done  # DATAFILE


exit 0

