#31 Configurable Free Time in Port Utilization Report
This commit is contained in:
1
Changes
1
Changes
@@ -4,6 +4,7 @@
|
||||
|
||||
* Node Montior is now included in Admin menu
|
||||
* #48 Node Monitor supports matching on OUI
|
||||
* #31 Configurable Free Time in Port Utilization Report
|
||||
|
||||
2.039015 - 2018-03-05
|
||||
|
||||
|
||||
@@ -11,10 +11,15 @@ __PACKAGE__->table('port_utilization');
|
||||
__PACKAGE__->result_source_instance->is_virtual(1);
|
||||
__PACKAGE__->result_source_instance->view_definition(<<ENDSQL
|
||||
SELECT d.dns AS dns, d.ip as ip,
|
||||
sum(CASE WHEN (dp.type != 'propVirtual') THEN 1 ELSE 0 END) as port_count,
|
||||
sum(CASE WHEN (dp.type != 'propVirtual' AND dp.up_admin = 'up' AND dp.up = 'up') THEN 1 ELSE 0 END) as ports_in_use,
|
||||
sum(CASE WHEN (dp.type != 'propVirtual' AND dp.up_admin != 'up') THEN 1 ELSE 0 END) as ports_shutdown,
|
||||
sum(CASE WHEN (dp.type != 'propVirtual' AND dp.up_admin = 'up' AND dp.up != 'up') THEN 1 ELSE 0 END) as ports_free
|
||||
sum(CASE WHEN (dp.type != 'propVirtual') THEN 1
|
||||
ELSE 0 END) as port_count,
|
||||
sum(CASE WHEN (dp.type != 'propVirtual' AND dp.up_admin = 'up' AND dp.up = 'up') THEN 1
|
||||
ELSE 0 END) as ports_in_use,
|
||||
sum(CASE WHEN (dp.type != 'propVirtual' AND dp.up_admin != 'up') THEN 1
|
||||
ELSE 0 END) as ports_shutdown,
|
||||
sum(CASE WHEN (dp.type != 'propVirtual' AND dp.up_admin = 'up' AND dp.up != 'up'
|
||||
AND ( age(now(), to_timestamp(extract(epoch from d.last_discover) - (d.uptime - dp.lastchange)/100)) > ?::interval )) THEN 1
|
||||
ELSE 0 END) as ports_free
|
||||
FROM device d LEFT JOIN device_port dp
|
||||
ON d.ip = dp.ip
|
||||
GROUP BY d.dns, d.ip
|
||||
|
||||
@@ -16,7 +16,11 @@ register_report(
|
||||
|
||||
get '/ajax/content/report/portutilization' => require_login sub {
|
||||
return unless schema('netdisco')->resultset('Device')->count;
|
||||
my @results = schema('netdisco')->resultset('Virtual::PortUtilization')->hri->all;
|
||||
|
||||
my $age_num = param('age_num') || 3;
|
||||
my $age_unit = param('age_unit') || 'months';
|
||||
my @results = schema('netdisco')->resultset('Virtual::PortUtilization')
|
||||
->search(undef, { bind => [ "$age_num $age_unit" ] })->hri->all;
|
||||
|
||||
if (request->is_ajax) {
|
||||
my $json = to_json (\@results);
|
||||
|
||||
@@ -144,6 +144,9 @@ sidebar_defaults:
|
||||
report_moduleinventory:
|
||||
fruonly: { default: checked }
|
||||
matchall: { default: checked }
|
||||
report_portutilization:
|
||||
age_num: { default: 3 }
|
||||
age_unit: { default: months }
|
||||
device_port_col_idx_left: 0
|
||||
device_port_col_idx_mid: 2
|
||||
device_port_col_idx_right: -1
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
<li>
|
||||
<em class="muted">Mark as Free if Down for:</em><br/>
|
||||
<select id="nd_days-select" name="age_num">
|
||||
[% FOREACH count IN [1..32] %]
|
||||
[% FOREACH count IN [1..31] %]
|
||||
<option[% ' selected="selected"' IF vars.sidebar_defaults.device_ports.age_num == count %]>[% count %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
|
||||
19
share/views/sidebar/report/portutilization.tt
Normal file
19
share/views/sidebar/report/portutilization.tt
Normal file
@@ -0,0 +1,19 @@
|
||||
|
||||
<p class="nd_sidebar-title"><em>Port Utilization</em></p>
|
||||
<div class="clearfix">
|
||||
<em class="muted">Mark as Free if Down for:</em><br/>
|
||||
<select id="nd_days-select" name="age_num">
|
||||
[% FOREACH count IN [1..31] %]
|
||||
<option[% ' selected="selected"' IF vars.sidebar_defaults.report_portutilization.age_num == count %]>[% count %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
<select id="nd_age-select" name="age_unit">
|
||||
[% FOREACH unit IN [ 'days', 'weeks', 'months', 'years' ] %]
|
||||
<option[% ' selected="selected"' IF vars.sidebar_defaults.report_portutilization.age_unit == unit %]>[% unit %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<button id="[% report.tag %]_submit" type="submit" class="btn btn-info">
|
||||
<i class="icon-search icon-large pull-left nd_navbar-icon"></i> Run Report</button>
|
||||
|
||||
Reference in New Issue
Block a user