#!/bin/ksh

#set +x

############################################################################
#
# Script to automate allocation of 33GB VMAX TDEVs
#
############################################################################

############################################################################
#
# Current Version - 6.0
#
# Version History
#
# V1.0 - First version
# V2.0 - Added SPC2 and OS2007 portflags (25/05/2011)
# V3.0 - Added enteros function and modified port flag settings (26/05/2011)
# V4.0 - Added new VMAX arrays and changed port flag settings (09/11/2011)
# V5.0 - Added new FA Port Pairs for VMAX0552 (RDC) (31/05/2012)
# V6.0 - Added loop for associating with FAST policy (08/06/2012)
#
############################################################################

clear

# Unset variables
unset TMPDIR
unset LOGDIR
unset LOGFILE
unset SITE
unset SID
unset HOSTNAME
unset OS
unset ALLDONE
unset NUMHBA
unset PORT
unset DEV1
unset PORT1
unset DEV2
unset PORT2
unset PORTPAIR
unset CAPACITY
unset REPLY
unset CONFIRM
unset CHANGE
unset NPLIST
unset SOEID
unset SETVBIT
unset SETDBIT
unset SETSPC2BIT
unset SETOS2007BIT
unset FAST
unset ATTEMPT

# Set SYMCLI Environment
SYMCLI_WAIT_ON_DB=1

errchk () {
if [ ${ERRCODE} -ne 0 ]
then
	if [ "${FAST}" = "YES" -a ${ATTEMPT} -le 4 ]
	then
		print "Waiting for SYMAPI DB..."
		sleep 10
		fastpolicy
	else
		print "Error detected...exiting script"
		sleep 2
		DATE=`date +'%b%d %H:%M:%S'`
		print "${DATE} ${SOEID} vmax_alloc.ksh exiting with error code ${ERRCODE}" >> ${LOGFILE}
		exit
	fi
fi
}

outro () {
cleanup
DATE=`date +'%b%d %H:%M:%S'`
print "${DATE} ${SOEID} vmax_alloc.ksh exiting because ${REASON}" >> ${LOGFILE}
exit
}

setsid () {
SITE=`uname -n | cut -c1-3`

if [ ${SITE} = "rdc" ]
then
	BASEDIR=/export/home/san/capacity
	LOGDIR=${BASEDIR}/log
	PBRUN=pbrun
	setrdcsid
elif [ ${SITE} = "fdc" ]
then
	BASEDIR=/export/home/san/capacity
	LOGDIR=${BASEDIR}/log
	PBRUN=pbrun
	setfdcsid
elif [ ${SITE} = "cgc" ]
then
	BASEDIR=/var/opt/san/ac
	LOGDIR=${BASEDIR}/../log
	PBRUN=pbrun
	setcgcsid
fi

setlogs
}

setrdcsid () {
clear
print "Which VMAX array are you allocating from? "
print
print "1) 0552 - Tier 3 Replicated to/from 0745 (CGC)"
print "2) 0678 - Tier 4 Non-Replicated"
print "3) 2230 - Tier 3 Replicated to 2231 (FDC)"
print "4) 3286 - Tier 3 Replicated from 2804 (FDC)"
print "5) 3073 - Tier 4 Non-Replicated"
print
print -n "Please enter 1, 2, 3, 4, 5 or q to quit: "

read RDCSID

case ${RDCSID} in
	1) SID=0552
	   SETSPC2BIT=YES
	   SETOS2007BIT=YES
	   ;;
	2) SID=0678
	   SETSPC2BIT=YES
	   SETOS2007BIT=YES
	   ;;
	3) SID=2230
	   ;;
	4) SID=3286
	   ;;
	5) SID=3073
	   FAST=YES
	   ATTEMPT=0
	   ;;
	*) REASON="user selected quit"
	   outro;;
esac
}

setcgcsid () {
clear
print "Which VMAX array are you allocating from? "
print
print "1) 0745 - Tier 3 Replicated to/from 0552 (RDC)"
print "2) 0623 - Tier 4 Non-Replicated"
print
print -n "Please enter 1 or 2 or q to quit: "
read CGCSID

case ${CGCSID} in
	1) SID=0745
	   SETSPC2BIT=YES
	   SETOS2007BIT=YES
	   ;;
	2) SID=0623
	   SETSPC2BIT=YES
	   SETOS2007BIT=YES
	   FAST=YES
	   ATTEMPT=0
	   ;;
	*) REASON="user selected quit"
	   outro;;
esac

}

setfdcsid () {
clear
print "Which VMAX array are you allocating from? "
print
print "1) 0879 - Tier 4 Non-Replicated"
print "2) 2231 - Tier 3 Replicated from 2230 (RDC)"
print "3) 2804 - Tier 3 Replicated to 3286 (RDC)"
print "4) 3004 - Tier 4 Non-Replicated"
print
print -n "Please enter 1, 2, 3, 4 or q to quit: "
read FDCSID

case ${FDCSID} in
	1) SID=0879
	   SETSPC2BIT=YES
	   SETOS2007BIT=YES
	   ;;
	2) SID=2231
	   ;;
	3) SID=2804
	   ;;
	4) SID=3004
	   FAST=YES
	   ATTEMPT=0
	   ;;
	*) REASON="user selected quit"
           outro;;
esac
}

setlogs () {
LOGDATE=`date +%b%y`
LOGFILE=${LOGDIR}/vmax_alloc_${LOGDATE}.log
ALIASLOG=${LOGDIR}/alias.log

ALLDONE=Y

TMPDIR=/var/tmp

SOEID=`/usr/ucb/whoami`

DATE=`date +'%b%d %H:%M:%S'`
print "${DATE} ${SOEID} vmax_alloc.ksh starting" >> ${LOGFILE}

nplist
}

nplist () {
NPLIST=${TMPDIR}/${SID}_noport
${PBRUN} symdev -sid ${SID} -noport list > ${NPLIST}

enterhost
}

enterhost () {
clear
typeset -l HOSTNAME
print -n "Please enter the hostname: "
read HOSTNAME

if [ ${ALLDONE} = "N" ]
then
	confirmation
fi

enteros
}

enteros () {
clear
print
print "Which Operating System does the host run?"
print "(This will determine port flag settings for the host)"
print
print "     1) AIX"
print "     2) Windows"
print "     3) Solaris"
print "     4) Linux"
print "     5) HP-UX"
print
print -n "Please select a number from 1 to 5 or q to quit : "
read OS

case ${OS} in
	1) OS=AIX
	   continue ;;
	2) OS=Windows
	   continue ;;
	3) OS=Solaris
	   SETDBIT=YES ;;
	4) OS=Linux
	   SETDBIT=YES ;;
	5) OS=HP-UX
	   SETVBIT=YES ;;
	q|Q) REASON="USER selected quit"
	   outro ;;
	*) print "Invalid selection"
	   sleep 2
	   enteros ;;
esac

if [ ${ALLDONE} = "N" ]
then
	confirmation
fi

enterportpair
}

