#!/bin/sh

##########################################
#                                        
# Hitachi Fibre Channel Adapter RAS Tool 
#   for VMware ESX 5.0.0                 
#
# $Id: hfcvminfo 270 2011-06-21 05:07:07Z hsasaki $                                 
##########################################
TOOLNAME=hfcvminfo
HFCLDDNUM=128
VER="$Id: hfcvminfo 270 2011-06-21 05:07:07Z hsasaki $"

if [ `whoami` != "root" ]; then
  echo "root?"
  exit 1
fi

BIOSMODE=0
CURDIR=`pwd`
DIRNAME=$CURDIR
FORCE=0
HOSTNAME=`hostname`

while [ $# -gt 0 ]
do
	case $1 in
		-d) DIRNAME=$2
			shift
			shift
			;;
		-H) HOSTNAME=$2
			shift
			shift
			;;
		*)  echo "Usage : $TOOLNAME [-f] [-b] [-d <directory>] [-H <hostname>]"
			echo "        -d : specify log directory."
			echo "        -H : hostname."
			exit 1
			;;
	esac
done

DATETIME=`date +%Y%m%d%H%M%S`
PREDIR=$DIRNAME
DIRNAME=$DIRNAME/$TOOLNAME-$HOSTNAME-$DATETIME
FILENAME="$TOOLNAME.txt"
FULLNAME=$DIRNAME/$FILENAME

if test -d $DIRNAME ; then
  echo "cannot create directory '$DIRNAME' : Directory exists"
  exit 1
fi

if test -f $DIRNAME ; then
  echo "cannot create directory '$DIRNAME' : File exists"
  exit 1
fi

mkdir $DIRNAME

echo "$TOOLNAME $VER" > $FULLNAME
echo "" >> $FULLNAME
echo "====================" >> $FULLNAME
echo "=====   date   =====" >> $FULLNAME
echo "====================" >> $FULLNAME
date >> $FULLNAME


echo "====================" >> $FULLNAME
echo "===== file copy ====" >> $FULLNAME
echo "====================" >> $FULLNAME
# file copy
if [ -d /etc/cim/hitachi ]; then
	cp /etc/cim/hitachi/hfc_cim.conf $DIRNAME/ 2>> /dev/null
	cp /etc/cim/hitachi/hfc_provider.log $DIRNAME/ 2>> /dev/null
	cp /etc/cim/openwsman/hfc.conf $DIRNAME/ 2>> /dev/null
fi

echo "" >> $FULLNAME
echo "=======================================" >> $FULLNAME
echo "=====   cat /proc/scsi/hfcldd/*   =====" >> $FULLNAME
echo "=======================================" >> $FULLNAME
cat /proc/scsi/hfcldd/* >> $FULLNAME 2>> $FULLNAME

# "============================"
# "=====   dddump hfcldd* ====="
# "============================"
PROCDIR=/proc/scsi/hfcldd
RIDMAX=16

if [ -d $PROCDIR ]; then
    for file in `ls $PROCDIR`;  do
    	SDEVICE=`grep "Special file name" $PROCDIR/$file | awk '{if ($5 ~ hfcldd) print $5}'`
	CNT=0
	while [ $CNT -lt $RIDMAX ]
	do 
		CNTX=`echo $CNT | awk '{printf("%x",$1)}'`
		echo " Dumping $SDEVICE, rid : $CNT ($CNTX).."
		./vmwaredump $SDEVICE $CNTX $DIRNAME/dddu_$SDEVICE$CNT.txt > /dev/null
		CNT=`expr $CNT + 1`
	done
    done	 
fi

cd $PREDIR 
tar zcf $TOOLNAME-$HOSTNAME-$DATETIME.tar.gz $TOOLNAME-$HOSTNAME-$DATETIME 2> /dev/null
rm -rf $DIRNAME
cd $CURDIR
echo "$TOOLNAME create file : $DIRNAME.tar.gz"
