fix for defect 3552171

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

View File

@ -4074,23 +4074,6 @@ sub parse_and_run_dcp
return;
}
}
if ($options{'File'})
{
# input -F file is copied to tmp file on a service node
if (xCAT::Utils->isServiceNode())
{ # running on service node
$options{'File'} = "/tmp/xcatrf.tmp";
}
my $syncfile = $options{'File'};
if (!-f $options{'File'})
{
my $rsp = ();
$rsp->{data}->[0] = "File:$syncfile does not exist.";
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK, 1);
return;
}
}
# invalid to put the -F with the -r flag
if ($options{'File'} && $options{'node-rcp'})
@ -4208,6 +4191,23 @@ sub parse_and_run_dcp
$synfiledir = $syndir[0];
}
# input -F file is sync'd to site.syncfiledir on the service node
#if (xCAT::Utils->isServiceNode())
#{ # running on service node
# my $snsynfile = $synfiledir;
# $snsynfile .= $options{'File'};
# $options{'File'} = $snsynfile;
#}
my $syncfile = $options{'File'};
if (!-f $options{'File'})
{
my $rsp = ();
$rsp->{data}->[0] = "File:$syncfile does not exist.";
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK, 1);
return;
}
my $rc;
my $syncfile = $options{'File'};
# the parsing of the file will fill in an array of postscripts
@ -4221,9 +4221,34 @@ sub parse_and_run_dcp
}
else
{ # running on MN
# build the files to sync from the nodes sync file
$rc =
&parse_rsync_input_file_on_MN(\@nodelist, \%options, $syncfile,
$::SYNCSN, $synfiledir);
# build a temporary syncfile for the node's synclist
# we need to make sure the latest is on the servicenode
# for running of the syncfiles postscript, which only pulls
# from the service node
my $tmpsyncfile="/tmp/xdcpsynclist.$$";
my $syncline = "$syncfile -> $syncfile";
open(FILE, ">$tmpsyncfile")
or die "cannot open file $tmpsyncfile\n";
print FILE " $syncline";
close FILE;
# now put the original syncfile on the queue to sync to the SN's
$rc =
&parse_rsync_input_file_on_MN(\@nodelist, \%options, $tmpsyncfile,
$::SYNCSN, $synfiledir);
# cleanup
my $cmd = "rm $tmpsyncfile";
my @output = xCAT::Utils->runcmd($cmd, 0);
if ($::RUNCMD_RC != 0)
{
my $rsp = {};
$rsp->{data}->[0] = "Command: $cmd failed.";
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK);
}
}
if ($rc == 1)
{
@ -4460,13 +4485,16 @@ sub rsync_to_image
Globals:
$::SYNCSN indicates we are only syncing the files to the
service nodes xdcp -s flag
Error:
None
Example:
Comments:
We also add the original synclist file for the node to be sync'd
to the service node
=cut