enterportpair () {
clear
print "Which port pair have you zoned to?"
print
if [ ${SID} = "0678" -o ${SID} = "0879" -o ${SID} = "0623" -o ${SID} = "3286" -o ${SID} = "2804" ]
then
	cat ${BASEDIR}/${SID}_ports.txt
	print
	print -n "Enter a number from 1 to 16 or q to quit: "
elif [ ${SID} = "0552" -o ${SID} = "0745" ]
then
	cat ${BASEDIR}/${SID}_ports.txt
	print
	print -n "Enter a number from 1 to 20 or q to quit: "
elif [ ${SID} = "2230" ]
then
	cat ${BASEDIR}/${SID}_ports.txt
	print
	print -n "Enter a number from 1 to 11 or q to quit: "
elif [ ${SID} = "3073" ]
then
	cat ${BASEDIR}/${SID}_ports.txt
	print
	print -n "Enter a number from 1 to 17 or q to quit: "
elif [ ${SID} = "2231" ]
then
	cat ${BASEDIR}/${SID}_ports.txt
	print
	print -n "Enter a number from 1 to 22 or q to quit: "
elif [ ${SID} = "3004" ]
then
	cat ${BASEDIR}/${SID}_ports.txt
	print
	print -n "Enter a number from 1 to 23 or q to quit: "
fi
read PORT

if [ ${SID} = "0678" ]
then
case ${PORT} in
	1)  PORTPAIR=0678_7E0_10E1
	    DIR1=7E
	    PORT1=0
	    DIR2=10E
	    PORT2=1;;
	2)  PORTPAIR=0678_7E1_10E0
	    DIR1=7E
	    PORT1=1
	    DIR2=10E
	    PORT2=0;;
	3)  PORTPAIR=0678_8E0_9E1
	    DIR1=8E
	    PORT1=0
	    DIR2=9E
	    PORT2=1;;
	4)  PORTPAIR=0678_8E1_9E0
	    DIR1=8E
	    PORT1=1
	    DIR2=9E
	    PORT2=0;;
	5)  PORTPAIR=0678_7F0_10F1
	    DIR1=7F
	    PORT1=0
	    DIR2=10F
	    PORT2=1;;
	6)  PORTPAIR=M_0678_7F1_10F0
	    DIR1=7F
	    PORT1=1
	    DIR2=10F
	    PORT2=0;;
	7)  PORTPAIR=0678_8F0_9F1
	    DIR1=8F
	    PORT1=0
	    DIR2=9F
	    PORT2=1;;
	8)  PORTPAIR=0678_8F1_9F0
	    DIR1=8F
	    PORT1=1
	    DIR2=9F
	    PORT2=0;;
	9)  PORTPAIR=0678_7G0_10G1
	    DIR1=7G
	    PORT1=0
	    DIR2=10G
	    PORT2=1;;
	10) PORTPAIR=0678_7G1_10G0
	    DIR1=7G
	    PORT1=1
	    DIR2=10G
	    PORT2=0;;
	11) PORTPAIR=0678_8G0_9G1
	    DIR1=8G
	    PORT1=0
	    DIR2=9G
	    PORT2=1;;
	12) PORTPAIR=0678_8G1_9G0
	    DIR1=8G
	    PORT1=1
	    DIR2=9G
	    PORT2=0;;
	13) PORTPAIR=0678_7H0_10H1
	    DIR1=7H
	    PORT1=0
	    DIR2=10H
	    PORT2=1;;
	14) PORTPAIR=0678_7H1_10H0
	    DIR1=7H
	    PORT1=1
	    DIR2=10H
	    PORT2=0;;
	15) PORTPAIR=M_0678_8H0_9H1
	    DIR1=8H
	    PORT1=0
	    DIR2=9H
	    PORT2=1;;
	16) PORTPAIR=0678_8H1_9H0
	    DIR1=8H
	    PORT1=1
	    DIR2=9H
	    PORT2=0;;
	q)  REASON="user selected quit"
	    outro;;
	*)  print "Invalid selection"
	    sleep 2
	    enterportpair;;
esac
elif [ ${SID} = "0879" ]
then 
case ${PORT} in
        1)  PORTPAIR=0879_7E0_10E1
	    DIR1=7E
	    PORT1=0
	    DIR2=10E
	    PORT2=1;;
        2)  PORTPAIR=0879_7E1_10E0
	    DIR1=7E
	    PORT1=1
	    DIR2=10E
	    PORT2=0;;
        3)  PORTPAIR=0879_8E0_9E1
	    DIR1=8E
	    PORT1=0
	    DIR2=9E
	    PORT2=1;;
        4)  PORTPAIR=0879_8E1_9E0
	    DIR1=8E
	    PORT1=1
	    DIR2=9E
	    PORT2=0;;
        5)  PORTPAIR=0879_7F0_10F1
	    DIR1=7F
	    PORT1=0
	    DIR2=10F
	    PORT2=1;;
        6)  PORTPAIR=0879_7F1_10F0
	    DIR1=7F
	    PORT1=1
	    DIR2=10F
	    PORT2=0;;
        7)  PORTPAIR=0879_8F0_9F1
	    DIR1=8F
	    PORT1=0
	    DIR2=9F
	    PORT2=1;;
        8)  PORTPAIR=0879_8F1_9F0
	    DIR1=8F
	    PORT1=1
	    DIR2=9F
	    PORT2=0;;
        9)  PORTPAIR=0879_7G0_10G1
	    DIR1=7G
	    PORT1=0
	    DIR2=10G
	    PORT2=1;;
        10) PORTPAIR=0879_7G1_10G0
	    DIR1=7G
	    PORT1=1
	    DIR2=10G
	    PORT2=0;;
        11) PORTPAIR=0879_8G0_9G1
	    DIR1=8G
	    PORT1=0
	    DIR2=9G
	    PORT2=1;;
        12) PORTPAIR=0879_8G1_9G0
	    DIR1=8G
	    PORT1=1
	    DIR2=9G
	    PORT2=0;;
        13) PORTPAIR=0879_7H0_10H1
	    DIR1=7H
	    PORT1=0
	    DIR2=10H
	    PORT2=1;;
        14) PORTPAIR=0879_7H1_10H0
	    DIR1=7H
	    PORT1=1
	    DIR2=10H
	    PORT2=0;;
        15) PORTPAIR=0879_8H0_9H1
	    DIR1=8H
	    PORT1=0
	    DIR2=9H
	    PORT2=1;;
        16) PORTPAIR=0879_8H1_9H0
	    DIR1=8H
	    PORT1=1
	    DIR2=9H
	    PORT2=0;;
        q)  REASON="user selected quit"
	    outro;;
        *)  print "Invalid selection"
	    sleep 2
            enterportpair;;
