#!/bin/bash
# RemoteWorkflowPEGASUS:makeWorkflowTemplate
# SubmissionScripts/Distributor/Workflow/PEGASUS/plan
#
exitStatus=0

mkdir -p @@{INSTANCEDIRECTORY}/work
mkdir -p @@{SCRATCHDIRECTORY}/work
mkdir -p @@{INSTANCEDIRECTORY}/InProcessResults

cat > @@{INSTANCEDIRECTORY}/work/pegasusSetup.sh << EOF
. @@{USESETUP}
use -e -r pegasus-@@{PEGASUSVERSION}
EOF
. @@{INSTANCEDIRECTORY}/work/pegasusSetup.sh

#Discarded Arguments      = @@{DISCARDED}
#Not Recognized Arguments = @@{NOTRECOGNIZED}

export LANG=en_US.UTF-8

date +"%s" > @@{TS_START}

@@{PREMANAGERCOMMANDS}
TIMEPATH=
if [ -n "@@{TIMEPATHS}" ] ; then
   for timePath in @@{TIMEPATHS} ; do
      if [ -x ${timePath} ] ; then
         TIMEPATH=${timePath}
         break
      fi
   done
fi

if [ -n "${TIMEPATH}" ] ; then
   ${TIMEPATH} --format "Command exited with status %x\nreal %e\nuser %U\nsys %S" -o @@{TIME_RESULTS} \
                @@{EXECUTABLE} --conf @@{INSTANCEDIRECTORY}/@@{JOBID}.pegasusrc \
                               --sites @@{GRIDSITE} \
                               --dir @@{SCRATCHDIRECTORY} \
                               --relative-dir scratch \
                               --relative-submit-dir work \
                               --output-site local \
                               @@{ARGUMENTS} --submit \
                               @@{DAX} < /dev/null
   exitStatus=$?
else
   { time -p @@{EXECUTABLE} --conf @@{INSTANCEDIRECTORY}/@@{JOBID}.pegasusrc \
                            --sites @@{GRIDSITE} \
                            --dir @@{SCRATCHDIRECTORY} \
                            --relative-dir scratch \
                            --relative-submit-dir work \
                            --output-site local \
                            @@{ARGUMENTS} --submit \
                            @@{DAX} < /dev/null ; } \
                 > @@{TIME_RESULTS} 2>&1
   exitStatus=$?
   echo "Command exited with status ${exitStatus}" >> @@{TIME_RESULTS}
fi
@@{POSTMANAGERCOMMANDS}

if [ ${exitStatus} -eq 0 ] ; then
   dagmanPath=$(which pegasus-dagman)
   clusterId=$(condor_q -constraint "Iwd=?=\"@@{SCRATCHDIRECTORY}/work\"" \
                        -constraint "Cmd=?=\"${dagmanPath}\"" -autoformat ClusterId)
   if [ -n "${clusterId}" ] ; then
      echo "cluster ${clusterId}"
   fi
fi

date +"%s" > @@{TS_FINISH}

exit ${exitStatus}
