Add Ports that are blocking report
This commit is contained in:
		| @@ -6,6 +6,7 @@ | ||||
|   * Add Device addresses with DNS entries report | ||||
|   * Add Ports with multiple nodes attached report | ||||
|   * Add Ports administratively disabled report | ||||
|   * Add Ports that are blocking report | ||||
|  | ||||
|   [ENHANCEMENTS] | ||||
|  | ||||
|   | ||||
							
								
								
									
										46
									
								
								Netdisco/lib/App/Netdisco/Web/Plugin/Report/PortBlocking.pm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								Netdisco/lib/App/Netdisco/Web/Plugin/Report/PortBlocking.pm
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| package App::Netdisco::Web::Plugin::Report::PortBlocking; | ||||
|  | ||||
| use Dancer ':syntax'; | ||||
| use Dancer::Plugin::DBIC; | ||||
| use Dancer::Plugin::Auth::Extensible; | ||||
|  | ||||
| use App::Netdisco::Web::Plugin; | ||||
|  | ||||
| register_report( | ||||
|     {   category     => 'Port', | ||||
|         tag          => 'portblocking', | ||||
|         label        => 'Ports that are blocking', | ||||
|         provides_csv => 1, | ||||
|     } | ||||
| ); | ||||
|  | ||||
| get '/ajax/content/report/portblocking' => require_login sub { | ||||
|     my @results = schema('netdisco')->resultset('Device')->search( | ||||
|         { 'stp' => [ 'blocking', 'broken' ], 'up' => { '!=', 'down' } }, | ||||
|         {   result_class => 'DBIx::Class::ResultClass::HashRefInflator', | ||||
|             select       => [ 'ip', 'dns', 'name' ], | ||||
|             join         => ['ports'], | ||||
|             '+columns'   => [ | ||||
|                 { 'port'        => 'ports.port' }, | ||||
|                 { 'description' => 'ports.name' }, | ||||
|                 { 'stp'         => 'ports.stp' }, | ||||
|             ], | ||||
|             order_by => { -asc => [qw/me.ip ports.port/] }, | ||||
|         } | ||||
|     )->all; | ||||
|  | ||||
|     return unless scalar @results; | ||||
|  | ||||
|     if ( request->is_ajax ) { | ||||
|         template 'ajax/report/portblocking.tt', { results => \@results, }, | ||||
|             { layout => undef }; | ||||
|     } | ||||
|     else { | ||||
|         header( 'Content-Type' => 'text/comma-separated-values' ); | ||||
|         template 'ajax/report/portblocking_csv.tt', | ||||
|             { results => \@results, }, | ||||
|             { layout  => undef }; | ||||
|     } | ||||
| }; | ||||
|  | ||||
| 1; | ||||
| @@ -34,6 +34,7 @@ path: '/' | ||||
| web_plugins: | ||||
|   - Inventory | ||||
|   - Report::PortAdminDown | ||||
|   - Report::PortBlocking | ||||
|   - Report::PortMultiNodes | ||||
|   - Report::PortUtilization | ||||
|   - Report::ApChannelDist | ||||
|   | ||||
							
								
								
									
										23
									
								
								Netdisco/share/views/ajax/report/portblocking.tt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								Netdisco/share/views/ajax/report/portblocking.tt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| [% USE Number.Format %] | ||||
| <table class="table table-bordered table-condensed table-striped nd_floatinghead"> | ||||
|   <thead> | ||||
|     <tr> | ||||
|       <th>Device</th> | ||||
|       <th class="nd_center-cell">Port</th> | ||||
|       <th class="nd_center-cell">Port Description</th>       | ||||
|       <th class="nd_center-cell">STP Status</th> | ||||
|     </tr> | ||||
|   </thead> | ||||
|   </tbody> | ||||
|     [% FOREACH row IN results %] | ||||
|     <tr> | ||||
|       <td>[% row.dns || row.name || row.ip | html_entity %]</td> | ||||
|       <td class="nd_center-cell"><a href="[% device_ports %]&q=[% row.dns || row.ip | uri %]&f=[% row.port | uri %]&c_nodes=on"> | ||||
|                [% row.port | html_entity %]</a></td> | ||||
|       <td class="nd_center-cell">[% row.description | html_entity %]</td> | ||||
|       <td class="nd_center-cell">[% row.stp | html_entity %]</td> | ||||
|     </tr> | ||||
|     [% END %] | ||||
|   </tbody> | ||||
| </table> | ||||
|  | ||||
							
								
								
									
										12
									
								
								Netdisco/share/views/ajax/report/portblocking_csv.tt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								Netdisco/share/views/ajax/report/portblocking_csv.tt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| [% USE CSV -%] | ||||
| [% CSV.dump([ 'Device' 'Port' 'Port Description' 'STP Status' ]) %] | ||||
|  | ||||
| [% FOREACH row IN results %] | ||||
|   [% mylist = [] %] | ||||
|   [% mylist.push(row.dns || row.name || row.ip) %] | ||||
|   [% mylist.push(row.port) %] | ||||
|   [% mylist.push(row.description) %] | ||||
|   [% mylist.push(row.stp) %] | ||||
|   [% CSV.dump(mylist) %] | ||||
|  | ||||
| [% END %] | ||||
		Reference in New Issue
	
	Block a user