#!/bin/sh
# RemoteBatchPEGASUS:makeSerialTemplate
# SubmissionScripts/Distributor/Batch/PEGASUS/serial
#
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

TIMEPATH=
for timePath in /bin/time /usr/bin/time /usr/local/bin/time ; do
   if [ -x ${timePath} ] ; then
      TIMEPATH=${timePath}
      break
   fi
done

@@{SUBMISSIONSCRIPTCOMMANDS}

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

export LANG=en_US.UTF-8

gunzip @@{JOBID}_@@{INSTANCEID}_input.tar.gz
tar xf @@{JOBID}_@@{INSTANCEID}_input.tar transformations.yml
if [ -f transformations.yml ] ; then
   python3 << EOF
import yaml
with open('transformations.yml','r') as fp:
   user = yaml.load(fp,Loader=yaml.CSafeLoader)
with open("@@{JOBID}_@@{INSTANCEID}_tc.yml",'r') as fp:
   hub = yaml.load(fp,Loader=yaml.CSafeLoader)

hub['transformations'] += user['transformations']
if 'containers' in user:
   hub['containers'] = user['containers']

with open("@@{JOBID}_@@{INSTANCEID}_tc.yml",'w') as fp:
   yaml.dump(hub,fp)
EOF
   rm -f transformations.yml
fi
gzip @@{JOBID}_@@{INSTANCEID}_input.tar

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

@@{PREMANAGERCOMMANDS}
${TIMEPATH} --format "Command exited with status %x\nreal %e\nuser %U\nsys %S" -o @@{TIME_RESULTS} \
             @@{EXECUTABLE} --conf @@{INSTANCEDIRECTORY}/@@{JOBID}_@@{INSTANCEID}.pegasusrc \
             --sites local,@@{GRIDSITE} \
             --dir @@{SCRATCHDIRECTORY} \
             --relative-dir scratch \
             --relative-submit-dir work \
             --output-site local \
             @@{ARGUMENTS} --submit \
             @@{DAX} < /dev/null
exitStatus=$?

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
@@{POSTMANAGERCOMMANDS}

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

exit ${exitStatus}
