defect 3819

This commit is contained in:
lissav 2013-10-10 11:25:36 -04:00
parent 4a04c8fb10
commit cd1c5414d6
2 changed files with 69 additions and 10 deletions

View File

@ -1251,6 +1251,12 @@ sub updatenoderunps
} else {
$nfsv4 = "no";
}
my $flowcontrol = 0;
my @fc =
xCAT::TableUtils->get_site_attribute("useflowcontrol");
if ($fc[0] && ($fc[0] =~ /1|Yes|yes|YES|Y|y/)) {
$flowcontrol = 1;
}
# if running postscript report status here, if requested.
if ((defined($request->{status})) && ($request->{status} eq "yes")) {
$::REPORTSTATUS="Y";
@ -1296,7 +1302,8 @@ sub updatenoderunps
}
my $args1;
# Note order of parameters to xcatdsklspost
#is important and cannot be changed
#is important and cannot be changed and calls in this routine and updatenodesoftware
# should be kept the same.
my $runpscmd;
if ($::SETSERVER){
@ -1306,6 +1313,11 @@ sub updatenoderunps
$runpscmd =
"$installdir/postscripts/xcatdsklspost $mode -m $snkey '$postscripts' --tftp $tftpdir --installdir $installdir --nfsv4 $nfsv4 -c"
}
# add flowcontrol flag
if ($flowcontrol == 1){
$runpscmd .= " -F";
}
# add verbose flag
if ($::VERBOSE){
$runpscmd .= " -V";
@ -1663,6 +1675,7 @@ sub updatenodesoftware
my $tftpdir = xCAT::TableUtils->getTftpDir();
my $localhostname = hostname();
my $rsp;
my $nfsv4 = "no"; # AIX only but set to keep the xcatdsklspost call the same for -F and -S
# Determine when to report status, do not report it here if -P is to run
if ((defined($request->{status})) && ($request->{status} eq "yes")) { # if status requested
if ($request->{rerunps} && $request->{rerunps}->[0] eq "yes") { # (-P) running postscripts
@ -1671,6 +1684,12 @@ sub updatenodesoftware
$::REPORTSTATUS="Y";
}
}
my $flowcontrol = 0;
my @fc =
xCAT::TableUtils->get_site_attribute("useflowcontrol");
if ($fc[0] && ($fc[0] =~ /1|Yes|yes|YES|Y|y/)) {
$flowcontrol = 1;
}
# this drives getdata to report status complete for software updatees
$::TYPECALL ="S";
@ -1696,6 +1715,9 @@ sub updatenodesoftware
# it's possible that the nodes could have diff server names
# do all the nodes for a particular server at once
# Note order of parameters to xcatdsklspost
#is important and cannot be changed and calls in this routine and updatenoderunps
# should be kept the same.
foreach my $snkey (keys %servernodes)
{
my $nodestring = join(',', @{$servernodes{$snkey}});
@ -1704,7 +1726,7 @@ sub updatenodesoftware
if ($::SETSERVER)
{
$cmd =
"$installdir/postscripts/xcatdsklspost 2 -M $snkey 'ospkgs,otherpkgs' --tftp $tftpdir" ;
"$installdir/postscripts/xcatdsklspost 2 -M $snkey 'ospkgs,otherpkgs' --tftp $tftpdir --installdir $installdir --nfsv4 $nfsv4 -c" ;
@ -1712,7 +1734,11 @@ sub updatenodesoftware
else
{
$cmd =
"$installdir/postscripts/xcatdsklspost 2 -m $snkey 'ospkgs,otherpkgs' --tftp $tftpdir";
"$installdir/postscripts/xcatdsklspost 2 -m $snkey 'ospkgs,otherpkgs' --tftp $tftpdir --installdir $installdir --nfsv4 $nfsv4 -c";
}
# add flowcontrol flag
if ($flowcontrol == 1){
$cmd .= " -F";
}
# add verbose flag
if ($::VERBOSE){

View File

@ -177,6 +177,14 @@ else
if [ ${12} = "-V" ]; then
export VERBOSE=1
fi
if [ ${12} = "-F" ]; then
export USEFLOWCONTROL=1
fi
fi
if [ $ARGNUM -gt 12 ]; then
if [ ${13} = "-V" ]; then
export VERBOSE=1
fi
fi
;;
3|4|6) MODE=$1;;
@ -192,6 +200,12 @@ if [ -n "$XCATDEBUG" ]; then
fi
fi
#echo "xcatpost = $xcatpost"
useflowcontrol=0
if [ $USEFLOWCONTROL = "1" ]; then
useflowcontrol=1
fi
# If on AIX node
if [ ! `uname` = Linux ]; then
@ -207,6 +221,7 @@ if [ ! `uname` = Linux ]; then
umount /xcatmnt
rmdir /xcatmnt
logger -t xCAT -p local4.err "Running xcataixpost $*"
# note not supporting -F or -V on AIX
echo "/$xcatpost/xcataixpost $1 $2 $3 '"$4"' $5 $6 $7 $8 $9 ${10} ${11}"
exec /$xcatpost/xcataixpost $1 $2 $3 "$4" $5 $6 $7 $8 $9 ${10} ${11}
exit
@ -474,25 +489,43 @@ fi
# We need to call getpostscript.awk .
if [ ! -x /$xcatpost/mypostscript ]; then
# first contact daemon xcatflowrequest <server> 3001
logger -t xCAT -p local4.info "xcatdsklspost: xcatflowrequest $SIP 3001"
/$xcatpost/xcatflowrequest $SIP 3001
if [ $useflowcontrol = "1" ]; then
# first contact daemon xcatflowrequest <server> 3001
logger -t xCAT -p local4.info "xcatdsklspost:sending xcatflowrequest $SIP 3001"
/$xcatpost/xcatflowrequest $SIP 3001
fi
/$xcatpost/getpostscript.awk | egrep '<data>' | sed -e 's/<[^>]*>//g'|egrep -v '^ *$'|sed -e 's/^ *//' > /$xcatpost/mypostscript;
if [ $useflowcontrol = "1" ]; then
logger -t xCAT -p local4.info "xcatdsklspost: received response /$xcatpost/xcatflowrequest $master 3001"
fi
MYCONT=`grep MASTER /$xcatpost/mypostscript`
MAX_RETRIES=10
RETRY=0
while [ -z "$MYCONT" ]; do
# not using flow control , need to sleep
if [ $useflowcontrol = "0" ]; then
let SLI=$RANDOM%10
let SLI=SLI+10
sleep $SLI
fi
RETRY=$(($RETRY+1))
if [ $RETRY -eq $MAX_RETRIES ]
then
break
fi
# contact daemon xcatflowrequest <server> 3001
logger -t xCAT -p local4.info "xcatdsklspost: xcatflowrequest $SIP 3001"
/$xcatpost/xcatflowrequest $SIP 3001
if [ $useflowcontrol = "1" ]; then
# contact daemon xcatflowrequest <server> 3001
logger -t xCAT -p local4.info "xcatdsklspost: sending xcatflowrequest $SIP 3001"
/$xcatpost/xcatflowrequest $SIP 3001
fi
/$xcatpost/getpostscript.awk | sed -e 's/<[^>]*>//g'|egrep -v '^ *$'|sed -e 's/^ *//' > /$xcatpost/mypostscript;
if [ $useflowcontrol = "1" ]; then
logger -t xCAT -p local4.info "xcatdsklspost: received response /$xcatpost/xcatflowrequest $master 3001"
fi
MYCONT=`grep MASTER /$xcatpost/mypostscript`
if [ ! -z "$MYCONT" ]; then
break;