begin restructure for updatestatus support

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@14331 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
lissav 2012-11-14 18:29:37 +00:00
parent d3c2e691d3
commit 1ae545f081

View File

@ -1139,7 +1139,7 @@ sub updatenode
#-------------------------------------------------------------------------------
=head3 updatenoderunps - performs updatenode -P
=head3 updatenoderunps - run postscripts or the updatenode -P option
Arguments: request
Returns:
@ -1201,6 +1201,7 @@ sub updatenoderunps
if ($::SETSERVER)
{
$args1 = [
"--nodestatus",
"-s",
"-v",
"-e",
@ -1212,6 +1213,7 @@ sub updatenoderunps
{
$args1 = [
"--nodestatus",
"-s",
"-v",
"-e",
@ -1285,12 +1287,12 @@ sub updatenoderunps
if ($::SETSERVER)
{
$cmd =
"XCATBYPASS=Y $::XCATROOT/bin/xdsh $nodestring -s -v -e $installdir/postscripts/xcataixpost -M $snkey -c $mode '$postscripts' 2>&1";
"XCATBYPASS=Y $::XCATROOT/bin/xdsh --nodestatus $nodestring -s -v -e $installdir/postscripts/xcataixpost -M $snkey -c $mode '$postscripts' 2>&1";
}
else
{
$cmd =
"XCATBYPASS=Y $::XCATROOT/bin/xdsh $nodestring -s -v -e $installdir/postscripts/xcataixpost -m $snkey -c $mode '$postscripts' 2>&1";
"XCATBYPASS=Y $::XCATROOT/bin/xdsh --nodestatus $nodestring -s -v -e $installdir/postscripts/xcataixpost -m $snkey -c $mode '$postscripts' 2>&1";
}
if ($::VERBOSE)
@ -1402,10 +1404,6 @@ sub updatenodesyncfiles
}
}
#array of nodes failed to sync
my @failednodes=();
#array of successfully synced nodes
my @successfulnodes=();
my $numberofsynclists=0;
# Check the existence of the synclist file
if (%syncfile_node)
@ -1464,57 +1462,22 @@ sub updatenodesyncfiles
},
$subreq, -1,1);
my @userinfo=();
# determine if the sync was successful or not
foreach my $line (@$output) {
if($line =~ /^\s*(\S+)\s*:\s*Remote_command_successful/)
{
my ($node,$info) = split (/:/, $line);
push(@successfulnodes,$node);
}
elsif($line =~ /^\s*(\S+)\s*:\s*Remote_command_failed/)
{
my ($node,$info)= split (/:/, $line);
push(@failednodes,$node);
}
else
{
push(@userinfo,$line); # user data
}
}
# output user data
if (@userinfo) {
foreach my $line (@userinfo) {
my $rsp = {};
$rsp->{data}->[0] = $line;
$callback->($rsp);
}
}
# build the list of good and bad nodes
&buildnodestatus(\@$output,$callback);
}
# if we have more than 1 synclist file, then we need
# to fix up the list of what failed and what succeeded
# If either failed the node is marked failed
if ($numberofsynclists > 1) {
my %m=();
my %n=();
for(@failednodes)
{
$m{$_}++;
}
for(@successfulnodes)
{
$m{$_}++ || $n{$_}++;
}
@successfulnodes=keys %n;
}
#set the nodelist.updatestatus according to the xdcp result
if(@successfulnodes)
if(@::SUCCESSFULLNODES)
{
my $stat="synced";
xCAT::TableUtils->setUpdateStatus(\@successfulnodes, $stat);
xCAT::TableUtils->setUpdateStatus(\@::SUCCESSFULLNODES, $stat);
}
if(@::FAILEDNODES)
{
my $stat="notsynced";
xCAT::TableUtils->setUpdateStatus(\@::FAILEDNODES, $stat);
}
@ -1533,7 +1496,64 @@ sub updatenodesyncfiles
return;
}
#-------------------------------------------------------------------------------
=head3 buildnodestatus - Takes the output of the updatenode run
and builds a global array of good node and one of bad node
output the remaining user info
Arguments: output,callback
Globals @::GOODNODES, @::BADNODES
=cut
#-----------------------------------------------------------------------------
sub buildnodestatus
{
my $output = shift;
my $callback = shift;
my @userinfo=();
# determine if the sync was successful or not
foreach my $line (@$output) {
if($line =~ /^\s*(\S+)\s*:\s*Remote_command_successful/)
{
my ($node,$info) = split (/:/, $line);
push(@::SUCCESSFULLNODES,$node);
}
elsif($line =~ /^\s*(\S+)\s*:\s*Remote_command_failed/)
{
my ($node,$info)= split (/:/, $line);
push(@::FAILEDNODES,$node);
}
else
{
push(@userinfo,$line); # user data
}
}
# output user data
if (@userinfo) {
foreach my $line (@userinfo) {
my $rsp = {};
$rsp->{data}->[0] = $line;
$callback->($rsp);
}
}
#If in failed remove from succeeded and make sure no duplicates
my %m=();
my %n=();
for(@::FAILEDNODES)
{
$m{$_}++;
}
for(@::SUCCESSFULLNODES)
{
$m{$_}++ || $n{$_}++;
}
@::SUCCESSFULLNODES=keys %n;
return;
}
#-------------------------------------------------------------------------------
=head3 updatenodesoftware - software updates updatenode -S