2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2025-07-29 07:41:31 +00:00

Fix the issue: Failed to discover nodes as the discovery method is set to udef by wrong (#4860)

- zvmdiscovery plugin will not handle findme
 - not change request if no temp discovered bmc nodes, to avoid the confusing error message
 - add more logs, and ignore the `ipmitool sol info` error output
This commit is contained in:
Bin Xu
2018-02-28 18:08:25 +08:00
parent 5cf796f6bd
commit b962479353
6 changed files with 19 additions and 6 deletions

View File

@@ -163,7 +163,7 @@ if [ "$PLATFORM" != "unknown" ]; then
echo "<platform>$PLATFORM</platform>" >> /tmp/discopacket
fi
LANCHAN=$(ipmitool sol info |awk '/Payload Channel/{print $4}')
LANCHAN=$(ipmitool sol info 2>/dev/null|awk '/Payload Channel/{print $4}')
IsStatic=`ipmitool lan print $LANCHAN | grep 'IP Address Source' | grep 'Static'`
if [ "$IsStatic" ]; then
BMCIPADDR=`ipmitool lan print $LANCHAN | grep 'IP Address' | grep -v 'IP Address Source' | cut -d ":" -f2 | sed 's/ //'`

View File

@@ -11,12 +11,16 @@ BEGIN {
quit="yes"
system("echo \"" $0 "\" > /restart")
close(listener)
system("rm -rf /processing")
system("logger -s -t 'xcat.genesis.minixcatd' -p local4.info 'The request is processed by xCAT master successfully.'")
}else if(match($0,"processing")){
print "processing request" |& listener
system("echo \"" $0 "\" > /processing")
system("logger -s -t 'xcat.genesis.minixcatd' -p local4.info 'The request is processing by xCAT master...'")
}else if(match($0,"processed")){
print "finished request process" |& listener
system("rm -rf /processing")
system("logger -s -t 'xcat.genesis.minixcatd' -p local4.warning 'The request is already processed by xCAT master, but not matched.'")
}
}
close(listener)

View File

@@ -36,13 +36,17 @@ sub process_request {
$arptable = `/sbin/arp -n`;
}
my @arpents = split /\n/, $arptable;
my $mac = "$req->{mtm}->[0]*$req->{serial}->[0]";
my $mac;
foreach (@arpents) {
if (m/^($client_ip)\s+\S+\s+(\S+)\s/) {
$mac = $2;
last;
}
}
unless ($mac) {
xCAT::MsgUtils->message("S", "xcat.discovery.aaadiscovery: Failed to get MAC address for $client_ip in arp cache.");
$mac = "$req->{mtm}->[0]*$req->{serial}->[0]";
}
xCAT::MsgUtils->message("S", "xcat.discovery.aaadiscovery: ($mac) Got a discovery request, attempting to discover the node...");
$req->{discoverymethod}->[0] = 'undef';

View File

@@ -459,7 +459,7 @@ sub process_request {
if (defined($request->{bmcinband})) {
if (defined($request->{bmc_node}) and defined($request->{bmc_node}->[0])) {
my $bmc_node = $request->{bmc_node}->[0];
xCAT::MsgUtils->message("S", "xcat.discovery.nodediscover: Removing discovered node definition: $bmc_node...");
xCAT::MsgUtils->message("S", "xcat.discovery.nodediscover: Removing discovered BMC nodes definition: $bmc_node...");
my $rmcmd = "rmdef $bmc_node";
xCAT::Utils->runcmd($rmcmd, 0);
if ($::RUNCMD_RC != 0)
@@ -495,7 +495,7 @@ sub process_request {
Timeout => '1',
Proto => 'tcp'
);
unless ($sock) { xCAT::MsgUtils->message("S", "xcat.discovery.nodediscover: Failed to notify $clientip that it's actually $node."); return; }
unless ($sock) { xCAT::MsgUtils->message("S", "xcat.discovery.nodediscover: Failed to notify $clientip that it's actually $node. $node has not been discovered."); return; }
print $sock $restartstring;
close($sock);

View File

@@ -371,7 +371,7 @@ sub process_request {
my $request = {%$req};
$request->{command} = ['discovered'];
$request->{noderange} = [$node];
$request->{bmc_node} = [$bmc_node];
$request->{bmc_node} = [$bmc_node] if $bmc_node;
$doreq->($request);
if (defined($request->{error})) {
$req->{error}->[0] = '1';

View File

@@ -852,7 +852,7 @@ sub getSiteVal {
#-------------------------------------------------------
sub handled_commands {
return {
findme => 'zvmdiscovery',
#findme => 'zvmdiscovery', # Not handle findme in this plugin, #4860
#nodediscoverdef => 'zvmdiscovery', # Handled by sequential discovery
nodediscoverls => 'zvmdiscovery',
nodediscoverstart => 'zvmdiscovery',
@@ -1710,6 +1710,11 @@ sub process_request {
my $args = $request->{arg};
if ($command eq "findme"){
if (defined($request->{discoverymethod}) and defined($request->{discoverymethod}->[0]) and ($request->{discoverymethod}->[0] ne 'undef')) {
# The findme request had been processed by other module, just return
return;
}
findme( $request, $callback, $request_command );
} elsif ($command eq "nodediscoverls") {
nodediscoverls( $callback, $args );