esac
elif [ ${SID} = "0623" ]
then 
case ${PORT} in
        1)  PORTPAIR=M_0623_7E0_10E1
	    DIR1=7E
	    PORT1=0
	    DIR2=10E
	    PORT2=1;;
        2)  PORTPAIR=M_0623_7E1_10E0
	    DIR1=7E
	    PORT1=1
	    DIR2=10E
	    PORT2=0;;
        3)  PORTPAIR=M_0623_8E0_9E1
	    DIR1=8E
	    PORT1=0
	    DIR2=9E
	    PORT2=1;;
        4)  PORTPAIR=M_0623_8E1_9E0
	    DIR1=8E
	    PORT1=1
	    DIR2=9E
	    PORT2=0;;
        5)  PORTPAIR=M_0623_7F0_10F1
	    DIR1=7F
	    PORT1=0
	    DIR2=10F
	    PORT2=1;;
        6)  PORTPAIR=M_0623_7F1_10F0
	    DIR1=7F
	    PORT1=1
	    DIR2=10F
	    PORT2=0;;
        7)  PORTPAIR=C_0623_8F0_9F1
	    DIR1=8F
	    PORT1=0
	    DIR2=9F
	    PORT2=1;;
        8)  PORTPAIR=C_0623_8F1_9F0
	    DIR1=8F
	    PORT1=1
	    DIR2=9F
	    PORT2=0;;
        9)  PORTPAIR=M_0623_7G0_10G1
	    DIR1=7G
	    PORT1=0
	    DIR2=10G
	    PORT2=1;;
        10) PORTPAIR=M_0623_7G1_10G0
	    DIR1=7G
	    PORT1=1
	    DIR2=10G
	    PORT2=0;;
        11) PORTPAIR=C_0623_8G0_9G1
	    DIR1=8G
	    PORT1=0
	    DIR2=9G
	    PORT2=1;;
        12) PORTPAIR=C_0623_8G1_9G0
	    DIR1=8G
	    PORT1=1
	    DIR2=9G
	    PORT2=0;;
        13) PORTPAIR=M_0623_7H0_10H1
	    DIR1=7H
	    PORT1=0
	    DIR2=10H
	    PORT2=1;;
        14) PORTPAIR=M_0623_7H1_10H0
	    DIR1=7H
	    PORT1=1
	    DIR2=10H
	    PORT2=0;;
        15) PORTPAIR=C_0623_8H0_9H1
	    DIR1=8H
	    PORT1=0
	    DIR2=9H
	    PORT2=1;;
        16) PORTPAIR=C_0623_8H1_9H0
	    DIR1=8H
	    PORT1=1
	    DIR2=9H
	    PORT2=0;;
        q)  REASON="user selected quit"
	    outro;;
        *)  print "Invalid selection"
	    sleep 2
            enterportpair;;
esac
elif [ ${SID} = "0745" ]
then 
case ${PORT} in
        1)  PORTPAIR=M_0745_7E0_10E1
	    DIR1=7E
	    PORT1=0
	    DIR2=10E
	    PORT2=1;;
        2)  PORTPAIR=C_0745_7E1_10E0
	    DIR1=7E
	    PORT1=1
	    DIR2=10E
	    PORT2=0;;
        3)  PORTPAIR=M_0745_8E0_9E1
	    DIR1=8E
	    PORT1=0
	    DIR2=9E
	    PORT2=1;;
        4)  PORTPAIR=C_0745_8E1_9E0
	    DIR1=8E
	    PORT1=1
	    DIR2=9E
	    PORT2=0;;
        5)  PORTPAIR=M_0745_7F0_10F1
	    DIR1=7F
	    PORT1=0
	    DIR2=10F
	    PORT2=1;;
        6)  PORTPAIR=C_0745_7F1_10F0
	    DIR1=7F
	    PORT1=1
	    DIR2=10F
	    PORT2=0;;
        7)  PORTPAIR=M_0745_8F0_9F1
	    DIR1=8F
	    PORT1=0
	    DIR2=9F
	    PORT2=1;;
        8)  PORTPAIR=C_0745_8F1_9F0
	    DIR1=8F
	    PORT1=1
	    DIR2=9F
	    PORT2=0;;
        9)  PORTPAIR=M_0745_7G0_10G1
	    DIR1=7G
	    PORT1=0
	    DIR2=10G
	    PORT2=1;;
        10) PORTPAIR=C_0745_7G1_10G0
	    DIR1=7G
	    PORT1=1
	    DIR2=10G
	    PORT2=0;;
        11) PORTPAIR=M_0745_8G0_9G1
	    DIR1=8G
	    PORT1=0
	    DIR2=9G
	    PORT2=1;;
        12) PORTPAIR=C_0745_8G1_9G0
	    DIR1=8G
	    PORT1=1
	    DIR2=9G
	    PORT2=0;;
        13) PORTPAIR=C_0745_05E0_12E1
	    DIR1=5E
	    PORT1=0
	    DIR2=12E
	    PORT2=1;;
        14) PORTPAIR=C_0745_06F0_11E1
	    DIR1=6F
	    PORT1=0
	    DIR2=11F
	    PORT2=1;;
        15) PORTPAIR=C_0745_05E1_12E0
	    DIR1=5E
	    PORT1=1
	    DIR2=12E
	    PORT2=0;;
        16) PORTPAIR=C_0745_06F1_11F0
	    DIR1=6F
	    PORT1=1
	    DIR2=11F
	    PORT2=0;;
        17) PORTPAIR=C_0745_05F0_12F1
	    DIR1=5F
	    PORT1=0
	    DIR2=12F
	    PORT2=1;;
        18) PORTPAIR=C_0745_05F1_12F0
	    DIR1=5F
	    PORT1=1
	    DIR2=12F
	    PORT2=0;;
        19) PORTPAIR=C_0745_06E0_11E1
	    DIR1=6E
	    PORT1=0
	    DIR2=11E
	    PORT2=1;;
        20) PORTPAIR=C_0745_06E1_11E0
	    DIR1=6E
	    PORT1=1
	    DIR2=11E
	    PORT2=0;;
        q)  REASON="user selected quit"
	    outro;;
        *)  print "Invalid selection"
	    sleep 2
            enterportpair;;
esac
elif [ ${SID} = "0552" ]
then 
case ${PORT} in
        1)  PORTPAIR=0552_7E0_10E1
	    DIR1=7E
	    PORT1=0
	    DIR2=10E
	    PORT2=1;;
        2)  PORTPAIR=0552_7E1_10E0
	    DIR1=7E
	    PORT1=1
	    DIR2=10E
	    PORT2=0;;
        3)  PORTPAIR=0552_8E0_9E1
	    DIR1=8E
	    PORT1=0
	    DIR2=9E
	    PORT2=1;;
        4)  PORTPAIR=0552_8E1_9E0
	    DIR1=8E
	    PORT1=1
	    DIR2=9E
	    PORT2=0;;
        5)  PORTPAIR=0552_7F0_10F1
	    DIR1=7F
	    PORT1=0
	    DIR2=10F
	    PORT2=1;;
        6)  PORTPAIR=0552_7F1_10F0
	    DIR1=7F
	    PORT1=1
	    DIR2=10F
	    PORT2=0;;
        7)  PORTPAIR=0552_8F0_9F1
	    DIR1=8F
	    PORT1=0
	    DIR2=9F
	    PORT2=1;;
        8)  PORTPAIR=0552_8F1_9F0
	    DIR1=8F
	    PORT1=1
	    DIR2=9F
	    PORT2=0;;
        9)  PORTPAIR=0552_7G0_10G1
	    DIR1=7G
	    PORT1=0
	    DIR2=10G
	    PORT2=1;;
        10) PORTPAIR=0552_7G1_10G0
	    DIR1=7G
	    PORT1=1
	    DIR2=10G
	    PORT2=0;;
        11) PORTPAIR=0552_8G0_9G0
	    DIR1=8G
	    PORT1=0
	    DIR2=9G
	    PORT2=0;;
        12) PORTPAIR=0552_8G1_9G1
	    DIR1=8G
	    PORT1=1
	    DIR2=9G
	    PORT2=1;;
        13) PORTPAIR=0552_05E0_12E1
	    DIR1=5E
	    PORT1=0
	    DIR2=12E
	    PORT2=1;;
        14) PORTPAIR=0552_06F0_11E1
	    DIR1=6F
	    PORT1=0
	    DIR2=11F
	    PORT2=1;;
        15) PORTPAIR=0552_05E1_12E0
	    DIR1=5E
	    PORT1=1
	    DIR2=12E
	    PORT2=0;;
        16) PORTPAIR=0552_06F1_11F0
	    DIR1=6F
	    PORT1=1
	    DIR2=11F
	    PORT2=0;;
        17) PORTPAIR=0552_05F0_12F1
	    DIR1=5F
	    PORT1=0
	    DIR2=12F
	    PORT2=1;;
        18) PORTPAIR=0552_05F1_12F0
	    DIR1=5F
	    PORT1=1
	    DIR2=12F
	    PORT2=0;;
        19) PORTPAIR=0552_06E0_11E1
	    DIR1=6E
	    PORT1=0
	    DIR2=11E
	    PORT2=1;;
        20) PORTPAIR=0552_06E1_11E0
	    DIR1=6E
	    PORT1=1
	    DIR2=11E
	    PORT2=0;;
        q)  REASON="user selected quit"
	    outro;;
        *)  print "Invalid selection"
	    sleep 2
            enterportpair;;
