diff --git a/xCAT-genesis-scripts/bin/doxcat b/xCAT-genesis-scripts/bin/doxcat index 0f39e1e89..a5a9ecb2b 100755 --- a/xCAT-genesis-scripts/bin/doxcat +++ b/xCAT-genesis-scripts/bin/doxcat @@ -422,7 +422,11 @@ while :; do logger -s -t $log_label -p local4.info "Poweroff..." poweroff -f else - logger -s -t $log_label -p local4.err "Unrecognized directive (dest=$dest)" + if [ "$dest" = error ]; then + logger -s -t $log_label -p local4.info "$destparameter" + else + logger -s -t $log_label -p local4.err "Unrecognized directive (dest=$dest)" + fi destiny='' dest='' delay=$((30+$RANDOM%270)) diff --git a/xCAT-genesis-scripts/bin/nextdestiny b/xCAT-genesis-scripts/bin/nextdestiny index 29b6c255f..086951c98 100755 --- a/xCAT-genesis-scripts/bin/nextdestiny +++ b/xCAT-genesis-scripts/bin/nextdestiny @@ -7,23 +7,30 @@ echo " 300 " > /tmp/destreq.xml if [ -f /tmp/destiny.xml ]; then rm /tmp/destiny.xml; fi -while [ ! -f /tmp/destiny.xml ] || grep error /tmp/destiny.xml; do - if [ -f /tmp/destiny.xml ]; then - timer=60 - while [ $timer -gt 0 ]; do - echo -en "Retrying in $timer seconds \r" >&2 - sleep 1 - timer=$(($timer-1)); - done - 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 '' /tmp/destiny.xml | awk -F'>' '{print $2}'|awk -F'<' '{print $1}'` +if [ -z "$DESTINY" ]; then + ERROR=`grep '' /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 diff --git a/xCAT-server/lib/xcat/plugins/destiny.pm b/xCAT-server/lib/xcat/plugins/destiny.pm index 54a7804c7..76f9d208c 100755 --- a/xCAT-server/lib/xcat/plugins/destiny.pm +++ b/xCAT-server/lib/xcat/plugins/destiny.pm @@ -389,10 +389,7 @@ sub setdestiny { ignorekernelchk => $ignorekernelchk, bootparams => \$bphash}, \&relay_response); if ($errored) { - my @myself = xCAT::NetworkUtils->determinehostname(); - my $myname = $myself[ (scalar @myself) - 1 ]; - # The callback function point to xcatd::build_response, it use dclone to clone data, but it can only accept a reference. The error msg here is a simple string, and will cause dclone failed. Seems to be string array can be used by dclone. - $callback->({ errorcode => [1], error => ["Some nodes failed to set up $state resources on server $myname, aborting"] }); + # The error messeage for mkinstall/mknetboot/mkstatelite had been output within relay_response function above, don't need to output more return; }