#! /bin/ksh
#
# Checks for SPC2 flag settings on DMX conencted hosts
#
##########################################################
# Set up variables
TMPDIR=/var/tmp
EXPORTDIR=/export/home/san/ac/spc2_report
#EXPORTDIR=/var/opt/san/ac
SIDLIST=${TMPDIR}/sidlist
FULLSIDLIST=${TMPDIR}/fullsidlist

pbrun symcfg list | grep Local | grep VMAX | awk '{print $1}' > ${FULLSIDLIST}

SIDIN=$1
if [ "${SIDIN}" = "" ]
then
	print "Usage: check_spc2-vmax.ksh <SID>|ALL"
	exit 1
elif [ "${SIDIN}" = "ALL" ]
then
	cat ${FULLSIDLIST} | cut -c9-12 > ${SIDLIST}
else
	print ${SIDIN} > ${SIDLIST}
fi

IGFILE=${TMPDIR}/ig
ALIASFILE=${TMPDIR}/alias
WWNFILE=${TMPDIR}/wwn
FLAGSFILE=${TMPDIR}/flags
SPC2FILE=${TMPDIR}/spc2
SIDFILE=${TMPDIR}/sids

# Start SID loop

for SID in `cat ${SIDLIST}`
do

# Print to screen
print "Beginning processing of VMAX${SID}"
FULLSID=`grep ${SID} ${FULLSIDLIST} | awk '{print $1}'`

# Setfile names
HEADER=${TMPDIR}/${SID}_header
OUTFILE=${TMPDIR}/${SID}_out
SORTEDOUT=${TMPDIR}/${SID}_out_sorted
CSVOUTFILE=${EXPORTDIR}/${SID}_spc2_report.csv
IGLIST=${TMPDIR}/${SID}_iglist
IGDETAIL=${TMPDIR}/${SID}_igdetail
IGTMP=${TMPDIR}/${SID}_igtmp

# Blank out files for looping
cat /dev/null > ${ALIASFILE}
cat /dev/null > ${WWNFILE}
cat /dev/null > ${FLAGSFILE}
cat /dev/null > ${SPC2FILE}
cat /dev/null > ${SIDFILE}
cat /dev/null > ${IGFILE}
cat /dev/null > ${IGDETAIL}
cat /dev/null > ${IGTMP}

# Setup file header
print "SymmID, IG, HBA Alias, WWN, Flag set?, SPC2," > ${HEADER}

# List IGs
pbrun symaccess -sid ${SID} list -type init | awk '{print $1}' | egrep -v "Symmetrix|Initiator|----" > ${IGLIST}

# Begin loop for each IG
for IG in `cat ${IGLIST}`
do
pbrun symaccess -sid ${SID} show ${IG} -type init -detail > ${IGTMP}
sed -e '1,9d' ${IGTMP} > ${IGDETAIL}

# Check whether cascaded or not
if grep Originator ${IGDETAIL} > /dev/null
then

# Not cascaded so parse file
while read LINE
do
	IDENT=`print ${LINE} | awk '{print $1}' | cut -d "_" -f 1`
	case ${IDENT} in
	Originator)
		WWN=`print ${LINE} | awk '{print $5}'`
		;;
	User-generated)
		ALIAS=`print ${LINE} | awk '{print $4}'`
		;;
	Port)
		FLAGSET=`print ${LINE} | awk '{print $5}'`
		if [ "${FLAGSET}" = "No" ]
		then
			SPC2="N/A"
		fi
		;;
	Enabled)
		FLAG=`print ${LINE} | awk '{print $3}' | cut -d "_" -f 1`
		if [ "${FLAG}" = "SPC2" ]
		then
			SPC2=Yes
		else
			SPC2=Other
		fi
		;;
	SPC2)
		SPC2=Yes
		;;
	Type)
		print "${WWN}," >> ${WWNFILE}
		print "${ALIAS}," >> ${ALIASFILE}
		print "${FLAGSET}," >> ${FLAGSFILE}
		print "${SPC2}," >> ${SPC2FILE}
		print "${FULLSID}," >> ${SIDFILE}
		print "${IG}," >> ${IGFILE}
		;;
	esac
done<${IGDETAIL}
else

# Is cascaded group so move on
	print "${FULLSID}," >> ${SIDFILE}
	print "${IG}," >> ${IGFILE}
	print "Cascaded," >> ${ALIASFILE}
	print "," >> ${WWNFILE}
	print "," >> ${FLAGSFILE}
	print "," >> ${SPC2FILE}
fi



# End IG Loop
done

# Build output files
paste ${SIDFILE} ${IGFILE} ${ALIASFILE} ${WWNFILE} ${FLAGSFILE} ${SPC2FILE} > ${OUTFILE}
sort ${OUTFILE} > ${SORTEDOUT}
cat ${HEADER} ${SORTEDOUT} > ${CSVOUTFILE}

# Print to screen
print "End of processing of VMAX${SID}"
print

# End SID loop
done