esac
elif [ ${SID} = "2230" ]
then 
case ${PORT} in
        1)  PORTPAIR=2230_07E0_10E0
	    DIR1=7E
	    PORT1=0
	    DIR2=10E
	    PORT2=0;;
        2)  PORTPAIR=2230_05E0_12E0
	    DIR1=5E
	    PORT1=0
	    DIR2=12E
	    PORT2=0;;
        3)  PORTPAIR=2230_05E1_12E1
	    DIR1=5E
	    PORT1=1
	    DIR2=12E
	    PORT2=1;;
        4)  PORTPAIR=2230_05F0_12F0
	    DIR1=5F
	    PORT1=0
	    DIR2=12F
	    PORT2=0;;
        5)  PORTPAIR=2230_05F1_12F1
	    DIR1=5F
	    PORT1=1
	    DIR2=12F
	    PORT2=1;;
        6)  PORTPAIR=2230_05G0_12G0
	    DIR1=5G
	    PORT1=0
	    DIR2=12G
	    PORT2=0;;
        7)  PORTPAIR=2230_05G1_12G1
	    DIR1=5G
	    PORT1=1
	    DIR2=12G
	    PORT2=1;;
        8)  PORTPAIR=2230_06F0_11F0
	    DIR1=6F
	    PORT1=0
	    DIR2=11F
	    PORT2=0;;
        9)  PORTPAIR=2230_06F1_11F1
	    DIR1=6F
	    PORT1=1
	    DIR2=11F
	    PORT2=1;;
        10) PORTPAIR=2230_06G0_11G0
	    DIR1=6G
	    PORT1=0
	    DIR2=11G
	    PORT2=0;;
        11) PORTPAIR=2230_06G1_11G1
	    DIR1=6G
	    PORT1=1
	    DIR2=11G
	    PORT2=1;;
        q)  REASON="user selected quit"
	    outro;;
        *)  print "Invalid selection"
	    sleep 2
            enterportpair;;
esac
elif [ ${SID} = "3073" ]
then 
case ${PORT} in
        1)  PORTPAIR=3073_05E0_12E0
	    DIR1=5E
	    PORT1=0
	    DIR2=12E
	    PORT2=0;;
        2)  PORTPAIR=3073_05E1_12E1
	    DIR1=5E
	    PORT1=1
	    DIR2=12E
	    PORT2=1;;
        3)  PORTPAIR=3073_05F0_12F0
	    DIR1=5F
	    PORT1=0
	    DIR2=12F
	    PORT2=0;;
        4)  PORTPAIR=3073_05G0_12G0
	    DIR1=5G
	    PORT1=0
	    DIR2=12G
	    PORT2=0;;
        5)  PORTPAIR=3073_05G1_12G1
	    DIR1=5G
	    PORT1=1
	    DIR2=12G
	    PORT2=1;;
        6)  PORTPAIR=3073_06E1_11E1
	    DIR1=6E
	    PORT1=1
	    DIR2=11E
	    PORT2=1;;
        7)  PORTPAIR=3073_06F0_11F0
	    DIR1=6F
	    PORT1=0
	    DIR2=11F
	    PORT2=0;;
        8)  PORTPAIR=3073_06G0_11G0
	    DIR1=6G
	    PORT1=0
	    DIR2=11G
	    PORT2=0;;
        9)  PORTPAIR=3073_06G1_11G1
	    DIR1=6G
	    PORT1=1
	    DIR2=11G
	    PORT2=1;;
        10) PORTPAIR=3073_07E1_10E1
	    DIR1=7E
	    PORT1=1
	    DIR2=10E
	    PORT2=1;;
        11) PORTPAIR=3073_07F0_10F0
	    DIR1=7F
	    PORT1=0
	    DIR2=10F
	    PORT2=0;;
        12) PORTPAIR=3073_07G0_10G0
	    DIR1=7G
	    PORT1=0
	    DIR2=10G
	    PORT2=0;;
        13) PORTPAIR=3073_07G1_10G1
	    DIR1=7G
	    PORT1=1
	    DIR2=10G
	    PORT2=1;;
        14) PORTPAIR=3073_08E1_09E1
	    DIR1=8E
	    PORT1=1
	    DIR2=9E
	    PORT2=1;;
        15) PORTPAIR=3073_08F0_09F0
	    DIR1=8F
	    PORT1=0
	    DIR2=9F
	    PORT2=0;;
        16) PORTPAIR=3073_08G0_09G0
	    DIR1=8G
	    PORT1=0
	    DIR2=9G
	    PORT2=0;;
        17) PORTPAIR=3073_08G1_09G1
	    DIR1=8G
	    PORT1=1
	    DIR2=9G
	    PORT2=1;;
        q)  REASON="user selected quit"
	    outro;;
        *)  print "Invalid selection"
	    sleep 2
            enterportpair;;
