#!/usr/bin/ksh
# IBM_PROLOG_BEGIN_TAG 
# This is an automatically generated prolog. 
#  
# bos720 src/bos/usr/lib/nim/methods/c_snap.sh 1.3.1.1 
#  
# Licensed Materials - Property of IBM 
#  
# Restricted Materials of IBM 
#  
# COPYRIGHT International Business Machines Corp. 2008,2010 
# All Rights Reserved 
#  
# US Government Users Restricted Rights - Use, duplication or 
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp. 
#  
# IBM_PROLOG_END_TAG 
# @(#)66    1.3.1.1  src/bos/usr/lib/nim/methods/c_snap.sh, cmdnim, bos720  3/25/10  16:48:22
#
# include common NIM shell defines/functions
NIMPATH=${0%/*}
NIMPATH=${NIMPATH%/*}
[[ ${NIMPATH} = ${0} ]] && NIMPATH=/usr/lpp/bos.sysmgt/nim
NIM_METHODS="${NIMPATH}/methods"
. ${NIM_METHODS}/c_sh_lib
#${ECHO} $0 $@  

#---------------------------- local defines     --------------------------------

#---------------------------- module globals    --------------------------------
basename $0
REQUIRED_ATTRS="step location"
OPTIONAL_ATTRS="server max_dumps snap_flags client"


#*---------------------------- c_showres           ----------------------------
#
# NAME: c_showres
#
# FUNCTION:
#    sets up remote access to resources, then runs a command to show
#    information about the resource
#
# EXECUTION ENVIRONMENT:
#
# NOTES:
#
# RECOVERY OPERATION:
#
# DATA STRUCTURES:
#    parameters:
#    global:
#
# RETURNS: (int)
#    0              = no errors
#    >0              = failure
#
# OUTPUT:
#-----------------------------------------------------------------------------*/

# signal processing
trap cleanup 0
trap err_signal 1 2 11 15

# NIM initialization
nim_init

# initialize local variables
typeset c=""
typeset client=""

# set parameters from command line
while getopts :a:qv c
do
  case ${c} in

    a)    # validate the attr ass
        parse_attr_ass "${OPTARG}"

        # include the assignment for use in this environment
        eval ${variable}=\"${value}\"
    ;;

    q)    # show attr info
        cmd_what
        exit 0
    ;;

    v)    # verbose mode (for debugging)
        set -x
        for i in $(typeset +f)
        do
          typeset -ft $i
        done
    ;;

    \?)   # unknown option
        error ${ERR_BAD_OPT} ${OPTARG}
    ;;

  esac
done

# check for missing attrs
ck_attrs

if [[ ${step} == "1" ]]
then
	# ok need to somwhat keep up with snap here.
	snap_flags=${snap_flags:="-a"}
	snap_flags2=`getopt AaDxT:d:em:fLgGklcnNo:pP:rRv:sBStXiIbwhHCO: $snap_flags`
	if [ $? -ne 0 ]
	then
		${SNAP} >&2
		exit 4
	fi
	snap_flags2=`${ECHO} $snap_flags2 |  ${SED} -e 's/-c//g' -e 's/--//g'`

	${MKDIR} /tmp/dump.$$
	${MOUNT} $server:$location /tmp/dump.$$
	mountrc=$?

	if [ $mountrc -ne "0" ]
	then
		${RMDIR} /tmp/dump.$$
		exit $mountrc
	fi

	cd /tmp/dump.$$/
	if [ $? -ne 0 ]
	then
		${UMOUNT} /tmp/dump.$$
		${RMDIR}mdir /tmp/dump.$$
		exit 1
	fi

	NUM=`${LS} -tra snap.* 2>/dev/null | wc -l`

	while [ ${NUM} -ge ${max_dumps} ]
	do
		TFILE=`${LS} -tra snap.* 2>/dev/null | line`
        	${RM} $TFILE
        	NUM=`${LS} -tra snap.* 2>/dev/null | wc -l`
	done
	
	${SNAP} $snap_flags2 -Z -d `pwd`/ibmsupt >/dev/null 2>&1

	snaprc=$?

	cd /tmp
	
	${UMOUNT} /tmp/dump.$$
	${RMDIR} /tmp/dump.$$

	exit $snaprc

fi

if [[ ${step} == "2" ]]
then

	cd $location	
	if [ $? -ne 0 ]
	then
		exit 1
	fi

	SNAPCOPYDATE=`date +%Y.%m.%d.%H:%M:%S`

	DUMPFILE=`${LS} -tra dump.* 2>/dev/null | line`
	if [[ -n $DUMPFILE ]]
 	then	
		${MV} $DUMPFILE ./ibmsupt/dump/
	else
		${LN} -f dump ./ibmsupt/dump/dump.$SNAPCOPYDATE >/dev/null 2>&1
	fi

	${SNAP} -c -d `pwd`/ibmsupt
	snaprc=$?

	if [[ $snaprc -eq 0 ]]; then
		${MV} ibmsupt/snap.pax.Z snap.pax.$SNAPCOPYDATE.Z

		${ECHO} "y" | ${SNAP} -r -d `pwd`/ibmsupt 
	
		${ECHO} $server:$location/snap.$SNAPCOPYDATE.Z
	fi

	exit $snaprc
fi

exit 0
