Fix partial name match on Node search

This commit is contained in:
Oliver Gorwits
2014-02-25 22:35:24 +00:00
parent 989a8d450d
commit 97b593aeee
2 changed files with 26 additions and 25 deletions

View File

@@ -4,6 +4,7 @@
* Fix NetBIOS report with search on blank domain * Fix NetBIOS report with search on blank domain
* Fix database MAC lookup when MAC not returned by nbtstat * Fix database MAC lookup when MAC not returned by nbtstat
* Fix partial name match on Node search
2.024000 - 2014-02-22 2.024000 - 2014-02-22

View File

@@ -80,7 +80,6 @@ ajax '/ajax/content/search/node' => require_login sub {
} }
else { else {
my $set; my $set;
my $name = $node; my $name = $node;
if (param('partial')) { if (param('partial')) {
@@ -91,34 +90,35 @@ ajax '/ajax/content/search/node' => require_login sub {
->search_by_name({nbname => $name, @active, @times}); ->search_by_name({nbname => $name, @active, @times});
unless ( $set->has_rows ) { unless ( $set->has_rows ) {
if (my $ip = NetAddr::IP::Lite->new($node)) { if (my $ip = NetAddr::IP::Lite->new($node)) {
# search_by_ip() will extract cidr notation if necessary # 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');
$set = schema('netdisco')->resultset('NodeIp') $set = schema('netdisco')->resultset('NodeIp')
->with_times ->search_by_ip({ip => $ip, @active, @times});
->search( }
{'oui.company' => { -ilike => "\%$node\%"}, @times}, else {
{'prefetch' => 'oui'}, 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; return unless $set and $set->has_rows;
}
$set = $set->search_rs({}, { order_by => 'me.mac' }); $set = $set->search_rs({}, { order_by => 'me.mac' });
template 'ajax/search/node_by_ip.tt', { template 'ajax/search/node_by_ip.tt', {