esac
elif [ ${SID} = "3286" ]
then 
case ${PORT} in
        1)  PORTPAIR=3286_05E1_12E1
	    DIR1=5E
	    PORT1=1
	    DIR2=12E
	    PORT2=1;;
        2)  PORTPAIR=3286_05F0_12F0
	    DIR1=5F
	    PORT1=0
	    DIR2=12F
	    PORT2=0;;
        3)  PORTPAIR=3286_05G0_12G0
	    DIR1=5G
	    PORT1=0
	    DIR2=12G
	    PORT2=0;;
        4)  PORTPAIR=3286_05G1_12G1
	    DIR1=5G
	    PORT1=1
	    DIR2=12G
	    PORT2=1;;
        5)  PORTPAIR=3286_06E1_11E1
	    DIR1=6E
	    PORT1=1
	    DIR2=11E
	    PORT2=1;;
        6)  PORTPAIR=3286_06F0_11F0
	    DIR1=6F
	    PORT1=0
	    DIR2=11F
	    PORT2=0;;
        7)  PORTPAIR=3286_06G0_11G0
	    DIR1=6G
	    PORT1=0
	    DIR2=11G
	    PORT2=0;;
        8)  PORTPAIR=3286_06G1_11G1
	    DIR1=6G
	    PORT1=1
	    DIR2=11G
	    PORT2=1;;
        9)  PORTPAIR=3286_07E1_10E1
	    DIR1=7E
	    PORT1=1
	    DIR2=10E
	    PORT2=1;;
        10) PORTPAIR=3286_07F0_10F0
	    DIR1=7F
	    PORT1=0
	    DIR2=10F
	    PORT2=0;;
        11) PORTPAIR=3286_07G0_10G0
	    DIR1=7G
	    PORT1=0
	    DIR2=10G
	    PORT2=0;;
        12) PORTPAIR=3286_07G1_10G1
	    DIR1=7G
	    PORT1=1
	    DIR2=10G
	    PORT2=1;;
        13) PORTPAIR=3286_08E1_09E1
	    DIR1=8E
	    PORT1=1
	    DIR2=9E
	    PORT2=1;;
        14) PORTPAIR=3286_08F0_09F0
	    DIR1=8F
	    PORT1=0
	    DIR2=9F
	    PORT2=0;;
        15) PORTPAIR=3286_08G0_09G0
	    DIR1=8G
	    PORT1=0
	    DIR2=9G
	    PORT2=0;;
        16) PORTPAIR=3286_08G1_09G1
	    DIR1=8G
	    PORT1=1
	    DIR2=9G
	    PORT2=1;;
        q)  REASON="user selected quit"
	    outro;;
        *)  print "Invalid selection"
	    sleep 2
            enterportpair;;
esac
elif [ ${SID} = "2231" ]
then
case ${PORT} in
	1)  PORTPAIR=2231_07E0_10E0
	    DIR1=7E
	    PORT1=0
	    DIR2=10E
	    PORT2=0;;
	2)  PORTPAIR=2231_07E1_10E1
	    DIR1=7E
	    PORT1=1
	    DIR2=10E
	    PORT2=1;;
	3)  PORTPAIR=2231_07F0_10F0
	    DIR1=7F
	    PORT1=0
	    DIR2=10F
	    PORT2=0;;
	4)  PORTPAIR=2231_07F1_10F1
	    DIR1=7F
	    PORT1=1
	    DIR2=10F
	    PORT2=1;;
	5)  PORTPAIR=2231_07G0_10G0
	    DIR1=7G
	    PORT1=0
	    DIR2=10G
	    PORT2=0;;
	6)  PORTPAIR=2231_07G1_10G1
	    DIR1=7G
	    PORT1=1
	    DIR2=10G
	    PORT2=1;;
	7)  PORTPAIR=2231_08E0_09E0
	    DIR1=8E
	    PORT1=0
	    DIR2=9E
	    PORT2=0;;
	8)  PORTPAIR=2231_08E1_09E1
	    DIR1=8E
	    PORT1=1
	    DIR2=9E
	    PORT2=1;;
	9)  PORTPAIR=2231_08F0_09F0
	    DIR1=8F
	    PORT1=0
	    DIR2=9F
	    PORT2=0;;
	10) PORTPAIR=2231_08F1_09F1
	    DIR1=8F
	    PORT1=1
	    DIR2=9F
	    PORT2=1;;
	11) PORTPAIR=2231_08G0_09G0
	    DIR1=8G
	    PORT1=0
	    DIR2=9G
	    PORT2=0;;
	12) PORTPAIR=2231_08G1_09G1
	    DIR1=8G
	    PORT1=1
	    DIR2=9G
	    PORT2=1;;
	13) PORTPAIR=2231_05E0_12E0
	    DIR1=5E
	    PORT1=0
	    DIR2=12E
	    PORT2=0;;
	14) PORTPAIR=2231_05E1_12E1
	    DIR1=5E
	    PORT1=1
	    DIR2=12E
	    PORT2=1;;
	15) PORTPAIR=2231_05F0_12F0
	    DIR1=5F
	    PORT1=0
	    DIR2=12F
	    PORT2=0;;
	16) PORTPAIR=2231_05F1_12F1
	    DIR1=5F
	    PORT1=1
	    DIR2=12F
	    PORT2=1;;
	17) PORTPAIR=2231_05G0_12G0
	    DIR1=5G
	    PORT1=0
	    DIR2=12G
	    PORT2=0;;
	18) PORTPAIR=2231_05G1_12G1
	    DIR1=5G
	    PORT1=1
	    DIR2=12G
	    PORT2=1;;
	19) PORTPAIR=2231_06F0_11F0
	    DIR1=6F
	    PORT1=0
	    DIR2=11F
	    PORT2=0;;
	20) PORTPAIR=2231_06F1_11F1
	    DIR1=6F
	    PORT1=1
	    DIR2=11F
	    PORT2=1;;
	21) PORTPAIR=2231_06G0_11G0
	    DIR1=6G
	    PORT1=0
	    DIR2=11G
	    PORT2=0;;
	22) PORTPAIR=2231_06G1_11G1
	    DIR1=6G
	    PORT1=1
	    DIR2=11G
	    PORT2=1;;
	q)  REASON="user selected quit"
	    outro;;
	*)  print "Invalid selection"
	    sleep 2
	    enterportpair;;
esac
elif [ ${SID} = "2804" ]
then
case ${PORT} in
	1)  PORTPAIR=2804_05E1_12E1
	    DIR1=5E
	    PORT1=1
	    DIR2=12E
	    PORT2=1;;
	2)  PORTPAIR=2804_05F0_12F0
	    DIR1=5F
	    PORT1=0
	    DIR2=12F
	    PORT2=0;;
	3)  PORTPAIR=2804_05G0_12G0
	    DIR1=5G
	    PORT1=0
	    DIR2=12G
	    PORT2=0;;
	4)  PORTPAIR=2804_05G1_12G1
	    DIR1=5G
	    PORT1=1
	    DIR2=12G
	    PORT2=1;;
	5)  PORTPAIR=2804_06E1_11E1
	    DIR1=6E
	    PORT1=1
	    DIR2=11E
	    PORT2=1;;
	6)  PORTPAIR=2804_06F0_11F0
	    DIR1=6F
	    PORT1=0
	    DIR2=11F
	    PORT2=0;;
	7)  PORTPAIR=2804_06G0_11G0
	    DIR1=6G
	    PORT1=0
	    DIR2=11G
	    PORT2=0;;
	8)  PORTPAIR=2804_06G1_11G1
	    DIR1=6G
	    PORT1=1
	    DIR2=11G
	    PORT2=1;;
	9)  PORTPAIR=2804_07E1_10E1
	    DIR1=7E
	    PORT1=1
	    DIR2=10E
	    PORT2=1;;
	10) PORTPAIR=2804_07F0_10F0
	    DIR1=7F
	    PORT1=0
	    DIR2=10F
	    PORT2=0;;
	11) PORTPAIR=2804_07G0_10G0
	    DIR1=7G
	    PORT1=0
	    DIR2=10G
	    PORT2=0;;
	12) PORTPAIR=2804_07G1_10G1
	    DIR1=7G
	    PORT1=1
	    DIR2=10G
	    PORT2=1;;
	13) PORTPAIR=2804_08E1_09E1
	    DIR1=8E
	    PORT1=1
	    DIR2=9E
	    PORT2=1;;
	14) PORTPAIR=2804_08F0_09F0
	    DIR1=8F
	    PORT1=0
	    DIR2=9F
	    PORT2=0;;
	15) PORTPAIR=2804_08G0_09G0
	    DIR1=8G
	    PORT1=0
	    DIR2=9G
	    PORT2=0;;
	16) PORTPAIR=2804_08G1_09G1
	    DIR1=8G
	    PORT1=1
	    DIR2=9G
	    PORT2=1;;
	q)  REASON="user selected quit"
	    outro;;
	*)  print "Invalid selection"
	    sleep 2
	    enterportpair;;
