Avoid displaying all VLANs on device ports when there are 1000's
This commit is contained in:
@@ -1,5 +1,9 @@
|
|||||||
2.031006 - 2015-02-12
|
2.031006 - 2015-02-12
|
||||||
|
|
||||||
|
[ENHANCEMENTS]
|
||||||
|
|
||||||
|
* Avoid displaying all VLANs on device ports when there are 1000's
|
||||||
|
|
||||||
[BUG FIXES]
|
[BUG FIXES]
|
||||||
|
|
||||||
* Fix headings on IP Inventory CSV report (J. Binks)
|
* Fix headings on IP Inventory CSV report (J. Binks)
|
||||||
|
|||||||
@@ -36,6 +36,15 @@ but they are backwards compatible.
|
|||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
|
=head1 2.031006
|
||||||
|
|
||||||
|
=head2 General Notices
|
||||||
|
|
||||||
|
When displaying device ports, Netdisco will now avoid showing VLAN Membership
|
||||||
|
if it looks like there are a large number of VLANs on many ports. This is an
|
||||||
|
average of the VLANs per port, configurable in
|
||||||
|
<deviceport_vlan_membership_threshold>. The default is 150.
|
||||||
|
|
||||||
=head1 2.031005
|
=head1 2.031005
|
||||||
|
|
||||||
=head2 General Notices
|
=head2 General Notices
|
||||||
|
|||||||
@@ -123,9 +123,16 @@ get '/ajax/content/device/ports' => require_login sub {
|
|||||||
# make sure query asks for formatted timestamps when needed
|
# make sure query asks for formatted timestamps when needed
|
||||||
$set = $set->with_times if param('c_lastchange');
|
$set = $set->with_times if param('c_lastchange');
|
||||||
|
|
||||||
# get vlans on the port
|
# get vlans on the port, if there aren't too many
|
||||||
$set = $set->search_rs({}, { prefetch => 'all_port_vlans' })->with_vlan_count
|
my $port_cnt = $device->ports->count() || 1;
|
||||||
if param('c_vmember');
|
my $vlan_cnt = $device->port_vlans->count() || 1;
|
||||||
|
my $vmember_ok =
|
||||||
|
(($vlan_cnt / $port_cnt) <= setting('deviceport_vlan_membership_threshold'));
|
||||||
|
|
||||||
|
if ($vmember_ok) {
|
||||||
|
$set = $set->search_rs({}, { prefetch => 'all_port_vlans' })->with_vlan_count
|
||||||
|
if param('c_vmember');
|
||||||
|
}
|
||||||
|
|
||||||
# what kind of nodes are we interested in?
|
# what kind of nodes are we interested in?
|
||||||
my $nodes_name = (param('n_archived') ? 'nodes' : 'active_nodes');
|
my $nodes_name = (param('n_archived') ? 'nodes' : 'active_nodes');
|
||||||
@@ -165,6 +172,7 @@ get '/ajax/content/device/ports' => require_login sub {
|
|||||||
results => $results,
|
results => $results,
|
||||||
nodes => $nodes_name,
|
nodes => $nodes_name,
|
||||||
device => $device,
|
device => $device,
|
||||||
|
vmember_ok => $vmember_ok,
|
||||||
}, { layout => undef };
|
}, { layout => undef };
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
@@ -86,6 +86,24 @@ table_pagesize: 10
|
|||||||
table_showrecordsmenu:
|
table_showrecordsmenu:
|
||||||
- [10, 25, 50, 100, '-1']
|
- [10, 25, 50, 100, '-1']
|
||||||
- [10, 25, 50, 100, 'All']
|
- [10, 25, 50, 100, 'All']
|
||||||
|
vlanctl: true
|
||||||
|
portctl_nameonly: false
|
||||||
|
portctl_nophones: false
|
||||||
|
portctl_vlans: false
|
||||||
|
portctl_uplinks: false
|
||||||
|
port_control_reasons:
|
||||||
|
address: 'Address Allocation Abuse'
|
||||||
|
copyright: 'Copyright Violation'
|
||||||
|
dos: 'Denial of Service'
|
||||||
|
bandwidth: 'Excessive Bandwidth'
|
||||||
|
polling: 'Excessive Polling of DNS/DHCP/SNMP'
|
||||||
|
noserv: 'Not In Service'
|
||||||
|
exploit: 'Remote Exploit Possible'
|
||||||
|
compromised: 'System Compromised'
|
||||||
|
other: 'Other'
|
||||||
|
resolved: 'Issue Resolved'
|
||||||
|
check_userlog: true
|
||||||
|
deviceport_vlan_membership_threshold: 150
|
||||||
|
|
||||||
# -------------
|
# -------------
|
||||||
# NETDISCO CORE
|
# NETDISCO CORE
|
||||||
@@ -157,23 +175,6 @@ ignore_interfaces:
|
|||||||
- '(E|T)\d \d\/\d\/\d'
|
- '(E|T)\d \d\/\d\/\d'
|
||||||
ignore_private_nets: false
|
ignore_private_nets: false
|
||||||
reverse_sysname: false
|
reverse_sysname: false
|
||||||
vlanctl: true
|
|
||||||
portctl_nameonly: false
|
|
||||||
portctl_nophones: false
|
|
||||||
portctl_vlans: false
|
|
||||||
portctl_uplinks: false
|
|
||||||
check_userlog: true
|
|
||||||
port_control_reasons:
|
|
||||||
address: 'Address Allocation Abuse'
|
|
||||||
copyright: 'Copyright Violation'
|
|
||||||
dos: 'Denial of Service'
|
|
||||||
bandwidth: 'Excessive Bandwidth'
|
|
||||||
polling: 'Excessive Polling of DNS/DHCP/SNMP'
|
|
||||||
noserv: 'Not In Service'
|
|
||||||
exploit: 'Remote Exploit Possible'
|
|
||||||
compromised: 'System Compromised'
|
|
||||||
other: 'Other'
|
|
||||||
resolved: 'Issue Resolved'
|
|
||||||
|
|
||||||
# --------------
|
# --------------
|
||||||
# BACKEND DAEMON
|
# BACKEND DAEMON
|
||||||
|
|||||||
@@ -188,23 +188,27 @@
|
|||||||
|
|
||||||
[% IF params.c_vmember %]
|
[% IF params.c_vmember %]
|
||||||
<td>
|
<td>
|
||||||
[% IF row.vlan_count %]
|
[% IF vmember_ok %]
|
||||||
[% SET output = '' %]
|
[% IF row.vlan_count %]
|
||||||
[% SET vlanlist = [] %]
|
[% SET output = '' %]
|
||||||
[% FOREACH vlan IN row.all_port_vlans %][% vlanlist.push(vlan.get_column('vlan')) %][% END %]
|
[% SET vlanlist = [] %]
|
||||||
[% FOREACH vlan IN vlanlist.nsort %]
|
[% FOREACH vlan IN row.all_port_vlans %][% vlanlist.push(vlan.get_column('vlan')) %][% END %]
|
||||||
[% SET output = output _
|
[% FOREACH vlan IN vlanlist.nsort %]
|
||||||
'<a href="' _ uri_for('/search') _ '?tab=vlan&q=' _ vlan _ '">' _ vlan _ '</a>' %]
|
[% SET output = output _
|
||||||
[% SET output = output _ ', ' IF NOT loop.last %]
|
'<a href="' _ uri_for('/search') _ '?tab=vlan&q=' _ vlan _ '">' _ vlan _ '</a>' %]
|
||||||
[% END %]
|
[% SET output = output _ ', ' IF NOT loop.last %]
|
||||||
[% IF row.vlan_count > 10 %] [%# TODO make this a settable variable %]
|
[% END %]
|
||||||
[% SET output = '<div class="nd_vlan-total">(' _ row.vlan_count
|
[% IF row.vlan_count > 10 %] [%# TODO make this a settable variable %]
|
||||||
_ ')</div><span class="nd_linkcell nd_collapse-vlans">
|
[% SET output = '<div class="nd_vlan-total">(' _ row.vlan_count
|
||||||
<div class="nd_arrow-up-down-left icon-chevron-up icon-large"></div>Show VLANs</span>
|
_ ')</div><span class="nd_linkcell nd_collapse-vlans">
|
||||||
<div class="nd_collapsing nd_collapse-pre-hidden">' _ output %]
|
<div class="nd_arrow-up-down-left icon-chevron-up icon-large"></div>Show VLANs</span>
|
||||||
[% SET output = output _ '</div>' %]
|
<div class="nd_collapsing nd_collapse-pre-hidden">' _ output %]
|
||||||
[% END %]
|
[% SET output = output _ '</div>' %]
|
||||||
[% output %]
|
[% END %]
|
||||||
|
[% output %]
|
||||||
|
[% END %]
|
||||||
|
[% ELSE %]
|
||||||
|
<i class="icon-asterisk"></i> (too many to list)
|
||||||
[% END %]
|
[% END %]
|
||||||
</td>
|
</td>
|
||||||
[% END %]
|
[% END %]
|
||||||
|
|||||||
Reference in New Issue
Block a user