#set -x

function pnode {
   jobs=`grep $1 prodser_list | wc -l`
   rjobs=`grep $1 prodser_list | grep run_history | wc -l`
   tjobs=`grep $1 prodser_list | grep transfer | wc -l`
   ojobs=`grep $1 prodser_list | grep -v run_history | grep -v transfer | wc -l`
   rwght=$(($rjobs * $rhistwght))
   twght=$(($tjobs * $transferwght))
   owght=$(($ojobs * $otherwght))
   totalwght=$(($rwght + $twght + owght))

   #echo "$jobs total jobs running on $1"
   #echo "$rjobs run_history jobs running on $1"
   #echo "$tjobs transfer jobs running on $1"
   #echo "weight of $totalwght on $1"

   if [ $totalwght -lt $best_jobs ] && [ $rjobs -lt $max_rh ]
   then
      best_node=$1
      best_jobs=$totalwght
   fi
}


DATA=/tmpnwprd/check_prodser.$$
mkdir -p $DATA
cd $DATA

host=`hostname | cut -c1`

##set nodes and initial weight
pnode1=${host}3n1
pnode2=${host}4n1
pnode3=${host}5n1
pnode4=${host}6n1
rhistwght=100
transferwght=26
otherwght=16
max_rh=2

#get list of jobs on CCS prodser nodes
llq -r %jn %h %c | grep prodser >prodser_list
#get node status
llstatus -f %n %sts | egrep "$pnode1\.|$pnode2\.|$pnode3\.|$pnode4\." >status_list

#echo "---------`date`---------"
#cat prodser_list
#cat status_list
#echo "-------------------------------------"

best_node=$pnode2 #random default node
best_jobs=100000 #random high number

#check if node is able to accept a job and determine weight
status=`grep $pnode1 status_list | egrep "Run|Idle"`
err=$?
if [ $err -eq 0 ]
then
  pnode $pnode1
fi
status=`grep $pnode2 status_list | egrep "Run|Idle"`
err=$?
if [ $err -eq 0 ]
then
  pnode $pnode2
fi
status=`grep $pnode3 status_list | egrep "Run|Idle"`
err=$?
if [ $err -eq 0 ]
then
  pnode $pnode3
fi
status=`grep $pnode4 status_list | egrep "Run|Idle"`
err=$?
if [ $err -eq 0 ]
then
  pnode $pnode4
fi

#echo "-------------------------------------"

#echo "**SUBMIT JOB TO $best_node**"
echo "$best_node"

#echo "------------------------------------------------------"
#echo
cd /tmpnwprd
rm -rf $DATA

exit