esac
elif [ ${SID} = "3004" ]
then
case ${PORT} in
	1)  PORTPAIR=3004_05E0_12E0
	    DIR1=5E
	    PORT1=0
	    DIR2=12E
	    PORT2=0;;
	2)  PORTPAIR=3004_05E1_12E1
	    DIR1=5E
	    PORT1=1
	    DIR2=12E
	    PORT2=1;;
	3)  PORTPAIR=3004_05F0_12F0
	    DIR1=5F
	    PORT1=0
	    DIR2=12F
	    PORT2=0;;
	4)  PORTPAIR=3004_05G0_12G0
	    DIR1=5G
	    PORT1=0
	    DIR2=12G
	    PORT2=0;;
	5)  PORTPAIR=3004_05G1_12G1
	    DIR1=5G
	    PORT1=1
	    DIR2=12G
	    PORT2=1;;
	6)  PORTPAIR=3004_06E0_11E0
	    DIR1=6E
	    PORT1=0
	    DIR2=11E
	    PORT2=0;;
	7)  PORTPAIR=3004_06E1_11E1
	    DIR1=6E
	    PORT1=1
	    DIR2=11E
	    PORT2=1;;
	8)  PORTPAIR=3004_06F0_11F0
	    DIR1=6F
	    PORT1=0
	    DIR2=11F
	    PORT2=0;;
	9)  PORTPAIR=3004_06F1_11F1
	    DIR1=6F
	    PORT1=1
	    DIR2=11F
	    PORT2=1;;
	10) PORTPAIR=3004_06G0_11G0
	    DIR1=6G
	    PORT1=0
	    DIR2=11G
	    PORT2=0;;
	11) PORTPAIR=3004_06G1_11G1
	    DIR1=6G
	    PORT1=1
	    DIR2=11G
	    PORT2=1;;
	12) PORTPAIR=3004_08E0_09E0
	    DIR1=8E
	    PORT1=0
	    DIR2=9E
	    PORT2=0;;
	13) PORTPAIR=3004_08E1_09E1
	    DIR1=8E
	    PORT1=1
	    DIR2=9E
	    PORT2=1;;
	14) PORTPAIR=3004_08F0_09F0
	    DIR1=8F
	    PORT1=0
	    DIR2=9F
	    PORT2=0;;
	15) PORTPAIR=3004_08F1_09F1
	    DIR1=8F
	    PORT1=1
	    DIR2=9F
	    PORT2=1;;
	16) PORTPAIR=3004_08G0_09G0
	    DIR1=8G
	    PORT1=0
	    DIR2=9G
	    PORT2=0;;
	17) PORTPAIR=3004_08G1_09G1
	    DIR1=8G
	    PORT1=1
	    DIR2=9G
	    PORT2=1;;
	18) PORTPAIR=3004_08E0_10E0
	    DIR1=7E
	    PORT1=0
	    DIR2=10E
	    PORT2=0;;
	19) PORTPAIR=3004_07E1_09E1
	    DIR1=7E
	    PORT1=1
	    DIR2=10E
	    PORT2=1;;
	20) PORTPAIR=3004_07F0_10F0
	    DIR1=7F
	    PORT1=0
	    DIR2=10F
	    PORT2=0;;
	21) PORTPAIR=3004_07F1_10F1
	    DIR1=7F
	    PORT1=1
	    DIR2=10F
	    PORT2=1;;
	22) PORTPAIR=3004_07G0_10G0
	    DIR1=7G
	    PORT1=0
	    DIR2=10G
	    PORT2=0;;
	23) PORTPAIR=3004_07G1_10G1
	    DIR1=7G
	    PORT1=1
	    DIR2=10G
	    PORT2=1;;
	q)  REASON="user selected quit"
	    outro;;
	*)  print "Invalid selection"
	    sleep 2
	    enterportpair;;
esac
fi

if [ ${ALLDONE} = "N" ]
then
	confirmation
fi

listlogins0
}

listlogins0 () {
${PBRUN} symaccess -sid ${SID} list logins -dirport ${DIR1}:${PORT1} > ${TMPDIR}/logins0
clear
print "Here is a list of HBA logins on ${DIR1}:${PORT1}"
print
grep -v ^$ ${TMPDIR}/logins0

enterwwn0
}

enterwwn0 () {
typeset -l LPFC0
print
print -n "Please enter WWPN of LPFC0: "
read LPFC0

if [ `echo ${LPFC0}|wc -c` -gt 17 ]
then
	print "WWPN specified has more than 16 characters"
	enterwwn0
elif [ `echo ${LPFC0}|wc -c` -lt 17 ]
then
	print "WWPN specified has less than 16 characters"
	enterwwn0
fi

if [ ${ALLDONE} = "N" ]
then
	confirmation
fi

listlogins1
}

listlogins1 () {
${PBRUN} symaccess -sid ${SID} list logins -dirport ${DIR2}:${PORT2} > ${TMPDIR}/logins1
clear
print "Here is a list of HBA logins on ${DIR2}:${PORT2}"
grep -v ^$ ${TMPDIR}/logins1

enterwwn1
}

enterwwn1 () {
typeset -l LPFC1
print
print -n "Please enter WWPN of LPFC1: "
read LPFC1

if [ `echo ${LPFC1}|wc -c` -gt 17 ]
then
	print "WWPN specified has more than 16 characters"
	enterwwn1
elif [ `echo ${LPFC1}|wc -c` -lt 17 ]
then
	print "WWPN specified has less than 16 characters"
	enterwwn1
fi

if [ ${ALLDONE} = "N" ]
then
	confirmation
fi

#numdevs
choosedevs
}

numdevs () {
typeset -u DEV1
typeset -u DEV2

if [ ${SITE} = "cgc" -o ${SID} = "0552" ]
then
	choosedevs
else

clear
typeset -i NUMDEVS=0
typeset -i CHKDEV=0
typeset -i CAPACITY=0

print -n "Please enter the number of 34GB LUNS you require or 0 to exit: "
read NUMDEVS

if [ ${NUMDEVS} -eq 0 ]
then
	print "Exiting..."
	sleep 2
	REASON="user selected 0 devices to allocate"
	outro
fi

let CAPACITY=NUMDEVS*34

typeset -l REPLY
print "That will give you approximately ${CAPACITY}GB of storage"
print -n "Is that correct? [ y/n/q ]: "
read REPLY

case ${REPLY} in
	y) continue;;
	n) numdevs;;
	q) REASON="user selected quit"
	   outro;;
	*) print "Invalid selection"
	   sleep 2
	   numdevs;;
esac

if [ ${NUMDEVS} -eq 1 ]
then
	DEV1=`cat ${NPLIST} | grep TDEV | grep 34526 | head -1 | awk '{print $1}'`
