fix for defect 3552171

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/branches/2.7@13386 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
lissav 2012-08-01 12:30:29 +00:00
parent 31c60fc35f
commit 7442dd8413

View File

@ -72,7 +72,6 @@ sub preprocess_request
my $nodes = $req->{node};
my $service = "xcat";
my @requests;
$::tmpsyncsnfile = "/tmp/xcatrf.tmp";
$::RUNCMD_RC = 0;
@::good_SN;
@::bad_SN;
@ -90,7 +89,7 @@ sub preprocess_request
}
if ($var eq "DSH_RSYNC_FILE") # from -F flag
{ # if hierarchy,need to copy file to the SN
$::syncsnfile = $value; # in the new /tmp/xcatrf.tmp
$::syncsnfile = $value; # name of syncfile
}
if ($var eq "DCP_PULL") # from -P flag
{
@ -272,9 +271,8 @@ sub process_servicenodes_xdcp
$::RUNCMD_RC = 0;
my $cmd = $req->{command}->[0];
# if xdcp -F command (input $syncsnfile) and service nodes first need
# to be rsync to the
# $synfiledir directory
# if xdcp -F command (input $syncsnfile) and the original synclist need
# to be rsync to the $synfiledir directory on the service nodes first
if ($::syncsnfile)
{
if (!-f $::syncsnfile)
@ -285,7 +283,8 @@ sub process_servicenodes_xdcp
return (1); # process no service nodes
}
# xdcp rsync each of the files contained in the -F syncfile to
# xdcp rsync each of the files contained in the -F syncfile and the
# original synclist input on the -F flag to
# the service node first to the site.SNsyncfiledir directory
#change noderange to the service nodes
# sync each one and check for error
@ -328,39 +327,6 @@ sub process_servicenodes_xdcp
}
} # end foreach good servicenode
# for all the service nodes that are still good
# need to xdcp rsync file( -F input)
# to the service node to the /tmp/xcatrf.tmp file
my @good_SN2 = @::good_SN;
@::good_SN = ();
foreach my $node (@good_SN2)
{
my @sn = ();
push @sn, $node;
# run the command to each good servicenode
# xdcp <sn> <syncfile> <tmp/xcatrf.tmp>
my $addreq;
$addreq->{'_xcatdest'} = $::mnname;
$addreq->{node} = \@sn;
$addreq->{noderange} = \@sn;
$addreq->{arg}->[0] = "$::syncsnfile";
$addreq->{arg}->[1] = "$::tmpsyncsnfile";
$addreq->{command}->[0] = $cmd;
$addreq->{cwd}->[0] = $req->{cwd}->[0];
$addreq->{env} = $req->{env};
&process_request($addreq, $callback, $sub_req);
if ($::FAILED_NODES == 0)
{
push @::good_SN, $node;
}
else
{
push @::bad_SN, $node;
}
} # end foreach good service node
} # end xdcp -F
else
{
@ -611,10 +577,12 @@ sub process_nodes
# if the xdcp -F option to sync the nodes
# then for a Node
# change the command to use the -F /tmp/xcatrf.tmp
# change the command to use the -F syncfiledir path to the synclist
# because that is where the file was put on the SN
#
my $newSNreq = dclone($req);
my $newsyncfile = $synfiledir;
$newsyncfile .=$::syncsnfile;
if ($::syncsnfile) # -F option
{
my $args = $newSNreq->{arg};
@ -624,11 +592,13 @@ sub process_nodes
{
# find the -F and change the name of the
# file in the next array entry to the tmp file
# file in the next array entry to the file that
# is in the site.SNsyncfiledir
# directory on the service node
if ($argument eq "-F")
{
$i++;
$newSNreq->{arg}->[$i] = $::tmpsyncsnfile;
$newSNreq->{arg}->[$i] = $newsyncfile;
last;
}
$i++;
@ -832,10 +802,6 @@ sub xdcp
xCAT::MsgUtils->message("D", $rsp, $callback);
}
if (-e "/tmp/xcatrf.tmp")
{ # used tmp file for -F option
#`rm /tmp/xcatrf.tmp`;
}
# set return code
$rsp = {};