#!/bin/ksh
#
# Script to report on SRDF Group usage
# Script will run against all SRDF enabled arrays at both RDC and FDC
#

# BEGIN - Set up environment and initialise variables
. /export/home/san/.profile
tmpdir=/export/home/san/capacity/tmp
repdir=/export/home/san/capacity/reports
typeset -i numrdfg maxrdfg numfreerdfg numdevs numrdfgdevs numrdfgnodevs
typeset -i avggb avgdev totaldev
maxrdfg=64
HOSTNAME=`uname -n`
# END - Set up environment and initialise variables

# BEGIN - Function to set output files
set_output_files()
{
SID_RDFLIST=${tmpdir}/${SID}_rdflist.tmp
SID_RDFG=${repdir}/${SID}_RDFG_per_RF.out
SID_GRP=${repdir}/${SID}_devices_per_RDFG.out
SID_CSV=${repdir}/${SID}_RDFG_report.csv
}
# END - Function to set output files

# BEGIN - Function to reset variables
var_reset ()
{
numrdfg=0
numfreerdfg=0
numdevs=0
numrdfgnodevs=0
numrdfgdevs=0
totaldev=0
avggb=0
avgdev=0
}
# END - Function to reset variables

# BEGIN - Set SIDs
SIDLIST="3452 3471 3720 3544 3550 3810"
# END - Set SIDs

# BEGIN - Loop for each array
for SID in ${SIDLIST}
do
	# BEGIN - Call functions
	set_output_files
	var_reset
	# END - Call functions

	# BEGIN - Clear down files that are appended to only
	cat /dev/null > ${SID_RDFG}
	cat /dev/null > ${SID_GRP}
	cat /dev/null > ${SID_CSV}
	# END - Clear down files that are appended to only

	# BEGIN - Loop for each RF
	for RF in 03D 04D 07D 08D 09D 10D 13D 14D
	do
		symcfg -sid ${SID} list -ra ${RF}|grep \(|cut -c56-58|sort > ${tmpdir}/${SID}_${RF}_groups.tmp
		numrdfg=`wc -l ${tmpdir}/${SID}_${RF}_groups.tmp|awk '{print $1}'`
		print "Symm${SID} RF-${RF} has ${numrdfg} groups" >> ${SID_RDFG}
	done
	# END - Loop for each RF

	# BEGIN - Generate list of groups on array
	cat ${tmpdir}/${SID}_*_groups.tmp | sort -u > ${tmpdir}/${SID}_groups.tmp
	# END - Generate list of groups on array


	# BEGIN - Check the outputs for each RF pair and report in CSV
	if [ -z `diff ${tmpdir}/${SID}_03D_groups.tmp ${tmpdir}/${SID}_14D_groups.tmp` ]
	then
		numrdfg=`grep 03D ${SID_RDFG}| awk '{print $4}'`
		print "Number of RDF Groups on RF-03D/RF-14D,${numrdfg}" >> ${SID_CSV}
	else
		print "Number of RDF Groups on RF-03D/RF-14D,ERROR" >> ${SID_CSV}
	fi

	if [ -z `diff ${tmpdir}/${SID}_04D_groups.tmp ${tmpdir}/${SID}_13D_groups.tmp` ]
	then
		numrdfg=`grep 04D ${SID_RDFG}| awk '{print $4}'`
		print "Number of RDF Groups on RF-04D/RF-13D,${numrdfg}" >> ${SID_CSV}
	else
		print "Number of RDF Groups on RF-04D/RF-13D,ERROR" >> ${SID_CSV}
	fi

	if [ -z `diff ${tmpdir}/${SID}_07D_groups.tmp ${tmpdir}/${SID}_10D_groups.tmp` ]
	then
		numrdfg=`grep 07D ${SID_RDFG}| awk '{print $4}'`
		print "Number of RDF Groups on RF-07D/RF-10D,${numrdfg}" >> ${SID_CSV}
	else
		print "Number of RDF Groups on RF-07D/RF-10D,ERROR" >> ${SID_CSV}
	fi

	if [ -z `diff ${tmpdir}/${SID}_08D_groups.tmp ${tmpdir}/${SID}_09D_groups.tmp` ]
	then
		numrdfg=`grep 08D ${SID_RDFG}| awk '{print $4}'`
		print "Number of RDF Groups on RF-08D/RF-09D,${numrdfg}" >> ${SID_CSV}
	else
		print "Number of RDF Groups on RF-08D/RF-09D,ERROR" >> ${SID_CSV}
	fi
	# END - Check the outputs for each RF pair and report in CSV

	# BEGIN - Report on number of groups on array
	symrdf -sid ${SID} list > ${SID_RDFLIST}

	numrdfg=`wc -l ${tmpdir}/${SID}_groups.tmp|awk '{print $1}'`
	numfreerdfg=maxrdfg-numrdfg

	for GRP in `cat ${tmpdir}/${SID}_groups.tmp|sed -e 's/ //'`
	do
		numdevs=`grep "R[12]:${GRP} " ${SID_RDFLIST}|wc -l`
		print "Group ${GRP} has ${numdevs} devices" >> ${SID_GRP}
		if [ ${numdevs} -eq 0 ]
		then
			numfreerdfg=numfreerdfg-1
			numrdfgnodevs=numrdfgnodevs+1
		fi
	done

	numrdfgdevs=numrdfg-numrdfgnodevs
	print "Number of RDF Groups configured,${numrdfg}" >> ${SID_CSV}
	print "Number of RDF Groups with devices,${numrdfgdevs}" >> ${SID_CSV}
	#print "Number of RDF Groups with no devices,${numrdfgnodevs}" >> ${SID_CSV}
	print "Number of available RDF Groups,${numfreerdfg}" >> ${SID_CSV}
	# END - Report on number of groups on array

	# BEGIN - Calculate average devices and capacity per group
	for NUM in `cat ${SID_GRP} | awk '{print $4}'`
	do
		totaldev=totaldev+NUM
	done

	avgdev=totaldev/numrdfgdevs
	avggb=avgdev*34

	print "Average number of devices per RDF Group,${avgdev}" >> ${SID_CSV}
	print "Average GB per RDF Group,${avggb}" >> ${SID_CSV}
	# END - Calculate average devices and capacity per group
	

done
# END - Loop for each array

# BEGIN  - Exit

# If being run on rdcsan-mgt1 copy outputs to SAN share
if [ ${HOSTNAME} = "rdcsan-mgt1" ]
then
	cp ${repdir}/*.csv /var/opt/san
elif [ ${HOSTNAME} = "rdcsan-mgt2" -o ${HOSTNAME} = "fdcsan-mgt1" -o ${HOSTNAME} = "fdcsan-mgt2" ]
then
	print "Please log on to rdcsan-mgt1 and run the following command:"
	print "scp ${HOSTNAME}:${repdir}/*.csv /var/opt/san"
fi

# Clean up temporary files
rm ${tmpdir}/*.tmp

return 0
# END - Exit