else
	DEV1=`cat ${NPLIST} | grep TDEV | grep 34526 | head -1 | awk '{print $1}'`
	DEV2=`cat ${NPLIST} | grep TDEV | grep 34526 | head -${NUMDEVS} | tail -1 | awk '{print $1}'`
	DDEV1=$((16#${DEV1}))
        DDEV2=$((16#${DEV2}))
        let CHKDEV=DDEV2-DDEV1+1
        if [ ${CHKDEV} -ne ${NUMDEVS} ]
        then
                clear
                print "Device range ${DEV1}:${DEV2} is not a continuous run of ${NUMDEV} devices"
                print "Please allocate this request manually"
                sleep 5
		REASON="device range selected is not contiguous"
                outro
        fi
fi
fi

confirmation
}

choosedevs () {
clear
typeset -i NUMDEVS=0
typeset -i CHKDEV=0
typeset -i CAPACITY=0

print -n "Please enter the number of 34GB LUNS you require or 0 to exit: "
read NUMDEVS

if [ ${NUMDEVS} -eq 0 ]
then
        print "Exiting..."
        sleep 2
	REASON="user selected 0 devices to allocate"
        outro
fi

let CAPACITY=NUMDEVS*34

typeset -l REPLY
print "That will give you approximately ${CAPACITY}GB of storage"
print -n "Is that correct? [ y/n/q ]: "
read REPLY

case ${REPLY} in
        y) continue;;
        n) choosedevs;;
        q) REASON="user selected quit"
	   outro;;
        *) print "Invalid selection"
           sleep 2
           choosedevs;;
esac

typeset -u -Z4 DEV1
typeset -u -Z4 DEV2

if [ ${NUMDEVS} -eq 1 ]
then
        print -n "Please enter the device number: "
	read DEV1
	DEV1TMP=0`echo ${DEV1}`
	DEV1=${DEV1TMP}
	if grep ^`echo ${DEV1}` ${NPLIST}
        then
                continue
        else
                print "${DEV1} is not in the noport list"
                sleep 3
		choosedevs
        fi

else
        print -n "Please enter the first device number in the range: "
	read DEV1
        print -n "Please enter the last device number in the range: "
	read DEV2
	DEV1TMP=0`echo ${DEV1}`
	DEV1=${DEV1TMP}
	DEV2TMP=0`echo ${DEV2}`
	DEV2=${DEV2TMP}
        DDEV1=$((16#${DEV1}))
        DDEV2=$((16#${DEV2}))
        let CHKDEV=DDEV2-DDEV1+1
        if [ ${CHKDEV} -ne ${NUMDEVS} ]
        then
                clear
                print "Device range ${DEV1}:${DEV2} is not a range of ${NUMDEVS} devices"
                sleep 5
		choosedevs
        fi
	if grep ^`echo ${DEV1}` ${NPLIST}
        then
                continue
        else
                print "${DEV1} is not in the noport list"
                sleep 3
		choosedevs
        fi
	if grep ^`echo ${DEV2}` ${NPLIST}
        then
                continue
        else
                print "${DEV2} is not in the noport list"
                sleep 3
		choosedevs
        fi

	typeset -i CHKNUM
	CHKNUM=`awk '/^'${DEV1}'/, /^'${DEV2}'/' ${NPLIST} | wc -l`
	print ${CHKNUM}

	if [ ${CHKNUM} -ne ${NUMDEVS} ]
	then
		print "There is a gap in the range ${DEV1}:${DEV2}"
		print "Please allocate this request manually"
                sleep 5
		REASON="device range selected is not contiguous"
                outro
	fi
fi

confirmation
}


confirmation () {
clear
print "You have entered the following information:-"
print
print "Hostname is ${HOSTNAME}"
print "Operating System is ${OS}"
print "LPFC0 has a WWPN of ${LPFC0} and is zoned to FA ${DIR1}:${PORT1}"
print "LPFC1 has a WWPN of ${LPFC1} and is zoned to FA ${DIR2}:${PORT2}"

if [ ${NUMDEVS} -eq 1 ]
then
	print "Device ${DEV1} will be used to provide ${CAPACITY}GB of storage"
else
	print "Devices ${DEV1}:${DEV2} will be used to provide ${CAPACITY}GB of storage"
fi

typeset -l CONFIRM
print
print -n "Is this correct? [ y/n/q ] : "
read CONFIRM

case ${CONFIRM} in
	y) ALLDONE=Y
	   continue;;
	n) ALLDONE=N
	   makechanges;;
	q) REASON="user selected quit"
	   outro;;
	*) print "Invalid selection"
	   sleep 2
	   clear
	   confirmation;;
esac 

doit
}

makechanges () {
clear
print "What would you like to change?"
print
print "1) Hostname: ${HOSTNAME}"
print "2) Operating System: ${OS}"
print "3) WWPN of LPFC0: ${LPFC0}"
print "4) WWPN of LPFC1: ${LPFC1}"
print "5) Port pair: ${PORTPAIR}"
print "6) Number of devices: ${NUMDEVS}"
print
print -n "Enter a number from 1 to 6 or q to quit: "
read CHANGE

case ${CHANGE} in
	1) enterhost;;
	2) enteros;;
	3) enterwwn0;;
	4) enterwwn1;;
	5) enterportpair;;
	6) numdevs;;
	q) REASON="user selected quit"
	   outro;;
	*) print "Invalid selection"
	   sleep 2
	   makechanges;;
esac
}

fastpolicy () {
let ATTEMPT=ATTEMPT+1
print
print "Associating SG ${HOSTNAME} with FAST policy \"Production\" (Attempt ${ATTEMPT})"
COMMAND="symfast -sid ${SID} -fp_name Production associate -sg ${HOSTNAME} -priority 2"
DATE=`date +'%b%d %H:%M:%S'`
print "${DATE} ${SOEID} Running command \"${COMMAND}\"" >> ${LOGFILE}
${PBRUN} ${COMMAND}
ERRCODE=$?
errchk
print "SG ${HOSTNAME} associated with FAST policy \"Production\""
}

