mirror of
https://github.com/xcat2/xcat-core.git
synced 2026-09-04 12:07:56 +00:00
refactor(discovery): share blade findme decisions
This commit is contained in:
@@ -9,6 +9,31 @@ $XML::Simple::PREFERRED_PARSER = 'XML::Parser';
|
||||
|
||||
use xCAT::MsgUtils;
|
||||
|
||||
sub is_findme_request {
|
||||
my ($request) = @_;
|
||||
|
||||
return 0 unless ref $request eq 'HASH';
|
||||
return 0 unless ref $request->{command} eq 'ARRAY';
|
||||
return 0 unless defined $request->{command}->[0];
|
||||
return $request->{command}->[0] eq 'findme';
|
||||
}
|
||||
|
||||
sub findme_request_for_handler {
|
||||
my ($request) = @_;
|
||||
|
||||
return unless is_findme_request($request);
|
||||
return [$request];
|
||||
}
|
||||
|
||||
sub findme_request_is_claimed {
|
||||
my ($request) = @_;
|
||||
|
||||
return 0 unless is_findme_request($request);
|
||||
return 0 unless ref $request->{discoverymethod} eq 'ARRAY';
|
||||
return 0 unless defined $request->{discoverymethod}->[0];
|
||||
return $request->{discoverymethod}->[0] ne 'undef';
|
||||
}
|
||||
|
||||
=head3 update_discovery_data
|
||||
Update the discovery data from the xcat request to discoverydata table to indicate the discovery events
|
||||
arg1 - the request
|
||||
|
||||
@@ -3,16 +3,6 @@ package xCAT::BladeUtils;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
sub findme_request_for_handler {
|
||||
my ($request) = @_;
|
||||
|
||||
return unless ref $request eq 'HASH';
|
||||
return unless ref $request->{command} eq 'ARRAY';
|
||||
return unless defined $request->{command}->[0];
|
||||
return unless $request->{command}->[0] eq 'findme';
|
||||
return [$request];
|
||||
}
|
||||
|
||||
sub blade_nodes_from_mp {
|
||||
my @entries = @_;
|
||||
my %hwtype;
|
||||
|
||||
@@ -21,6 +21,7 @@ use Thread qw(yield);
|
||||
use xCAT::Utils;
|
||||
use xCAT::TableUtils;
|
||||
use xCAT::BladeUtils;
|
||||
use xCAT::DiscoveryUtils;
|
||||
use xCAT::NetworkUtils;
|
||||
use xCAT::ServiceNodeUtils;
|
||||
use xCAT::PasswordUtils;
|
||||
@@ -4144,7 +4145,7 @@ sub preprocess_request {
|
||||
#if ($request->{_xcatdest}) { return [$request]; } #exit if preprocessed
|
||||
|
||||
my $findme_request =
|
||||
xCAT::BladeUtils::findme_request_for_handler($request);
|
||||
xCAT::DiscoveryUtils::findme_request_for_handler($request);
|
||||
if ($findme_request) { return $findme_request; }
|
||||
if ($request->{_xcatpreprocessed}->[0] == 1) { return [$request]; }
|
||||
my $callback = shift;
|
||||
@@ -4472,8 +4473,8 @@ sub process_request {
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($request->{command}->[0] eq "findme") {
|
||||
if (defined($request->{discoverymethod}) and defined($request->{discoverymethod}->[0]) and ($request->{discoverymethod}->[0] ne 'undef')) {
|
||||
if (xCAT::DiscoveryUtils::is_findme_request($request)) {
|
||||
if (xCAT::DiscoveryUtils::findme_request_is_claimed($request)) {
|
||||
|
||||
# The findme request had been processed by other module, just return
|
||||
return;
|
||||
@@ -6252,6 +6253,3 @@ sub genhwtree
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -19,6 +19,8 @@ use strict;
|
||||
use xCAT::Table;
|
||||
use xCAT::Utils;
|
||||
use xCAT::TableUtils;
|
||||
use xCAT::BladeUtils;
|
||||
use xCAT::DiscoveryUtils;
|
||||
use xCAT::ServiceNodeUtils;
|
||||
use xCAT::Usage;
|
||||
use IO::Socket;
|
||||
@@ -308,6 +310,9 @@ sub preprocess_request {
|
||||
my $request = shift;
|
||||
|
||||
#if ($request->{_xcatdest}) { return [$request]; } #exit if preprocessed
|
||||
my $findme_request =
|
||||
xCAT::DiscoveryUtils::findme_request_for_handler($request);
|
||||
if ($findme_request) { return $findme_request; }
|
||||
if ((defined($request->{_xcatpreprocessed}))
|
||||
&& ($request->{_xcatpreprocessed}->[0] == 1))
|
||||
{
|
||||
@@ -704,19 +709,18 @@ sub process_request {
|
||||
$bladepass = $tmp->{password};
|
||||
}
|
||||
}
|
||||
if ($request->{command}->[0] eq "findme") {
|
||||
if (defined($request->{discoverymethod}) and defined($request->{discoverymethod}->[0]) and ($request->{discoverymethod}->[0] ne 'undef')) {
|
||||
if (xCAT::DiscoveryUtils::is_findme_request($request)) {
|
||||
if (xCAT::DiscoveryUtils::findme_request_is_claimed($request)) {
|
||||
|
||||
# The findme request had been processed by other module, just return
|
||||
return;
|
||||
}
|
||||
my $mptab = xCAT::Table->new("mp");
|
||||
unless ($mptab) { return 2; }
|
||||
my @bladents = $mptab->getAllNodeAttribs([qw(node)]);
|
||||
my @blades;
|
||||
foreach (@bladents) {
|
||||
push @blades, $_->{node};
|
||||
}
|
||||
my @bladents = $mptab->getAllNodeAttribs([qw(node nodetype mpa)]);
|
||||
my @blades = xCAT::BladeUtils::blade_nodes_from_mp(@bladents);
|
||||
|
||||
unless (@blades) { return; }
|
||||
my %invreq;
|
||||
$invreq{node} = \@blades;
|
||||
$invreq{arg} = ['mac'];
|
||||
|
||||
Reference in New Issue
Block a user