pass additional resource attrs to the service node when replicating
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@7128 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
parent
34a349cae0
commit
0d946169c0
@ -245,9 +245,11 @@ sub preprocess_request
|
||||
# these commands might be merged some day??
|
||||
if (($command =~ /nimnodeset/) || ($command =~ /mkdsklsnode/))
|
||||
{
|
||||
my ($rc, $nodehash, $nethash, $imagehash, $lochash, $attrs) =
|
||||
my ($rc, $nodehash, $nethash, $imagehash, $lochash, $attrs, $nimhash) =
|
||||
&prenimnodeset($cb, $command, $sub_req);
|
||||
|
||||
|
||||
|
||||
if ($rc)
|
||||
{ # either error or -h was processed etc.
|
||||
my $rsp;
|
||||
@ -300,7 +302,13 @@ sub preprocess_request
|
||||
{
|
||||
$reqcopy->{'attrval'} = $attrs;
|
||||
}
|
||||
push @requests, $reqcopy;
|
||||
|
||||
if ($nimhash)
|
||||
{
|
||||
xCAT::InstUtils->taghash($nimhash);
|
||||
$reqcopy->{'nimhash'} = $nimhash;
|
||||
}
|
||||
push @requests, $reqcopy;
|
||||
}
|
||||
return \@requests;
|
||||
}
|
||||
@ -404,7 +412,6 @@ sub preprocess_request
|
||||
|
||||
sub process_request
|
||||
{
|
||||
|
||||
my $request = shift;
|
||||
my $callback = shift;
|
||||
|
||||
@ -432,6 +439,7 @@ sub process_request
|
||||
my $imagehash = $flatreq->{'imagehash'};
|
||||
my $lochash = $flatreq->{'lochash'};
|
||||
my $attrval = $flatreq->{'attrval'};
|
||||
my $nimhash = $flatreq->{'nimhash'};
|
||||
my $nodes = $flatreq->{node};
|
||||
|
||||
# figure out which cmd and call the subroutine to process
|
||||
@ -439,7 +447,7 @@ sub process_request
|
||||
{
|
||||
($ret, $msg) =
|
||||
&mkdsklsnode($callback, $nodes, $nodehash, $nethash,
|
||||
$imagehash, $lochash, $sub_req);
|
||||
$imagehash, $lochash, $nimhash, $sub_req);
|
||||
}
|
||||
elsif ($command eq "mknimimage")
|
||||
{
|
||||
@ -461,7 +469,7 @@ sub process_request
|
||||
{
|
||||
($ret, $msg) =
|
||||
&nimnodeset($callback, $nodes, $nodehash, $nethash,
|
||||
$imagehash, $lochash, $sub_req);
|
||||
$imagehash, $lochash, $nimhash, $sub_req);
|
||||
}
|
||||
|
||||
elsif ($command eq "nimnodecust")
|
||||
@ -517,6 +525,7 @@ sub nimnodeset
|
||||
my $nethash = shift;
|
||||
my $imaghash = shift;
|
||||
my $locs = shift;
|
||||
my $nimres = shift;
|
||||
my $subreq = shift;
|
||||
|
||||
my %lochash = %{$locs};
|
||||
@ -524,6 +533,7 @@ sub nimnodeset
|
||||
my %nethash = %{$nethash};
|
||||
my %imagehash = %{$imaghash}; # osimage definition
|
||||
my @nodelist = @$nodes;
|
||||
my %nimhash = %{$nimres};
|
||||
|
||||
my $error = 0;
|
||||
my @nodesfailed;
|
||||
@ -699,9 +709,13 @@ sub nimnodeset
|
||||
my $shorthost;
|
||||
($shorthost = $node) =~ s/\..*$//;
|
||||
chomp $shorthost;
|
||||
my $cstate =
|
||||
xCAT::InstUtils->get_nim_attr_val($shorthost, "Cstate", $callback, "",
|
||||
$subreq);
|
||||
|
||||
#ndebug
|
||||
# bug - need to pass in server name - below
|
||||
#my $cstate = xCAT::InstUtils->get_nim_attr_val($shorthost, "Cstate", $callback, "", $subreq);
|
||||
|
||||
my $cstate = xCAT::InstUtils->get_nim_attr_val($shorthost, "Cstate", $callback, "$Sname", $subreq);
|
||||
|
||||
if (defined($cstate) && (!($cstate =~ /ready/)))
|
||||
{
|
||||
if ($::FORCE)
|
||||
@ -1601,6 +1615,7 @@ sub chkosimage
|
||||
# by R:
|
||||
my ($junk, $pname) = split(/:/, $pkg);
|
||||
$pname =~ s/\*//g; # drop *
|
||||
#print "pname = \'$pname\'\n";
|
||||
$pkgtype{$pname} = "rpm";
|
||||
}
|
||||
}
|
||||
@ -4438,10 +4453,10 @@ sub rmnimimage
|
||||
}
|
||||
else
|
||||
{
|
||||
my $rsp;
|
||||
push @{$rsp->{data}},
|
||||
"$Sname: A NIM resource named \'$resname\' is not defined.\n";
|
||||
xCAT::MsgUtils->message("W", $rsp, $callback);
|
||||
# my $rsp;
|
||||
# push @{$rsp->{data}},
|
||||
# "$Sname: A NIM resource named \'$resname\' is not defined.\n";
|
||||
# xCAT::MsgUtils->message("W", $rsp, $callback);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4926,7 +4941,8 @@ sub enoughspace
|
||||
Globals:
|
||||
|
||||
Example:
|
||||
$rc = &mkdumpres($res_name, \%attrs, $callback, $location);
|
||||
$rc = &mkdumpres($res_name, \%attrs, $callback, $location,
|
||||
\%nimres);
|
||||
|
||||
Comments:
|
||||
=cut
|
||||
@ -4938,8 +4954,16 @@ sub mkdumpres
|
||||
my $attrs = shift;
|
||||
my $callback = shift;
|
||||
my $location = shift;
|
||||
my $nimres = shift;
|
||||
|
||||
my %attrvals = %{$attrs}; # cmd line attr=val pairs
|
||||
my %attrvals; # cmd line attr=val pairs (from mknimimage)
|
||||
if ($attrs) {
|
||||
%attrvals = %{$attrs};
|
||||
}
|
||||
my %nimhash; # NIM res attrs (from mkdsklsnode or nimnodeset)
|
||||
if ($nimres) {
|
||||
%nimhash = %{$nimres};
|
||||
}
|
||||
|
||||
if ($::VERBOSE)
|
||||
{
|
||||
@ -4949,9 +4973,20 @@ sub mkdumpres
|
||||
}
|
||||
|
||||
my $type = 'dump';
|
||||
my @validattrs = ("dumpsize", "max_dumps", "notify", "snapcollect", "verbose");
|
||||
|
||||
my $cmd = "/usr/sbin/nim -o define -t $type -a server=master ";
|
||||
|
||||
# add additional attributes - if provided - from the NIM definition on the
|
||||
# NIM primary - (when replicating on a service node)
|
||||
if (%nimhash) {
|
||||
foreach my $attr (keys %{$nimhash{$res_name}}) {
|
||||
if (grep(/^$attr$/, @validattrs) ) {
|
||||
$cmd .= "-a $attr=$nimhash{$res_name}{$attr} ";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($::NFSV4)
|
||||
{
|
||||
$cmd .= "-a nfs_vers=4 ";
|
||||
@ -4959,36 +4994,28 @@ sub mkdumpres
|
||||
# where to put it - the default is /install
|
||||
if ($location)
|
||||
{
|
||||
$cmd .= "-a location=$location ";
|
||||
$cmd .= "-a location=$location ";
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
#$cmd .= "-a location=/install/nim/$type/$res_name ";
|
||||
$cmd .= "-a location=/install/nim/dump/$res_name ";
|
||||
}
|
||||
|
||||
if (!$::dodumpold)
|
||||
{
|
||||
|
||||
# add any additional supported attrs from cmd line
|
||||
my @attrlist = ("dumpsize", "max_dumps", "notify", "snapcollect");
|
||||
foreach my $attr (keys %attrvals)
|
||||
{
|
||||
if (grep(/^$attr$/, @attrlist))
|
||||
{
|
||||
$cmd .= "-a $attr=$attrvals{$attr} ";
|
||||
}
|
||||
if (%attrvals) {
|
||||
foreach my $attr (keys %attrvals)
|
||||
{
|
||||
if (grep(/^$attr$/, @validattrs))
|
||||
{
|
||||
$cmd .= "-a $attr=$attrvals{$attr} ";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$cmd .= "$res_name 2>&1";
|
||||
if ($::VERBOSE)
|
||||
{
|
||||
my $rsp;
|
||||
push @{$rsp->{data}}, "Running command: \'$cmd\'.\n";
|
||||
xCAT::MsgUtils->message("I", $rsp, $callback);
|
||||
}
|
||||
my $output = xCAT::Utils->runcmd("$cmd", -1);
|
||||
if ($::RUNCMD_RC != 0)
|
||||
{
|
||||
@ -5199,7 +5226,7 @@ sub updatespot
|
||||
}
|
||||
if (!xCAT::InstUtils->is_me($nimprime))
|
||||
{
|
||||
$cmd = "$::XCATROOT/bin/xdcp $nimprime $odmscript_mn $odmscript";
|
||||
$cmd = "$::XCATROOT/bin/xdcp $nimprime $odmscript_mn $odmscript";
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -5959,6 +5986,7 @@ sub prenimnodeset
|
||||
my %objtype;
|
||||
my %objhash;
|
||||
my %attrs;
|
||||
my %nimhash;
|
||||
|
||||
# the first arg should be a noderange - the other should be attr=val
|
||||
# - put attr=val operands in %attrs hash
|
||||
@ -6176,6 +6204,7 @@ sub prenimnodeset
|
||||
# it exists so see if it's in the correct location
|
||||
my $loc =
|
||||
xCAT::InstUtils->get_nim_attr_val('xcataixscript', 'location',
|
||||
|
||||
$callback, $nimprime, $subreq);
|
||||
|
||||
# see if it's in the wrong place
|
||||
@ -6290,6 +6319,12 @@ sub prenimnodeset
|
||||
|
||||
# add to hash
|
||||
$lochash{$res} = "$loc";
|
||||
|
||||
# new subr
|
||||
my $attrvals = xCAT::InstUtils->get_nim_attrs($res, $callback, $nimprime, $subreq);
|
||||
if (defined($attrvals)) {
|
||||
%{$nimhash{$res}} = %{$attrvals};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -6351,7 +6386,7 @@ sub prenimnodeset
|
||||
}
|
||||
|
||||
# pass this along to the process_request routine
|
||||
return (0, \%objhash, \%nethash, \%imghash, \%lochash, \%attrs);
|
||||
return (0, \%objhash, \%nethash, \%imghash, \%lochash, \%attrs, \%nimhash);
|
||||
}
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
@ -6980,6 +7015,7 @@ sub mkdsklsnode
|
||||
my $nethash = shift;
|
||||
my $imaghash = shift;
|
||||
my $locs = shift;
|
||||
my $nimres = shift;
|
||||
my $subreq = shift;
|
||||
|
||||
my %lochash = %{$locs};
|
||||
@ -6988,6 +7024,11 @@ sub mkdsklsnode
|
||||
my %imagehash = %{$imaghash};
|
||||
my @nodelist = @$nodes;
|
||||
|
||||
my %nimhash;
|
||||
if ($nimres) {
|
||||
%nimhash = %{$nimres};
|
||||
}
|
||||
|
||||
my $error = 0;
|
||||
my @nodesfailed;
|
||||
my $image_name;
|
||||
@ -7145,7 +7186,7 @@ sub mkdsklsnode
|
||||
if (!xCAT::InstUtils->is_me($nimprime))
|
||||
{
|
||||
&make_SN_resource($callback, \@nodelist, \@image_names,
|
||||
\%imagehash, \%lochash, \%nethash);
|
||||
\%imagehash, \%lochash, \%nethash, \%nimhash);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -7902,17 +7943,15 @@ sub checkNIMnetworks
|
||||
return 1;
|
||||
}
|
||||
|
||||
my $junk1;
|
||||
my $junk2;
|
||||
my $adapterhost;
|
||||
my @ifcontent = split('\n',$ifone);
|
||||
foreach my $line (@ifcontent) {
|
||||
next if (/#/);
|
||||
($junk1, $junk2, $adapterhost) = split(':', $line);
|
||||
last;
|
||||
}
|
||||
|
||||
#my $adapterIP = inet_ntoa(inet_aton($adapterhost));
|
||||
my $junk1;
|
||||
my $junk2;
|
||||
my $adapterhost;
|
||||
my @ifcontent = split('\n',$ifone);
|
||||
foreach my $line (@ifcontent) {
|
||||
next if (/#/);
|
||||
($junk1, $junk2, $adapterhost) = split(':', $line);
|
||||
last;
|
||||
}
|
||||
|
||||
# create static routes between the networks
|
||||
my $rtgcmd =
|
||||
@ -7967,12 +8006,14 @@ sub make_SN_resource
|
||||
my $imghash = shift;
|
||||
my $lhash = shift;
|
||||
my $nethash = shift;
|
||||
my $nimres = shift;
|
||||
|
||||
my @nodelist = @{$nodes};
|
||||
my @image_names = @{$images};
|
||||
my %imghash; # hash of osimage defs
|
||||
my %lochash; # hash of res locations
|
||||
my %nethash;
|
||||
my %nimhash;
|
||||
if ($imghash)
|
||||
{
|
||||
%imghash = %{$imghash};
|
||||
@ -7985,6 +8026,35 @@ sub make_SN_resource
|
||||
{
|
||||
%nethash = %{$nethash};
|
||||
}
|
||||
if ($nimres)
|
||||
{
|
||||
%nimhash = %{$nimres};
|
||||
}
|
||||
|
||||
my %attrs;
|
||||
if (defined(@{$::args}))
|
||||
{
|
||||
@ARGV = @{$::args};
|
||||
}
|
||||
while (my $a = shift(@ARGV))
|
||||
{
|
||||
if ($a =~ /=/)
|
||||
{
|
||||
|
||||
# if it has an "=" sign its an attr=val - we hope
|
||||
my ($attr, $value) = $a =~ /^\s*(\S+?)\s*=\s*(\S*.*)$/;
|
||||
if (!defined($attr) || !defined($value))
|
||||
{
|
||||
my $rsp;
|
||||
$rsp->{data}->[0] = "Incorrect \'attr=val\' pair - $a\n";
|
||||
xCAT::MsgUtils->message("E", $rsp, $::callback);
|
||||
return 1;
|
||||
}
|
||||
|
||||
# put attr=val in hash
|
||||
$attrs{$attr} = $value;
|
||||
}
|
||||
}
|
||||
|
||||
my $cmd;
|
||||
|
||||
@ -8177,13 +8247,22 @@ sub make_SN_resource
|
||||
next;
|
||||
}
|
||||
|
||||
# if root, shared_root, tmp, home, shared_home, dump,
|
||||
# if dump res
|
||||
if (($restype eq "dump") && ($imghash{$image}{"nimtype"} eq 'diskless')) {
|
||||
my $loc = $lochash{$imghash{$image}{$restype}};
|
||||
chomp $loc;
|
||||
if (&mkdumpres( $imghash{$image}{$restype}, \%attrs, $callback, $loc, \%nimhash) != 0 ) {
|
||||
next;
|
||||
}
|
||||
}
|
||||
|
||||
# if root, shared_root, tmp, home, shared_home,
|
||||
# paging then
|
||||
# these dont require copying anything from the nim primary
|
||||
my @dir_res = (
|
||||
"root", "shared_root",
|
||||
"tmp", "home",
|
||||
"shared_home", "dump",
|
||||
"shared_home",
|
||||
"paging"
|
||||
);
|
||||
if (grep(/^$restype$/, @dir_res))
|
||||
@ -8936,6 +9015,7 @@ sub getNodesetStates
|
||||
$nimtab->close();
|
||||
}
|
||||
return (0, "");
|
||||
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user