use prsync to copy spots to SNs
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@10916 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
parent
1c8f5f5517
commit
6bfa91b8d3
@ -985,7 +985,7 @@ sub nimnodeset
|
||||
}
|
||||
|
||||
# set the NIM machine type
|
||||
my $type = "standalone";
|
||||
$type = "standalone";
|
||||
if ($imagehash{$image_name}{nimtype})
|
||||
{
|
||||
$type = $imagehash{$image_name}{nimtype};
|
||||
@ -2218,6 +2218,7 @@ sub mknimimage
|
||||
if (
|
||||
!GetOptions(
|
||||
'b=s' => \$::SYSB,
|
||||
|
||||
'D|mkdumpres' => \$::MKDUMP,
|
||||
'f|force' => \$::FORCE,
|
||||
'h|help' => \$::HELP,
|
||||
@ -4233,6 +4234,7 @@ sub mk_spot
|
||||
if (&chkFSspace($loc, $tftpsize, $callback) != 0)
|
||||
{
|
||||
|
||||
|
||||
# error
|
||||
return undef;
|
||||
}
|
||||
@ -5962,6 +5964,7 @@ sub update_inittab
|
||||
|
||||
$entry = "xcat:2:wait:/opt/xcat/xcataixpost";
|
||||
|
||||
|
||||
# see if xcataixpost is already in the file
|
||||
my $cmd = "cat $spotinittab | grep xcataixpost";
|
||||
my @result =
|
||||
@ -7899,9 +7902,8 @@ sub prenimnodeset
|
||||
######################################################
|
||||
|
||||
|
||||
my $snhash;
|
||||
$snhash = &doSNcopy($callback, \@nodelist, $nimprime, \@nimrestypes, \%imghash, \%lochash, \%nodeosi, $subreq, $type);
|
||||
if ( !defined($snhash) ) {
|
||||
my $rc = &doSNcopy2($callback, \@nodelist, $nimprime, \@nimrestypes, \%imghash, \%lochash, \%nodeosi, $subreq, $type);
|
||||
if ($rc != 0 ){
|
||||
my $rsp;
|
||||
push @{$rsp->{data}},
|
||||
"Could not copy NIM resources to the xCAT service nodes.\n";
|
||||
@ -8110,7 +8112,7 @@ sub copyres
|
||||
}
|
||||
|
||||
# how much free space is available on the SN ($dest)?
|
||||
my $dfcmd = qq~$::XCATROOT/bin/xdsh $dest /usr/bin/df -m $dir |/usr/bin/awk '(NR==2)'~;
|
||||
my $dfcmd = qq~$::XCATROOT/bin/xdsh $dest /usr/bin/df -m $dir | /usr/bin/awk '(NR==2)'~;
|
||||
|
||||
$output = xCAT::Utils->runcmd("$dfcmd", -1);
|
||||
if ($::RUNCMD_RC != 0)
|
||||
@ -8295,6 +8297,393 @@ sub copyres
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
=head3 copyres2
|
||||
|
||||
Copy NIM resource files/dirs to remote service nodes
|
||||
|
||||
- this version does the copies in parallel using prsync
|
||||
|
||||
Arguments:
|
||||
Returns:
|
||||
0 - OK
|
||||
1 - error
|
||||
Globals:
|
||||
Example:
|
||||
Comments:
|
||||
|
||||
=cut
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
sub copyres2
|
||||
{
|
||||
my $callback = shift;
|
||||
my $resinfo = shift;
|
||||
my $nimprime = shift;
|
||||
my $subreq = shift;
|
||||
|
||||
my %reshash = %{$resinfo};
|
||||
|
||||
#
|
||||
# do the copies in parallel
|
||||
#
|
||||
|
||||
foreach my $res (keys %reshash)
|
||||
{
|
||||
# get the directory location of the resource
|
||||
# - could be the NIM location or may have to strip off a file name
|
||||
my $dir;
|
||||
if ($reshash{$res}{restype} eq "lpp_source")
|
||||
{
|
||||
$dir = $reshash{$res}{resloc};
|
||||
}
|
||||
else
|
||||
{
|
||||
$dir = dirname($reshash{$res}{resloc});
|
||||
}
|
||||
chomp $dir;
|
||||
|
||||
my $restype=$reshash{$res}{restype};
|
||||
my $resloc=$reshash{$res}{resloc};
|
||||
my $resname=$res;
|
||||
my $SNlist= join(',', @{$reshash{$res}{snlist}});
|
||||
|
||||
# make sure the directory exists on the service nodes
|
||||
my $mkcmd = qq~/usr/bin/mkdir -m 644 -p $dir~;
|
||||
my $output = xCAT::InstUtils->xcmd($callback, $subreq, "xdsh", $SNlist, $mkcmd, 0);
|
||||
if ($::RUNCMD_RC != 0)
|
||||
{
|
||||
my $rsp;
|
||||
push @{$rsp->{data}}, "Could not create $dir on service nodes.\n";
|
||||
if ($::VERBOSE)
|
||||
{
|
||||
push @{$rsp->{data}}, "$output\n";
|
||||
}
|
||||
xCAT::MsgUtils->message("E", $rsp, $callback);
|
||||
return 1;
|
||||
}
|
||||
|
||||
# How much space does the resource need?
|
||||
my $ducmd = qq~/usr/bin/du -sm $dir | /usr/bin/awk '{print \$1}'~;
|
||||
|
||||
my $reqsize = xCAT::Utils->runcmd("$ducmd", -1);
|
||||
if ($::RUNCMD_RC != 0)
|
||||
{
|
||||
my $rsp;
|
||||
push @{$rsp->{data}}, "Could not run: \'$ducmd\'\n";
|
||||
if ($::VERBOSE)
|
||||
{
|
||||
push @{$rsp->{data}}, "$reqsize";
|
||||
}
|
||||
xCAT::MsgUtils->message("E", $rsp, $callback);
|
||||
return 1;
|
||||
}
|
||||
|
||||
# try to increase FS space on SNs if needed
|
||||
foreach my $dest (@{$reshash{$res}{snlist}})
|
||||
{
|
||||
# how much free space is available on the SN ($dest)?
|
||||
my $dfcmd = qq~$::XCATROOT/bin/xdsh $dest /usr/bin/df -m $dir | /usr/bin/awk '(NR==2)'~;
|
||||
|
||||
$output = xCAT::Utils->runcmd("$dfcmd", -1);
|
||||
if ($::RUNCMD_RC != 0)
|
||||
{
|
||||
my $rsp;
|
||||
push @{$rsp->{data}}, "Could not run: \'$dfcmd\'\n";
|
||||
if ($::VERBOSE)
|
||||
{
|
||||
push @{$rsp->{data}}, "$output";
|
||||
}
|
||||
xCAT::MsgUtils->message("E", $rsp, $callback);
|
||||
return 1;
|
||||
}
|
||||
|
||||
my @fslist = split(/\s+/, $output);
|
||||
my $free_space = $fslist[3];
|
||||
my $FSname = $fslist[7];
|
||||
|
||||
# how much space do we need
|
||||
my $needspace;
|
||||
if (($restype eq 'lpp_source') || ($restype eq 'spot'))
|
||||
{
|
||||
# need size of resource plus size of tar file plus fudge factor
|
||||
$needspace = int($reqsize + $reqsize + 100);
|
||||
}
|
||||
else
|
||||
{
|
||||
$needspace = int($reqsize + 10);
|
||||
}
|
||||
|
||||
# increase FS if needed
|
||||
my $addsize = 0;
|
||||
if ($needspace > $free_space)
|
||||
{
|
||||
# how much should we increase FS?
|
||||
$addsize = int($needspace - $free_space);
|
||||
my $sizeattr = "-a size=+$addsize" . "M";
|
||||
my $chcmd = "$::XCATROOT/bin/xdsh $dest /usr/sbin/chfs $sizeattr $FSname";
|
||||
my $output;
|
||||
$output = xCAT::Utils->runcmd("$chcmd", -1);
|
||||
if ($::RUNCMD_RC != 0)
|
||||
{
|
||||
my $rsp;
|
||||
push @{$rsp->{data}}, "Could not run: \'$chcmd\'\n";
|
||||
if ($::VERBOSE)
|
||||
{
|
||||
push @{$rsp->{data}}, "$output";
|
||||
}
|
||||
xCAT::MsgUtils->message("E", $rsp, $callback);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# Copy resources to service nodes
|
||||
# - from NIM primary server
|
||||
#
|
||||
my $cpcmd;
|
||||
# if res is spot or lpp_source then create temporary backup file
|
||||
# to copy to service nodes my $bkdir; # directory to backup
|
||||
if ($restype eq "lpp_source")
|
||||
{
|
||||
# resloc - Ex. /install/nim/lpp_source/61D_lpp_source
|
||||
|
||||
my $dir = dirname($resloc);
|
||||
# ex. /install/nim/lpp_source
|
||||
|
||||
# copy the file to the SNs
|
||||
$cpcmd = qq~$::XCATROOT/bin/prsync -o "rlHpEAogDz" $resloc $SNlist:$dir 2>/dev/null~;
|
||||
}
|
||||
elsif ($restype eq 'spot')
|
||||
{
|
||||
# resloc ex. /install/nim/spot/61dimg/usr
|
||||
|
||||
my $loc = dirname($resloc);
|
||||
# /install/nim/spot/61dimg
|
||||
|
||||
my $dir = dirname($loc);
|
||||
# ex. /install/nim/spot
|
||||
|
||||
# copy the file to the SN
|
||||
$cpcmd = qq~$::XCATROOT/bin/prsync -o "rlHpEAogDz" $loc $SNlist:$dir 2>/dev/null~;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
# copy the resource file to the SN dir - as is
|
||||
# - bosinst_data, script, resolv_conf, installp_bundle, mksysb
|
||||
# - the NIM location includes the actual file name
|
||||
my $dir = dirname($resloc);
|
||||
$cpcmd = qq~$::XCATROOT/bin/prsync -o "rlHpEAogDz" $resloc $SNlist:$dir 2>/dev/null~;
|
||||
}
|
||||
|
||||
if ($::VERBOSE)
|
||||
{
|
||||
my $rsp;
|
||||
push @{$rsp->{data}}, "Copying NIM resource $res to service nodes.\n";
|
||||
xCAT::MsgUtils->message("I", $rsp, $callback);
|
||||
}
|
||||
|
||||
$output=xCAT::InstUtils->xcmd($callback, $subreq, "xdsh", $nimprime, $cpcmd, 0);
|
||||
if ($::RUNCMD_RC != 0)
|
||||
{
|
||||
my $rsp;
|
||||
push @{$rsp->{data}}, "Could not copy NIM resource $res to service nodes.\n";
|
||||
xCAT::MsgUtils->message("E", $rsp, $callback);
|
||||
return 1;
|
||||
}
|
||||
} # end - foreach resource
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
=head3 doSNcopy2
|
||||
|
||||
Copy NIM resource files/dirs to remote service nodes so they can be
|
||||
defined locally
|
||||
|
||||
Also
|
||||
-copy /etc/hosts to make sure we have name res for nodes
|
||||
from SN
|
||||
- copy /install/postscripts so we have the lates
|
||||
|
||||
Returns:
|
||||
0 - OK
|
||||
1 - error
|
||||
|
||||
=cut
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
sub doSNcopy2
|
||||
{
|
||||
my $callback = shift;
|
||||
my $nodes = shift;
|
||||
my $nimprime = shift;
|
||||
my $restypes = shift;
|
||||
my $imaghash = shift;
|
||||
my $locs = shift;
|
||||
my $nosi = shift;
|
||||
my $subreq = shift;
|
||||
my $type = shift;
|
||||
|
||||
my %lochash = %{$locs};
|
||||
my %imghash = %{$imaghash};
|
||||
my @nodelist = @$nodes;
|
||||
my @nimrestypes = @$restypes;
|
||||
my %nodeosi = %{$nosi};
|
||||
my $install_dir = xCAT::Utils->getInstallDir();
|
||||
|
||||
my %resinfo;
|
||||
|
||||
#
|
||||
# Get a list of nodes for each service node
|
||||
#
|
||||
my $sn = xCAT::Utils->getSNformattedhash(\@nodelist, "xcat", "MN", $type);
|
||||
if ($::ERROR_RC)
|
||||
{
|
||||
my $rsp;
|
||||
push @{$rsp->{data}}, "Could not get list of xCAT service nodes.";
|
||||
xCAT::MsgUtils->message("E", $rsp, $callback);
|
||||
return 1;
|
||||
}
|
||||
|
||||
#
|
||||
# running on the management node
|
||||
#
|
||||
|
||||
#
|
||||
# Get a list of images for each SN
|
||||
#
|
||||
my @SNlist;
|
||||
my %SNosi;
|
||||
foreach my $snkey (keys %$sn)
|
||||
{
|
||||
my @nodes = @{$sn->{$snkey}};
|
||||
foreach my $n (@nodes)
|
||||
{
|
||||
if (!grep (/^$nodeosi{$n}$/, @{$SNosi{$snkey}}))
|
||||
{
|
||||
push(@{$SNosi{$snkey}}, $nodeosi{$n});
|
||||
}
|
||||
}
|
||||
# get list of service nodes for these nodes
|
||||
# - don't include the MN
|
||||
if (!xCAT::InstUtils->is_me($snkey)) {
|
||||
push (@SNlist, $snkey);
|
||||
}
|
||||
}
|
||||
|
||||
my $snlist=join(',',@SNlist);
|
||||
|
||||
# copy the /etc/hosts file all the SNs
|
||||
my $rcpcmd = "$::XCATROOT/bin/xdcp $snlist /etc/hosts /etc ";
|
||||
my $output = xCAT::Utils->runcmd("$rcpcmd", -1);
|
||||
if ($::RUNCMD_RC != 0)
|
||||
{
|
||||
my $rsp;
|
||||
push @{$rsp->{data}}, "Could not copy /etc/hosts to service nodes.\n";
|
||||
xCAT::MsgUtils->message("E", $rsp, $callback);
|
||||
}
|
||||
|
||||
# update the postscripts on the SNs
|
||||
my $cpcmd = "$::XCATROOT/bin/xdcp $snlist -p -R $install_dir/postscripts/* $install_dir/postscripts ";
|
||||
$output = xCAT::Utils->runcmd("$cpcmd", -1);
|
||||
if ($::RUNCMD_RC != 0)
|
||||
{
|
||||
my $rsp;
|
||||
push @{$rsp->{data}}, "Could not copy $install_dir/postscripts to service nodes.\n";
|
||||
xCAT::MsgUtils->message("E", $rsp, $callback);
|
||||
}
|
||||
|
||||
# - what resources need to be copied? -
|
||||
# - which SNs need to get each resource
|
||||
foreach my $snkey (@SNlist)
|
||||
{
|
||||
my @nimresources;
|
||||
|
||||
# get a list of the resources that are defined on the SN
|
||||
my $cmd =
|
||||
qq~$::XCATROOT/bin/xdsh $snkey "/usr/sbin/lsnim -c resources | /usr/bin/cut -f1 -d' '"~;
|
||||
|
||||
my @resources = xCAT::Utils->runcmd("$cmd", -1);
|
||||
if ($::RUNCMD_RC != 0)
|
||||
{
|
||||
my $rsp;
|
||||
push @{$rsp->{data}}, "Could not get NIM resource definitions from $snkey.";
|
||||
xCAT::MsgUtils->message("E", $rsp, $callback);
|
||||
return 1;
|
||||
}
|
||||
|
||||
foreach my $r (@resources)
|
||||
{
|
||||
my ($node, $nimres) = split(': ', $r);
|
||||
chomp $nimres;
|
||||
push(@nimresources, $nimres);
|
||||
}
|
||||
|
||||
# for each osimage needed on a SN
|
||||
foreach my $image (@{$SNosi{$snkey}})
|
||||
{
|
||||
# for each resource contained in the osimage def
|
||||
foreach my $restype (keys(%{$imghash{$image}}))
|
||||
{
|
||||
my $nimtype = $imghash{$image}{'nimtype'};
|
||||
if ( ($nimtype ne 'standalone') && ($restype eq 'lpp_source'))
|
||||
{
|
||||
# don't copy lpp_source for diskless/dataless nodes
|
||||
next;
|
||||
}
|
||||
|
||||
# if a valid NIM type and a value is set
|
||||
if ( ($imghash{$image}{$restype})
|
||||
&& (grep(/^$restype$/, @nimrestypes)))
|
||||
{
|
||||
# could have a comma separated list - ex. script etc.
|
||||
foreach my $res (split /,/, $imghash{$image}{$restype})
|
||||
{
|
||||
chomp $res;
|
||||
|
||||
# if the resources are not defined on the SN
|
||||
if (!grep(/^$res$/, @nimresources))
|
||||
{
|
||||
# copy appropriate files to the SN
|
||||
# use same location on all NIM servers
|
||||
# only care about these resource types for now
|
||||
|
||||
my @dorestypes = (
|
||||
"mksysb", "resolv_conf",
|
||||
"script", "installp_bundle",
|
||||
"bosinst_data", "lpp_source",
|
||||
"spot"
|
||||
);
|
||||
if (grep(/^$restype$/, @dorestypes))
|
||||
{
|
||||
push @{$resinfo{$res}{snlist}}, $snkey;
|
||||
$resinfo{$res}{restype}=$restype;
|
||||
$resinfo{$res}{resloc}=$lochash{$res};
|
||||
}
|
||||
|
||||
} # end - if res not defined
|
||||
} # end foreach resource of this type
|
||||
} # end - if it's a valid res type
|
||||
} # end - for each resource
|
||||
} # end - for each image
|
||||
} # end - for each SN
|
||||
|
||||
if (©res2($callback, \%resinfo, $nimprime, $subreq) ) {
|
||||
# error
|
||||
my $rsp;
|
||||
push @{$rsp->{data}}, "Could not copy NIM resources to the service nodes.";
|
||||
xCAT::MsgUtils->message("E", $rsp, $callback);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
=head3 doSNcopy
|
||||
|
||||
Copy NIM resource files/dirs to remote service nodes so they can be
|
||||
@ -8348,6 +8737,7 @@ sub doSNcopy
|
||||
#
|
||||
# Get a list of images for each SN
|
||||
#
|
||||
my @SNlist;
|
||||
my %SNosi;
|
||||
foreach my $snkey (keys %$sn)
|
||||
{
|
||||
@ -8359,6 +8749,8 @@ sub doSNcopy
|
||||
push(@{$SNosi{$snkey}}, $nodeosi{$n});
|
||||
}
|
||||
}
|
||||
# get list of service nodes for these nodes
|
||||
push (@SNlist, $snkey);
|
||||
}
|
||||
|
||||
#
|
||||
@ -10271,41 +10663,20 @@ sub make_SN_resource
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# only make lpp_source for standalone type images
|
||||
if ( ($restype eq "lpp_source")
|
||||
&& ($imghash{$image}{"nimtype"} eq 'standalone'))
|
||||
{
|
||||
|
||||
# restore the backup file - then remove it
|
||||
my $bkname = $imghash{$image}{$restype} . ".bk";
|
||||
|
||||
my $resdir = $lochash{$imghash{$image}{$restype}};
|
||||
|
||||
# ex. /install/nim/lpp_source/61D_lpp_source
|
||||
|
||||
my $dir = dirname($resdir);
|
||||
|
||||
my $loc = dirname($resdir);
|
||||
# ex. /install/nim/lpp_source
|
||||
if (0)
|
||||
{
|
||||
my $rsp;
|
||||
push @{$rsp->{data}},
|
||||
"Restoring $bkname on $SNname. Running command \'mv $dir/$bkname $resdir/$bkname; cd $resdir; restore -xvqf $bkname; rm $bkname\'.\n";
|
||||
xCAT::MsgUtils->message("I", $rsp, $callback);
|
||||
}
|
||||
my $restcmd =
|
||||
"mv $dir/$bkname $resdir/$bkname; cd $resdir; restore -xvqf $bkname; rm $bkname";
|
||||
my $output = xCAT::Utils->runcmd("$restcmd", -1);
|
||||
if ($::RUNCMD_RC != 0)
|
||||
{
|
||||
my $rsp;
|
||||
push @{$rsp->{data}},
|
||||
"Could not restore NIM resource backup file called \'$bkname\'.\n";
|
||||
xCAT::MsgUtils->message("E", $rsp, $callback);
|
||||
}
|
||||
|
||||
# define the local res
|
||||
my $cmd = "/usr/sbin/nim -Fo define -t lpp_source -a server=master -a location=$lochash{$imghash{$image}{$restype}} ";
|
||||
my $cmd = "/usr/sbin/nim -Fo define -t lpp_source -a server=master -a location=$loc ";
|
||||
|
||||
my @validattrs = ("verbose", "nfs_vers", "nfs_sec", "packages", "use_source_simages", "arch", "show_progress", "multi_volume", "group");
|
||||
|
||||
@ -10341,7 +10712,7 @@ sub make_SN_resource
|
||||
}
|
||||
}
|
||||
$cmd .= " $imghash{$image}{$restype}";
|
||||
$output = xCAT::Utils->runcmd("$cmd", -1);
|
||||
my $output = xCAT::Utils->runcmd("$cmd", -1);
|
||||
if ($::RUNCMD_RC != 0)
|
||||
{
|
||||
my $rsp;
|
||||
@ -10415,6 +10786,7 @@ sub make_SN_resource
|
||||
# do mksysb
|
||||
if ($restype eq "mksysb") {
|
||||
my $cmd;
|
||||
|
||||
$cmd = "/usr/sbin/nim -Fo define -t $restype -a server=master -a location=$lochash{$imghash{$image}{$restype}} ";
|
||||
|
||||
my @validattrs = ("verbose", "nfs_vers", "nfs_sec", "dest_dir", "group", "source", "size_preview", "exclude_files", "mksysb_flags", "mk_image");
|
||||
@ -10515,48 +10887,19 @@ sub make_SN_resource
|
||||
# if spot
|
||||
if ($restype eq "spot")
|
||||
{
|
||||
|
||||
my $rsp;
|
||||
push @{$rsp->{data}},
|
||||
"Creating a SPOT resource on $SNname. This could take a while.\n";
|
||||
xCAT::MsgUtils->message("I", $rsp, $callback);
|
||||
|
||||
# restore the backup file - then remove it
|
||||
my $bkname = $imghash{$image}{$restype} . ".bk";
|
||||
my $resdir = dirname($lochash{$imghash{$image}{$restype}});
|
||||
chomp $resdir;
|
||||
# ex. resdir = /install/nim/spot/612dskls
|
||||
|
||||
# ex. /install/nim/spot/612dskls
|
||||
|
||||
my $dir = dirname($resdir);
|
||||
|
||||
# ex. /install/nim/spot
|
||||
|
||||
if (0)
|
||||
{
|
||||
my $rsp;
|
||||
push @{$rsp->{data}},
|
||||
"Restoring $bkname on $SNname. Running command \'mv $dir/$bkname $resdir/$bkname; cd $resdir; restore -xvqf $bkname; rm $bkname\'\n";
|
||||
xCAT::MsgUtils->message("I", $rsp, $callback);
|
||||
}
|
||||
|
||||
my $restcmd =
|
||||
"mv $dir/$bkname $resdir/$bkname; cd $resdir; restore -xvqf $bkname; rm $bkname";
|
||||
|
||||
my $output = xCAT::Utils->runcmd("$restcmd", -1);
|
||||
if ($::RUNCMD_RC != 0)
|
||||
{
|
||||
my $rsp;
|
||||
push @{$rsp->{data}},
|
||||
"Could not restore NIM resource backup file called \'$bkname\'.\n";
|
||||
xCAT::MsgUtils->message("E", $rsp, $callback);
|
||||
}
|
||||
|
||||
# location for spot is odd
|
||||
# ex. /install/nim/spot/611image/usr
|
||||
# want /install/nim/spot for loc when creating new one
|
||||
my $loc =
|
||||
dirname(dirname($lochash{$imghash{$image}{$restype}}));
|
||||
# location for spot is odd
|
||||
# ex. /install/nim/spot/611image/usr
|
||||
# want /install/nim/spot for loc when creating new one
|
||||
my $loc = dirname($resdir);
|
||||
chomp $loc;
|
||||
|
||||
my $spotcmd;
|
||||
@ -10598,7 +10941,7 @@ sub make_SN_resource
|
||||
$spotcmd .= " $imghash{$image}{$restype}";
|
||||
|
||||
|
||||
$output = xCAT::Utils->runcmd("$spotcmd", -1);
|
||||
my $output = xCAT::Utils->runcmd("$spotcmd", -1);
|
||||
if ($::RUNCMD_RC != 0)
|
||||
{
|
||||
my $rsp;
|
||||
|
Loading…
Reference in New Issue
Block a user