diff --git a/xCAT/postscripts/xcatflowrequest b/xCAT/postscripts/xcatflowrequest new file mode 100755 index 000000000..79112ca68 --- /dev/null +++ b/xCAT/postscripts/xcatflowrequest @@ -0,0 +1,31 @@ +#!/bin/bash +# IBM(c) 2013 EPL license http://www.eclipse.org/legal/epl-v10.html +# This routine when called, contacts xcatd. It will return to the caller when xcatd is +# ready to process the request +# It is called by xcatdsklspost before calling getpostscripts.awk +# it is called by remoteshell before calling getcredentials.awk +# +exec 13<>/dev/udp/$1/$2 +echo "resourcerequest: xcatd" >&13 +parpid=$$ +touch /tmp/goahead.$parpid +touch /tmp/killme.$parpid +exec 2> /dev/null +while ! grep 'resourcerequest: ok' /tmp/goahead.$parpid > /dev/null; do + ( + echo "resourcerequest: xcatd" >&13 + exec 14<>/proc/self/stat + read mystat<&14 + mypid=$(echo $mystat|cut -d " " -f 4) + (sleep $(((RANDOM%60)+120)).$((RANDOM%50)); if [ -f /tmp/killme.$parpid ]; then kill -TERM $mypid; fi) & + echo $! > /tmp/sleeperpid.$parpid + exec awk '{print $0 > "/tmp/goahead.'$parpid'";exit}' <&13 + ) +done +sleeper=$(cat /tmp/sleeperpid.$parpid) +sleeper=$(ps -ef|awk "\$3==$sleeper"|awk '{print $2}') +kill -TERM $sleeper +rm /tmp/goahead.$parpid +rm /tmp/sleeperpid.$parpid +rm /tmp/killme.$parpid +