From 4c2b0f93dc74d3d3e1d96dfbedbd272f6e862f9b Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Sun, 3 Nov 2013 11:41:02 +0000 Subject: [PATCH] change to use Virtual table for Poller Performance report --- .../DB/Result/Virtual/PollerPerformance.pm | 42 +++++++++++++++++++ .../Web/Plugin/AdminTask/PollerPerformance.pm | 21 +--------- .../share/views/ajax/admintask/performance.tt | 10 ++--- 3 files changed, 48 insertions(+), 25 deletions(-) create mode 100644 Netdisco/lib/App/Netdisco/DB/Result/Virtual/PollerPerformance.pm diff --git a/Netdisco/lib/App/Netdisco/DB/Result/Virtual/PollerPerformance.pm b/Netdisco/lib/App/Netdisco/DB/Result/Virtual/PollerPerformance.pm new file mode 100644 index 00000000..88d9f134 --- /dev/null +++ b/Netdisco/lib/App/Netdisco/DB/Result/Virtual/PollerPerformance.pm @@ -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(< 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; diff --git a/Netdisco/lib/App/Netdisco/Web/Plugin/AdminTask/PollerPerformance.pm b/Netdisco/lib/App/Netdisco/Web/Plugin/AdminTask/PollerPerformance.pm index f5e941a7..f13472e5 100644 --- a/Netdisco/lib/App/Netdisco/Web/Plugin/AdminTask/PollerPerformance.pm +++ b/Netdisco/lib/App/Netdisco/Web/Plugin/AdminTask/PollerPerformance.pm @@ -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', { diff --git a/Netdisco/share/views/ajax/admintask/performance.tt b/Netdisco/share/views/ajax/admintask/performance.tt index a9f47755..6abdb8e4 100644 --- a/Netdisco/share/views/ajax/admintask/performance.tt +++ b/Netdisco/share/views/ajax/admintask/performance.tt @@ -16,11 +16,11 @@ [% WHILE (row = results.next) %] [% row.action.ucfirst | html_entity %] - [% row.get_column('number') | html_entity %] - [% row.get_column('entered_stamp') | html_entity %] - [% row.get_column('start') | html_entity %] - [% row.get_column('end') | html_entity %] - [% row.get_column('elapsed') | html_entity %] + [% row.number | html_entity %] + [% row.entered_stamp | html_entity %] + [% row.start | html_entity %] + [% row.end | html_entity %] + [% row.elapsed | html_entity %] [% END %]