Fix partial name match on Node search
This commit is contained in:
@@ -80,7 +80,6 @@ ajax '/ajax/content/search/node' => require_login sub {
|
||||
}
|
||||
else {
|
||||
my $set;
|
||||
|
||||
my $name = $node;
|
||||
|
||||
if (param('partial')) {
|
||||
@@ -91,34 +90,35 @@ ajax '/ajax/content/search/node' => require_login sub {
|
||||
->search_by_name({nbname => $name, @active, @times});
|
||||
|
||||
unless ( $set->has_rows ) {
|
||||
if (my $ip = NetAddr::IP::Lite->new($node)) {
|
||||
# search_by_ip() will extract cidr notation if necessary
|
||||
$set = schema('netdisco')->resultset('NodeIp')
|
||||
->search_by_ip({ip => $ip, @active, @times});
|
||||
}
|
||||
else {
|
||||
|
||||
if ($name !~ m/%/ and setting('domain_suffix')) {
|
||||
$name .= setting('domain_suffix')
|
||||
if index($name, setting('domain_suffix')) == -1;
|
||||
}
|
||||
$set = schema('netdisco')->resultset('NodeIp')
|
||||
->search_by_dns({dns => $node, @active, @times});
|
||||
|
||||
# if the user selects Vendor search opt, then
|
||||
# we'll try the OUI company name as a fallback
|
||||
if (not $set->has_rows and param('show_vendor')) {
|
||||
$node = param('q');
|
||||
if (my $ip = NetAddr::IP::Lite->new($node)) {
|
||||
# search_by_ip() will extract cidr notation if necessary
|
||||
$set = schema('netdisco')->resultset('NodeIp')
|
||||
->with_times
|
||||
->search(
|
||||
{'oui.company' => { -ilike => "\%$node\%"}, @times},
|
||||
{'prefetch' => 'oui'},
|
||||
);
|
||||
->search_by_ip({ip => $ip, @active, @times});
|
||||
}
|
||||
else {
|
||||
if ($name !~ m/%/ and setting('domain_suffix')) {
|
||||
$name .= setting('domain_suffix')
|
||||
if index($name, setting('domain_suffix')) == -1;
|
||||
}
|
||||
|
||||
$set = schema('netdisco')->resultset('NodeIp')
|
||||
->search_by_dns({dns => $name, @active, @times});
|
||||
|
||||
# if the user selects Vendor search opt, then
|
||||
# we'll try the OUI company name as a fallback
|
||||
|
||||
if (not $set->has_rows and param('show_vendor')) {
|
||||
$set = schema('netdisco')->resultset('NodeIp')
|
||||
->with_times
|
||||
->search(
|
||||
{'oui.company' => { -ilike => "\%$node\%"}, @times},
|
||||
{'prefetch' => 'oui'},
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return unless $set and $set->has_rows;
|
||||
}
|
||||
$set = $set->search_rs({}, { order_by => 'me.mac' });
|
||||
|
||||
template 'ajax/search/node_by_ip.tt', {
|
||||
|
||||
Reference in New Issue
Block a user