doit () {
clear
print "Creating Initiator Group ${HOSTNAME}..."
COMMAND="symaccess -sid ${SID} create -name ${HOSTNAME} -type init -wwn ${LPFC0}"
DATE=`date +'%b%d %H:%M:%S'`
print "${DATE} ${SOEID} Running command \"${COMMAND}\"" >> ${LOGFILE}
${PBRUN} ${COMMAND}
ERRCODE=$?
errchk
COMMAND="symaccess -sid ${SID} add -name ${HOSTNAME} -type init -wwn ${LPFC1}"
DATE=`date +'%b%d %H:%M:%S'`
print "${DATE} ${SOEID} Running command \"${COMMAND}\"" >> ${LOGFILE}
${PBRUN} ${COMMAND}
ERRCODE=$?
errchk
print "Initiator Group ${HOSTNAME} successfully created"

print
print "Creating Storage Group ${HOSTNAME}..."
if [ ${NUMDEVS} -eq 1 ]
then
	DATE=`date +'%b%d %H:%M:%S'`
	COMMAND="symaccess -sid ${SID} create -name ${HOSTNAME} -type stor -dev ${DEV1}"
	print "${DATE} ${SOEID} Running command \"${COMMAND}\"" >> ${LOGFILE}
	${PBRUN} ${COMMAND}
ERRCODE=$?
errchk
else
	DATE=`date +'%b%d %H:%M:%S'`
	COMMAND="symaccess -sid ${SID} create -name ${HOSTNAME} -type stor -dev ${DEV1}:${DEV2}"
	print "${DATE} ${SOEID} Running command \"${COMMAND}\"" >> ${LOGFILE}
	${PBRUN} ${COMMAND}
ERRCODE=$?
errchk
fi
print "Storage Group ${HOSTNAME} successfully created"

print
print "Creating Masking view ${HOSTNAME}..."
COMMAND="symaccess -sid ${SID} create view -name ${HOSTNAME} -ig ${HOSTNAME} -sg ${HOSTNAME} -pg ${PORTPAIR}"
DATE=`date +'%b%d %H:%M:%S'`
print "${DATE} ${SOEID} Running command \"${COMMAND}\"" >> ${LOGFILE}
${PBRUN} ${COMMAND}
ERRCODE=$?
errchk
print "Masking view ${HOSTNAME} successfully created"

print
print "Creating HBA alias for LPFC0..."
COMMAND="symaccess -sid ${SID} rename -wwn ${LPFC0} -alias ${HOSTNAME}/lpfc0"
DATE=`date +'%b%d %H:%M:%S'`
print "${DATE} ${SOEID} Running command \"${COMMAND}\"" >> ${LOGFILE}
print ${COMMAND} >> ${ALIASLOG}
${PBRUN} ${COMMAND}
ERRCODE=$?
errchk
print "HBA alias for LPFC0 successfully created"

print
print "Creating HBA alias for LPFC1..."
COMMAND="symaccess -sid ${SID} rename -wwn ${LPFC1} -alias ${HOSTNAME}/lpfc1"
DATE=`date +'%b%d %H:%M:%S'`
print "${DATE} ${SOEID} Running command \"${COMMAND}\"" >> ${LOGFILE}
print ${COMMAND} >> ${ALIASLOG}
${PBRUN} ${COMMAND}
ERRCODE=$?
errchk
print "HBA alias for LPFC1 successfully created"

if [ "${SETSPC2BIT}" = "YES" ]
then
	print
	print "Setting SPC2 flag on IG ${HOSTNAME}..."
	COMMAND="symaccess -sid ${SID} -name ${HOSTNAME} -type init set ig_flags on spc2 -enable"
	DATE=`date +'%b%d %H:%M:%S'`
	print "${DATE} ${SOEID} Running command \"${COMMAND}\"" >> ${LOGFILE}
	${PBRUN} ${COMMAND}
	ERRCODE=$?
	errchk
	print "SPC2 flag set on IG ${HOSTNAME}"
fi

if [ "${SETOS2007BIT}" = "YES" ]
then
	print
	print "Setting OS2007 flag on IG ${HOSTNAME}..."
	COMMAND="symaccess -sid ${SID} -name ${HOSTNAME} -type init set ig_flags on os2007 -enable"
	DATE=`date +'%b%d %H:%M:%S'`
	print "${DATE} ${SOEID} Running command \"${COMMAND}\"" >> ${LOGFILE}
	${PBRUN} ${COMMAND}
	ERRCODE=$?
	errchk
	print "OS2007 flag set on IG ${HOSTNAME}"
fi

if [ "${SETDBIT}" = "YES" ]
then
	print
	print "Setting D bit flag on IG ${HOSTNAME}..."
	COMMAND="symaccess -sid ${SID} -name ${HOSTNAME} -type init set ig_flags on d -enable"
	DATE=`date +'%b%d %H:%M:%S'`
	print "${DATE} ${SOEID} Running command \"${COMMAND}\"" >> ${LOGFILE}
	${PBRUN} ${COMMAND}
	ERRCODE=$?
	errchk
	print "D bit flag set on IG ${HOSTNAME}"
fi

if [ "${SETVBIT}" = "YES" ]
then
	print
	print "Setting V bit flag on IG ${HOSTNAME}..."
	COMMAND="symaccess -sid ${SID} -name ${HOSTNAME} -type init set ig_flags on v -enable"
	DATE=`date +'%b%d %H:%M:%S'`
	print "${DATE} ${SOEID} Running command \"${COMMAND}\"" >> ${LOGFILE}
	${PBRUN} ${COMMAND}
	ERRCODE=$?
	errchk
	print "V bit flag set on IG ${HOSTNAME}"
fi

if [ "${FAST}" = "YES" ]
then
	fastpolicy
fi

sleep 2
DAREVIEWED=N

review
}

review () {
clear
print
print "Please review the changes you have made"
print
print "1) Device Assignments"
print "2) Initiator Group"
print "3) Storage Group"
print "4) Masking View"
print
print -n "Please select an item to review or q to quit: "
read CHOICE

case ${CHOICE} in
	1) if [ ${NUMDEVS} -eq 1 ]
	   then
		DEV2=${DEV1}
	   fi
	   ${PBRUN} symaccess -sid ${SID} list assign -dev ${DEV1}:${DEV2} | sed -e 's:'${LPFC0}':'${HOSTNAME}'/lpfc0:' -e 's:'${LPFC1}':'${HOSTNAME}'/lpfc1:'
	   print
	   print "If you see any WWN's above as well as ${HOSTNAME} please recheck storage assignments"
	   print -n "Press enter to continue..."
	   read ENTER
	   if [ ! -z ${REVIEWED} ]
	   then
		REVIEWED="${REVIEWED} / Dev Assigns"
	   else
		REVIEWED="Dev Assigns"
	   fi
	   clear
	   DAREVIEWED=Y
	   review;;
	2) ${PBRUN} symaccess -sid ${SID} show ${HOSTNAME} -type init -detail
	   print -n "Press enter to continue..."
	   read ENTER
	   if [ ! -z ${REVIEWED} ]
	   then
		REVIEWED="${REVIEWED} / IG"
	   else
		REVIEWED="IG"
	   fi
	   clear
	   review;;
	3) ${PBRUN} symaccess -sid ${SID} show ${HOSTNAME} -type stor
	   print -n "Press enter to continue..."
	   read ENTER
	   if [ ! -z ${REVIEWED} ]
	   then
		REVIEWED="${REVIEWED} / SG"
	   else
		REVIEWED="SG"
	   fi
	   clear
	   review;;
	4) ${PBRUN} symaccess -sid ${SID} show view ${HOSTNAME}
	   print -n "Press enter to continue..."
	   read ENTER
	   if [ ! -z ${REVIEWED} ]
	   then
		REVIEWED="${REVIEWED} / View"
	   else
		REVIEWED="View"
	   fi
	   clear
	   review;;
	*) if [ ${DAREVIEWED} = "N" ]
	   then
		print "You must review Device Assignments before quitting"
		sleep 3
		review
	   fi
           REASON="script has completed - ${REVIEWED} have been reviewed"
	   outro;;
esac
}

cleanup ()
{
if [ -f ${NPLIST} ]
then
        rm ${NPLIST}
fi

if [ -f ${TMPDIR}/logins0 ]
then
        rm ${TMPDIR}/logins0
fi

if [ -f ${TMPDIR}/logins1 ]
then
        rm ${TMPDIR}/logins1
fi
}

setsid
