change to use Virtual table for Poller Performance report
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
package App::Netdisco::DB::Result::Virtual::PollerPerformance;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
|
||||
__PACKAGE__->table_class('DBIx::Class::ResultSource::View');
|
||||
|
||||
__PACKAGE__->table('poller_performance');
|
||||
__PACKAGE__->result_source_instance->is_virtual(1);
|
||||
__PACKAGE__->result_source_instance->view_definition(<<ENDSQL
|
||||
SELECT action, entered, to_char( entered, 'YYYY - MM - DD HH24:MI:SS' ) AS entered_stamp,
|
||||
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
|
||||
FROM admin
|
||||
WHERE action IN ( 'discover', 'macsuck', 'arpnip' )
|
||||
GROUP BY action, entered
|
||||
HAVING count( device ) > 1
|
||||
ORDER BY elapsed DESC, entered DESC
|
||||
LIMIT 15
|
||||
ENDSQL
|
||||
);
|
||||
|
||||
__PACKAGE__->add_columns(
|
||||
"action",
|
||||
{ data_type => "text", is_nullable => 1 },
|
||||
"entered",
|
||||
{ data_type => "timestamp", is_nullable => 1 },
|
||||
"entered_stamp",
|
||||
{ data_type => "text", is_nullable => 1 },
|
||||
"number",
|
||||
{ data_type => "integer", is_nullable => 1 },
|
||||
"start",
|
||||
{ data_type => "timestamp", is_nullable => 1 },
|
||||
"end",
|
||||
{ data_type => "timestamp", is_nullable => 1 },
|
||||
"elapsed",
|
||||
{ data_type => "interval", is_nullable => 1 },
|
||||
);
|
||||
|
||||
1;
|
||||
@@ -13,26 +13,7 @@ register_admin_task({
|
||||
});
|
||||
|
||||
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,
|
||||
});
|
||||
my $set = schema('netdisco')->resultset('Virtual::PollerPerformance');
|
||||
|
||||
content_type('text/html');
|
||||
template 'ajax/admintask/performance.tt', {
|
||||
|
||||
@@ -16,11 +16,11 @@
|
||||
[% 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>
|
||||
<td class="nd_center-cell">[% row.number | html_entity %]</td>
|
||||
<td class="nd_center-cell">[% row.entered_stamp | html_entity %]</td>
|
||||
<td class="nd_center-cell">[% row.start | html_entity %]</td>
|
||||
<td class="nd_center-cell">[% row.end | html_entity %]</td>
|
||||
<td class="nd_center-cell">[% row.elapsed | html_entity %]</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
</tbody>
|
||||
|
||||
Reference in New Issue
Block a user