#! /bin/sh -f
# set -x
# 
#  Cancel job running in FORK.
#  Input: grami file (same as Globus)
# 
#  Based on globus submission script for fork
#
# 

echo "----- starting cancel_fork_job -----" 1>&2

arg_file=$1
##############################################################
# Source the argument file. 
##############################################################
if [ -z "$arg_file" ] ; then
   echo "Arguments file should be specified" 1>&2
   exit 1
fi
if [ ! -f $arg_file ] ; then
   echo "Missing arguments file" 1>&2
   exit 1
fi
. $arg_file

if [ -z "$joboption_controldir" ] ; then
  joboption_controldir=`dirname "$arg_file"`
  if [ "$joboption_controldir" = '.' ] ; then
    joboption_controldir="$PWD"
  fi
fi
job_control_dir="$joboption_controldir"
if [ -z "$joboption_gridid" ] ; then
  joboption_gridid=`basename "$arg_file" | sed 's/^job\.\(.*\)\.grami$/\1/'`
fi

echo "Deleting job $joboption_gridid, local id $joboption_jobid" 1>&2

if [ -z "$joboption_jobid" ] ; then
  joboption_jobid=`cat "$job_control_dir/job.${joboption_gridid}.local" | grep '^localid=' | sed 's/^localid=//'`
fi

case X`cat "$job_control_dir/job.${joboption_gridid}.status"` in
    XINLRMS)
        if [ -z "$joboption_jobid" ] ; then
            echo "Can't find local id of job"
            exit 1
        fi
        kill -TERM $joboption_jobid
	sleep 5
	kill -KILL $joboption_jobid
        ;;

    XFINISHED | XDELETED)
        echo "Job already died, won't do anything" 1>&2
        ;;
    *)
        echo "Job is at unkillable state" 1>&2
        ;;
esac

echo "----- exiting cancel_fork_job -----" 1>&2
echo "" 1>&2
exit 0

