2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2025-05-22 03:32:04 +00:00

enhance nodediscovery process: don't write "NOIP" if the node can not be resloved to an IP (#3995)

* enhance nodediscovery process, if only 1 mac and have \*NOIP\* append, don't write mac table and don't generate dhcp lease entry

* Enhance PR 3995: enhance nodediscovery process: don't write "NOIP" if the node can not be resloved to an IP
This commit is contained in:
zet809 2017-11-17 11:07:45 +08:00 committed by yangsong
parent 6f53cf1a0b
commit f816d95799
7 changed files with 42 additions and 7 deletions

View File

@ -4579,6 +4579,10 @@ sub process_request {
$req->{noderange} = [$node];
$req->{discoverymethod} = ['blade'];
$doreq->($req);
if (defined($req->{error})) {
$request->{error}->[0] = '1';
$request->{error_msg}->[0] = $req->{error_msg}->[0];
}
%{$req} = (); #Clear request. it is done
return 0;
}

View File

@ -771,6 +771,10 @@ sub process_request {
my $req = {%$request};
$req->{command} = ['discovered'];
$req->{noderange} = [ $macmap{$mac} ];
if (defined($req->{error})) {
$request->{error}->[0] = '1';
$request->{error_msg}->[0] = $req->{error_msg}->[0];
}
$doreq->($req);
%{$req} = (); #Clear request. it is done
#undef $mactab;

View File

@ -265,6 +265,12 @@ sub process_request {
my $macstring = "";
if (defined($request->{mac})) {
if (!inet_aton($node)) {
xCAT::MsgUtils->message("S", "xcat.discovery.nodediscover: Can not resolve IP for the matching node:$node. Make sure \"makehosts\" and \"makedns\" have been run for $node.");
$request->{error} = [0];
$request->{error_msg} = ["Can not resolve IP for the matching node:$node."];
return;
}
my $mactab = xCAT::Table->new("mac", -create => 1);
my @ifinfo;
my %usednames;
@ -272,6 +278,7 @@ sub process_request {
my @hostnames_to_update = ();
my %bydriverindex;
my $forcenic = 0; #-1 is force skip, 0 is use default behavior, 1 is force to be declared even if hosttag is skipped to do so
my $localnic = 0;
foreach (@{ $request->{mac} }) {
@ifinfo = split /\|/;
@ -318,9 +325,6 @@ sub process_request {
$hosttag = "$node-$ifinfo[1]";
push @hostnames_to_update, $hosttag;
}
elsif (!inet_aton($node)) {
xCAT::MsgUtils->message("S", "xcat.discovery.nodediscover: Can not resolve IP for the matching node:$node. Make sure \"makehosts\" and \"makedns\" have been run for $node.");
}
}
#print Dumper($hosttag) . "\n";
if ($hosttag) {
@ -330,6 +334,7 @@ sub process_request {
}
if ($hosttag eq $node) {
$macstring .= $currmac . "|";
$localnic = 1;
} else {
$macstring .= $currmac . "!" . $hosttag . "|";
}
@ -347,6 +352,11 @@ sub process_request {
if ($forcenic == 1) { $macstring .= $currmac . "|"; }
}
}
unless ($localnic) {
$request->{error} = [1];
$request->{error_msg} = ["No nic found in deploy network for $node"];
return;
}
$macstring =~ s/\|\z//;
$mactab->setNodeAttribs($node, { mac => $macstring });
if (scalar @hostnames_to_update) {

View File

@ -398,10 +398,15 @@ sub findme {
my $req = {%$request};
$req->{command} = ['discovered'];
$req->{noderange} = [$node];
$request->{bmc_node} = [$bmc_node];
$req->{bmc_node} = [$bmc_node];
$req->{updateswitch} = ['yes'];
$subreq->($req);
if (defined($req->{error})) {
$request->{error}->[0] = '1';
$request->{error_msg}->[0] = $req->{error_msg}->[0];
}
%{$req} = (); #Clear req structure, it's done..
undef $mactab;
} else {

View File

@ -373,6 +373,10 @@ sub process_request {
$request->{noderange} = [$node];
$request->{bmc_node} = [$bmc_node];
$doreq->($request);
if (defined($request->{error})) {
$req->{error}->[0] = '1';
$req->{error_msg}->[0] = $request->{error_msg}->[0];
}
%{$request} = (); #Clear req structure, it's done..
undef $mactab;
} else {

View File

@ -61,6 +61,10 @@ sub findme {
$req->{bmc_node} = [$bmc_node];
$req->{updateswitch} = ['yes'];
$subreq->($req);
if (defined($req->{error})) {
$request->{error}->[0] = '1';
$request->{error_msg}->[0] = $req->{error_msg}->[0];
}
%{$req} = ();
}
}

View File

@ -22,11 +22,15 @@ sub process_request {
my $doreq = shift;
if ($req->{command}->[0] eq 'findme') {
if (!defined($req->{discoverymethod}) or !defined($req->{discoverymethod}->[0]) or ($req->{discoverymethod}->[0] eq 'undef')) {
if (!defined($req->{discoverymethod}) or !defined($req->{discoverymethod}->[0]) or ($req->{discoverymethod}->[0] eq 'undef') or defined($req->{error})) {
my $error_msg = ".";
if (defined($req->{error_msg}) and defined($req->{error_msg}->[0])) {
$error_msg = ": ". $req->{error_msg}->[0];
}
my $rsp = {};
$rsp->{error}->[0] = "The discovery request can not be processed";
$rsp->{error}->[0] = "The discovery request can not be processed".$error_msg;
$cb->($rsp);
xCAT::MsgUtils->message("S", "xcat.discovery.zzzdiscovery: ($req->{_xcat_clientmac}->[0]) Failed to discover the node.");
xCAT::MsgUtils->message("S", "xcat.discovery.zzzdiscovery: ($req->{_xcat_clientmac}->[0]) Failed for node discovery".$error_msg);
#now, notify the node that its findme request has been processed
my $client_ip = $req->{'_xcat_clientip'};