#498 Map with VLAN filter omits unconnected devices
This commit is contained in:
@@ -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)))",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user