#!/bin/ksh
# IBM_PROLOG_BEGIN_TAG 
# This is an automatically generated prolog. 
#  
# 61haes_r714 src/43haes/usr/sbin/cluster/events/utils/cl_tape_resource_release.sh 1.13 
#  
# 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 
# @(#)84  1.13  src/43haes/usr/sbin/cluster/events/utils/cl_tape_resource_release.sh, hacmp.sharedtape, 61haes_r714 4/24/08 19:21:51

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

#########################################################################
#									#
#	Name:		cl_tape_resource_release			#
#									#
#	Description:	This script is called in order to 		#
#			execute a 'stop' script	(if specified)		#
#			and perform a SCSI 'release'			#
#			on a specified tape device			#
#			for a given tape resource.			#
#									#
#	Called by:	cl_tape_resource_release_multi			#
#									#
#	Calls to:	cltape_resource_release				#
#			tape-stop script specified on command line	#
#									#
#	Arguments:	tape_resource_list				#
#			tape_stop_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 6221 "Usage: $PROGNAME  tape_device_name  [tape_stop_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_STOP_SCRIPT=$2
   else	TAPE_STOP_SCRIPT=
   fi

# IFF there is a tape-stop script,
# execute <tape stop script> <tape device name>
# If unsuccessful,
# 	log an error and return status.
#
if [ ! -z "${TAPE_STOP_SCRIPT}" ]
   then	$TAPE_STOP_SCRIPT  $TAPE_DEVICE_NAME
	STATUS=$?
	if [ $STATUS -ne 0 ]
	   then cl_log 6222 \
		"Tape stop script '${TAPE_STOP_SCRIPT}' for '${TAPE_DEVICE_NAME}' returned ${STATUS}" \
			$TAPE_STOP_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

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

	exit $STATUS
	fi


# Return success.
#
exit 0
