#!/bin/ksh
# IBM_PROLOG_BEGIN_TAG 
# This is an automatically generated prolog. 
#  
# 61haes_r714 src/43haes/usr/sbin/cluster/events/utils/cl_tape_resource_get.sh 1.12 
#  
# Licensed Materials - Property of IBM 
#  
# COPYRIGHT International Business Machines Corp. 1999,2008 
# 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 
# @(#)82  1.12  src/43haes/usr/sbin/cluster/events/utils/cl_tape_resource_get.sh, hacmp.sharedtape, 61haes_r714 4/24/08 19:21:40

#########################################################################
#
#   COMPONENT_NAME: EVENTS
#
#   FUNCTIONS: none
#
#########################################################################

#########################################################################
#									#
#	Name:		cl_tape_resource_get				#
#									#
#	Description:	This script is called in order to 		#
#			perform a SCSI 'reserve'			#
#			on a specified tape device			#
#			and execute a 'start' script (if specified) 	#
#			for a given tape resource.			#
#									#
#	Called by:	cl_tape_resource_get_multi			#
#									#
#	Calls to:	cltape_resource_get				#
#			tape-start script specified on command line	#
#									#
#	Arguments:	tape_device_name				#
#			tape_start_script				#
#									#
#	Returns:	0	success					#
#			1	failure					#
#			2	bad argument				#
#									#
#########################################################################

#########################################################################
#
# Main Starts Here
#
#########################################################################

[ "$VERBOSE_LOGGING" = "high" ] && set -x
PROGNAME=$(basename ${0})
PATH="$($(dirname ${0})/../../utilities/cl_get_path all)"
HA_DIR="$(cl_get_path)"

export PATH

STATUS=0

if [ $# -ne 1 -a $# -ne 2 ]
then
    cl_echo 6211 "Usage: $PROGNAME  tape_device_name  [tape_start_script]\n" $PROGNAME
    exit 2
fi

PROC_RES=false

# if JOB_TYPE is set, and it doesn't equal to "GROUP", then
# we are processing for process_resources
if [[ ${JOB_TYPE:-0} != 0 && $JOB_TYPE != "GROUP" ]]; then
   PROC_RES=true
fi

set -u

TAPE_DEVICE_NAME=$1
if [ $# -eq 2 ]
   then	TAPE_START_SCRIPT=$2
   else	TAPE_START_SCRIPT=
   fi

# Execute cltape_resource_reserve -f -d <tape device name>
#   i.e. do a forced reserve of the tape device.
# If unsuccessful,
#    log an error and return status.
#
cltime
cltape_resource_reserve -f -d $TAPE_DEVICE_NAME
STATUS=$?
if [ $STATUS -ne 0 ]
   then cl_log 6212 \
	"cltape_resource_reserve returned ${STATUS}" $STATUS
	cl_RMupdate resource_error $TAPE_DEVICE_NAME $PROGNAME

	if [[ $PROC_RES = true ]]; then
	    STATUS=11
	fi

	exit $STATUS
	fi

# IF there is a tape-start script,
# execute <tape start script> <tape device name>
# If unsuccessful,
#	log an error and return status.
#
if [ ! -z "${TAPE_START_SCRIPT}" ]
   then $TAPE_START_SCRIPT  $TAPE_DEVICE_NAME
	STATUS=$?
	if [ $STATUS -ne 0 ]
	   then cl_log 6213 \
		"Tape start script '${TAPE_START_SCRIPT}' for '${TAPE_DEVICE_NAME}' returned ${STATUS}" \
			$TAPE_START_SCRIPT  $TAPE_DEVICE_NAME  $STATUS
		cl_RMupdate resource_error $TAPE_DEVICE_NAME $PROGNAME	

		if [[ $PROC_RES = true ]]; then
		    STATUS=11
		fi

		exit $STATUS
		fi
	fi


# Return success.
#
exit 0
