Add Poller Performance admin report

This commit is contained in:
Oliver Gorwits
2013-11-02 23:29:17 +00:00
parent 9723e679ef
commit e5cb093f3e
4 changed files with 76 additions and 2 deletions

View File

@@ -4,6 +4,7 @@
* Can now set untagged VLAN on trunking and non-trunking ports * Can now set untagged VLAN on trunking and non-trunking ports
* Add user activity log to frontend admin menu * Add user activity log to frontend admin menu
* Add Poller Performance admin report
[BUG FIXES] [BUG FIXES]

View File

@@ -0,0 +1,43 @@
package App::Netdisco::Web::Plugin::AdminTask::PollerPerformance;
use Dancer ':syntax';
use Dancer::Plugin::Ajax;
use Dancer::Plugin::DBIC;
use Dancer::Plugin::Auth::Extensible;
use App::Netdisco::Web::Plugin;
register_admin_task({
tag => 'performance',
label => 'Poller Performance',
});
ajax '/ajax/content/admin/performance' => require_role admin => sub {
my $set = schema('netdisco')->resultset('Admin')
->search({
action => { -in => [qw/discover macsuck arpnip/] },
}, {
columns => [
'action', 'entered',
{ entered_stamp => \"to_char(entered, 'YYYY-MM-DD HH24:MI:SS')" },
],
select => [
{ count => 'device', -as => 'number' },
{ min => 'started', -as => 'start' },
{ max => 'finished', -as => 'end' },
\"justify_interval(extract(epoch from (max(finished) - min(started))) * interval '1 second') AS elapsed",
],
as => [qw/ number start end elapsed /],
group_by => [qw/ action entered /],
having => \'count(device) > 1',
order_by => { -desc => [qw/ entered elapsed /] },
rows => 50,
});
content_type('text/html');
template 'ajax/admintask/performance.tt', {
results => $set,
}, { layout => undef };
};
true;

View File

@@ -41,11 +41,12 @@ web_plugins:
- Report::DuplexMismatch - Report::DuplexMismatch
- Report::SsidInventory - Report::SsidInventory
- Report::VlanInventory - Report::VlanInventory
- AdminTask::JobQueue
- AdminTask::PollerPerformance
- AdminTask::PseudoDevice - AdminTask::PseudoDevice
- AdminTask::Topology - AdminTask::Topology
- AdminTask::JobQueue
- AdminTask::Users
- AdminTask::UserLog - AdminTask::UserLog
- AdminTask::Users
- Search::Device - Search::Device
- Search::Node - Search::Node
- Search::VLAN - Search::VLAN

View File

@@ -0,0 +1,29 @@
[% IF results.count == 0 %]
<div class="span2 alert alert-info">The aren't enough jobs to report.</div>
[% ELSE %]
<table class="table table-bordered table-condensed table-hover nd_floatinghead">
<thead>
<tr>
<th class="nd_center-cell">Action</th>
<th class="nd_center-cell">Number of Devices</th>
<th class="nd_center-cell">Queued At</th>
<th class="nd_center-cell">Started</th>
<th class="nd_center-cell">Finished</th>
<th class="nd_center-cell">Time Elapsed</th>
</tr>
</thead>
</tbody>
[% WHILE (row = results.next) %]
<tr>
<td class="nd_center-cell">[% row.action.ucfirst | html_entity %]</td>
<td class="nd_center-cell">[% row.get_column('number') | html_entity %]</td>
<td class="nd_center-cell">[% row.get_column('entered_stamp') | html_entity %]</td>
<td class="nd_center-cell">[% row.get_column('start') | html_entity %]</td>
<td class="nd_center-cell">[% row.get_column('end') | html_entity %]</td>
<td class="nd_center-cell">[% row.get_column('elapsed') | html_entity %]</td>
</tr>
[% END %]
</tbody>
</table>
[% END %]