Add Poller Performance admin report
This commit is contained in:
		| @@ -4,6 +4,7 @@ | ||||
|  | ||||
|   * Can now set untagged VLAN on trunking and non-trunking ports | ||||
|   * Add user activity log to frontend admin menu | ||||
|   * Add Poller Performance admin report | ||||
|  | ||||
|   [BUG FIXES] | ||||
|  | ||||
|   | ||||
| @@ -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; | ||||
| @@ -41,11 +41,12 @@ web_plugins: | ||||
|   - Report::DuplexMismatch | ||||
|   - Report::SsidInventory | ||||
|   - Report::VlanInventory | ||||
|   - AdminTask::JobQueue | ||||
|   - AdminTask::PollerPerformance | ||||
|   - AdminTask::PseudoDevice | ||||
|   - AdminTask::Topology | ||||
|   - AdminTask::JobQueue | ||||
|   - AdminTask::Users | ||||
|   - AdminTask::UserLog | ||||
|   - AdminTask::Users | ||||
|   - Search::Device | ||||
|   - Search::Node | ||||
|   - Search::VLAN | ||||
|   | ||||
							
								
								
									
										29
									
								
								Netdisco/share/views/ajax/admintask/performance.tt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								Netdisco/share/views/ajax/admintask/performance.tt
									
									
									
									
									
										Normal 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 %] | ||||
|  | ||||
		Reference in New Issue
	
	Block a user