#498 Map with VLAN filter omits unconnected devices

This commit is contained in:
Oliver Gorwits
2019-03-02 20:01:05 +00:00
parent ce1b847cea
commit e7aacddbc6
2 changed files with 17 additions and 20 deletions

View File

@@ -47,16 +47,16 @@ sub with_times {
->search({}, ->search({},
{ {
'+columns' => { '+columns' => {
uptime_age => \("replace(age(timestamp 'epoch' + uptime / 100 * interval '1 second', " uptime_age => \("replace(age(timestamp 'epoch' + me.uptime / 100 * interval '1 second', "
."timestamp '1970-01-01 00:00:00-00')::text, 'mon', 'month')"), ."timestamp '1970-01-01 00:00:00-00')::text, 'mon', 'month')"),
first_seen_stamp => \"to_char(me.creation, 'YYYY-MM-DD HH24:MI')", first_seen_stamp => \"to_char(me.creation, 'YYYY-MM-DD HH24:MI')",
last_discover_stamp => \"to_char(last_discover, 'YYYY-MM-DD HH24:MI')", last_discover_stamp => \"to_char(me.last_discover, 'YYYY-MM-DD HH24:MI')",
last_macsuck_stamp => \"to_char(last_macsuck, 'YYYY-MM-DD HH24:MI')", last_macsuck_stamp => \"to_char(me.last_macsuck, 'YYYY-MM-DD HH24:MI')",
last_arpnip_stamp => \"to_char(last_arpnip, 'YYYY-MM-DD HH24:MI')", last_arpnip_stamp => \"to_char(me.last_arpnip, 'YYYY-MM-DD HH24:MI')",
since_first_seen => \"extract(epoch from (age(now(), me.creation)))", since_first_seen => \"extract(epoch from (age(now(), me.creation)))",
since_last_discover => \"extract(epoch from (age(now(), last_discover)))", since_last_discover => \"extract(epoch from (age(now(), me.last_discover)))",
since_last_macsuck => \"extract(epoch from (age(now(), last_macsuck)))", since_last_macsuck => \"extract(epoch from (age(now(), me.last_macsuck)))",
since_last_arpnip => \"extract(epoch from (age(now(), last_arpnip)))", since_last_arpnip => \"extract(epoch from (age(now(), me.last_arpnip)))",
}, },
}); });
} }

View File

@@ -179,17 +179,6 @@ ajax '/ajax/data/device/netmap' => require_login sub {
]) : ()) ]) : ())
}, { result_class => 'DBIx::Class::ResultClass::HashRefInflator' }); }, { result_class => 'DBIx::Class::ResultClass::HashRefInflator' });
if ($vlan) {
$links = $links->search({
-or => [
{ 'left_vlans.vlan' => $vlan },
{ 'right_vlans.vlan' => $vlan },
],
}, {
join => [qw/left_vlans right_vlans/],
});
}
while (my $link = $links->next) { while (my $link = $links->next) {
push @{$data{'links'}}, { push @{$data{'links'}}, {
FROMID => $link->{left_ip}, FROMID => $link->{left_ip},
@@ -217,10 +206,18 @@ ajax '/ajax/data/device/netmap' => require_login sub {
join => 'throughput', join => 'throughput',
})->with_times; })->with_times;
# filter by vlan for all or neighbors only
if ($vlan) {
$devices = $devices->search(
{ 'vlans.vlan' => $vlan },
{ join => 'vlans' }
);
}
DEVICE: while (my $device = $devices->next) { DEVICE: while (my $device = $devices->next) {
# if in neighbors or vlan mode then use %ok_dev to filter # if in neighbors mode then use %ok_dev to filter
next DEVICE if ($device->ip ne $qdev->ip) next DEVICE if ($device->ip ne $qdev->ip)
and (($mapshow eq 'neighbors') or $vlan) and ($mapshow eq 'neighbors')
and (not $ok_dev{$device->ip}); # showing only neighbors but no link and (not $ok_dev{$device->ip}); # showing only neighbors but no link
# if location picked then filter # if location picked then filter