#!/bin/bash
if [ -z "$XCATDEST" ]; then
	XCATDEST=$1
fi
echo "<xcatrequest>
<command>nextdestiny</command>
<callback_port>300</callback_port>
</xcatrequest>" > /tmp/destreq.xml
if [ -f /tmp/destiny.xml ]; then rm /tmp/destiny.xml; fi
timer=0
while [ ! -f /tmp/destiny.xml ]; do
	while [ $timer -gt 0 ]; do
		echo -en  "No destiny command received, retrying in $timer seconds  \r" >&2
		sleep 1
		timer=$(($timer-1));
	done
	echo "                                                         " >&2;
	if [ -f /etc/xcat/cert.pem -a -f /etc/xcat/certkey.pem ]; then #use client cert if available
		cat /tmp/destreq.xml | openssl s_client -key /etc/xcat/certkey.pem -cert /etc/xcat/cert.pem -connect $XCATDEST -quiet 2> /dev/null > /tmp/destiny.xml
	else
		cat /tmp/destreq.xml | openssl s_client -connect $XCATDEST -quiet 2> /dev/null > /tmp/destiny.xml
	fi
	timer=60
done
rm /tmp/destreq.xml
DESTINY=`grep '<destiny>' /tmp/destiny.xml | awk -F'>' '{print $2}'|awk -F'<' '{print $1}'`
if [ -z "$DESTINY" ]; then
    ERROR=`grep '<error>' /tmp/destiny.xml | awk -F'>' '{print $2}'|awk -F'<' '{print $1}'`
    if [ ! -z "$ERROR" ]; then
        DESTINY="error=$ERROR"
    else
        DESTINY="error=No destiny command received"
    fi
fi
rm /tmp/destiny.xml
echo $DESTINY