#!/bin/bash
if [[ "$2" != "submit" || "$1" != *localhost || ! -f $3 ]]
then
  echo usage: ${0##*/} guillimin.clumeq.ca submit file_name
  exit 1
fi
mach=${1%.localhost}
HeadNode=$(hostname)
if [[ "$1" == *@* ]]
then
  DeferredQueue=${1%%@*}
  TheFile="$(true_path $3)"
  MY_JOB_ID="deferred@${DeferredQueue}"
  echo "# JOB ID = $MY_JOB_ID" >>${TheFile}
  mkdir -p $HOME/.job_queues/$DeferredQueue
  ln -s $3 $HOME/.job_queues/$DeferredQueue/$(date +%s)_$(hostname)_$$
  echo "Your job has been submitted to deferred queue $DeferredQueue by $HeadNode"
  exit 0
fi
QueuingTime=$(date +%s)
unset CrossSubmit
TheFile="$(readlink -e $3)"
[[ "$mach" != $(hostname) ]] && CrossSubmit=true
if [[ -n ${CrossSubmit} ]] ; then
  echo "INFO: job submitted from $(hostname) to $mach" 1>&2
  ssh $mach mkdir -p .ord_soumet.d/wrap/wrapped .ord_soumet.d/wrap/batch .ord_soumet.d/wrap/jobinfo
  CompanionFile=$(grep /wrapped/ ${3} | grep '^[.]'| sed 's/.[ ]*//')
  scp ${CompanionFile} ${mach}:${CompanionFile} && rm ${CompanionFile}
  ssh $mach touch .ord_soumet.d/wrap/jobinfo/.base_info
  MY_JOB_ID=$(sed -e "s/=JoBQuEuEd/=${QueuingTime}/" <$3 | ssh $mach qsub - | grep '[0-9]*[.].*$' | head -1 | sed 's/[.].*//' )
  MY_JOB_ID=ReMoTe.${MY_JOB_ID}
  rm $3
  Status=0
else
  MY_JOB_ID=$(sed -e "s/=JoBQuEuEd/=${QueuingTime}/" <${TheFile} | qsub - | grep '[0-9]*[.].*$' | head -1 | sed 's/[.].*//' )
  echo "MY_JOB_ID=$MY_JOB_ID"
  Status=0
fi

if [[ -z $MY_JOB_ID ]]
then
  echo "WARNING: msub on $HeadNode may not have been able to submit job ${TheFile} properly" 1>&2
  MY_JOB_ID="UNKNOWN"
fi
echo "Your job $MY_JOB_ID has been submitted by $HeadNode"
if [[ -f ${TheFile} ]] ;then
  echo "# JOB ID = $MY_JOB_ID" >>${TheFile}
#else
#  rm ${HOME}/.ord_soumet.d/wrap/jobinfo/$MY_JOB_ID
fi
exit ${Status}

