#68 Devices orphaned by missing topology info report
This commit is contained in:
		| @@ -58,6 +58,7 @@ web_plugins: | ||||
|   - AdminTask::PseudoDevice | ||||
|   - AdminTask::SlowDevices | ||||
|   - AdminTask::UndiscoveredNeighbors | ||||
|   - AdminTask::OrphanedDevices | ||||
|   - AdminTask::UserLog | ||||
|   - AdminTask::Users | ||||
|   - Search::Device | ||||
|   | ||||
							
								
								
									
										105
									
								
								Netdisco/share/views/ajax/admintask/orphaned.tt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								Netdisco/share/views/ajax/admintask/orphaned.tt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,105 @@ | ||||
| [% IF orphans.size > 0 %] | ||||
| <div class="accordion" id="accordion-orphans"> | ||||
|   <div class="accordion-group"> | ||||
|       <div class="accordion-heading">  | ||||
|           <a class="accordion-toggle" data-toggle="collapse" data-target="#collapse-orphan" href="#collapse-orphan"> | ||||
|             <i class="icon-chevron-up"></i>   | ||||
|             Orphaned Devices | ||||
|           </a> | ||||
|       </div> | ||||
|     <div id="collapse-orphan" class="accordion-body collapse"> | ||||
|       <div class="accordion-inner"> | ||||
|       <table class="table table-bordered table-condensed"> | ||||
|         <thead> | ||||
|           <tr> | ||||
|             <th>Device</th>             | ||||
|             <th>Location</th> | ||||
|             <th>Contact</th> | ||||
|             <th>Vendor</th> | ||||
|             <th>Model</th> | ||||
|           </tr> | ||||
|         </thead> | ||||
|         <tbody> | ||||
|           [% FOREACH row IN orphans %] | ||||
|           <tr> | ||||
|             <td><a href="[% uri_for('/device') %]?q=[% row.dns || row.ip | uri %]"> | ||||
|             [% row.dns || row.name || row.ip | html_entity %]</a></td> | ||||
|             <td> | ||||
|               [% IF row.location %] | ||||
|                 <a href="[% search_device %]&q=[% row.location | uri %]&location=[% row.location | uri %]"> | ||||
|                  [% row.location | html_entity %]</a> | ||||
|               [% ELSE %] | ||||
|                 [Not Set] | ||||
|               [% END %] | ||||
|             </td> | ||||
|             <td>[% row.contact | html_entity %]</td> | ||||
|             <td>[% row.vendor | html_entity %]</td> | ||||
|             <td>[% row.model | html_entity %]</td> | ||||
|           </tr> | ||||
|           [%END%] | ||||
|         </tbody> | ||||
|       </table> | ||||
|     </div> | ||||
|   </div> | ||||
|   </div> | ||||
| </div> | ||||
| [% END %] | ||||
| [%# The largest graph is considered the main network, all others are | ||||
|     considered orphaned, so we need two to generate div %] | ||||
| [% IF graphs.size > 1 %] | ||||
| <div class="accordion" id="accordion-networks"> | ||||
| [% count = 0 %] | ||||
| [% FOREACH network IN graphs %] | ||||
|   [% count = count + 1 %] | ||||
|   [%# The largest is not an orphan, so skip %] | ||||
|   [% NEXT IF count == 1 %] | ||||
|   <div class="accordion-group"> | ||||
|       <div class="accordion-heading">  | ||||
|           <a class="accordion-toggle" data-toggle="collapse" data-target="#collapse-[% count %]" href="#collapse-[% count %]"> | ||||
|             <i class="icon-chevron-up"></i>   | ||||
|               Orphaned Network: [% count - 1 | html_entity  %] Size: [% network.size | html_entity  %] Devices | ||||
|           </a> | ||||
|       </div> | ||||
|     <div id="collapse-[% count %]" class="accordion-body collapse"> | ||||
|       <div class="accordion-inner"> | ||||
|       <table class="table table-bordered table-condensed"> | ||||
|         <thead> | ||||
|           <tr> | ||||
|             <th>Device</th>             | ||||
|             <th>Location</th> | ||||
|             <th>Contact</th> | ||||
|             <th>Vendor</th> | ||||
|             <th>Model</th> | ||||
|           </tr> | ||||
|         </thead> | ||||
|         <tbody> | ||||
|         [% FOREACH row IN network %] | ||||
|           <tr> | ||||
|             <td><a href="[% uri_for('/device') %]?tab=netmap&q=[% row.dns || row.ip | uri %]"> | ||||
|             [% row.dns || row.name || row.ip | html_entity %]</a></td> | ||||
|             <td> | ||||
|               [% IF row.location %] | ||||
|                 <a href="[% search_device %]&q=[% row.location | uri %]&location=[% row.location | uri %]"> | ||||
|                  [% row.location | html_entity %]</a> | ||||
|               [% ELSE %] | ||||
|                 [Not Set] | ||||
|               [% END %] | ||||
|             </td> | ||||
|             <td>[% row.contact | html_entity %]</td> | ||||
|             <td>[% row.vendor | html_entity %]</td> | ||||
|             <td>[% row.model | html_entity %]</td> | ||||
|           </tr> | ||||
|         [% END %] | ||||
|         </tbody> | ||||
|       </table> | ||||
|     </div> | ||||
|   </div> | ||||
|   </div> | ||||
| [% END %] | ||||
| </div> | ||||
| [% END %] | ||||
| <script> | ||||
| $('.accordion').on('show hide', function (n) { | ||||
|     $(n.target).siblings('.accordion-heading').find('.accordion-toggle i').toggleClass('icon-chevron-up icon-chevron-down'); | ||||
| }); | ||||
| </script> | ||||
							
								
								
									
										51
									
								
								Netdisco/share/views/ajax/admintask/orphaned_csv.tt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								Netdisco/share/views/ajax/admintask/orphaned_csv.tt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | ||||
| [% USE CSV -%] | ||||
| [% CSV.dump(['Orphaned Devices']) %] | ||||
|  | ||||
| [% CSV.dump([ 'Device' 'IP' 'Device Location' 'Contact' ' Vendor' | ||||
|               'Model' ]) %] | ||||
|  | ||||
| [% FOREACH row IN orphans %] | ||||
|   [% mydlist = [] %] | ||||
|   [% mydevice = row.dns || row.name %] | ||||
|   [% mydlist.push(mydevice) %] | ||||
|   [% mydlist.push(row.ip) %] | ||||
|   [% mydlist.push(row.location) %] | ||||
|   [% mydlist.push(row.contact) %] | ||||
|   [% mydlist.push(row.vendor) %] | ||||
|   [% mydlist.push(row.model) %] | ||||
|   [% CSV.dump(mydlist) %] | ||||
|  | ||||
| [% END %] | ||||
|  | ||||
| [% IF graphs.size > 1 %] | ||||
| [% count = 0 %] | ||||
| [% FOREACH network IN graphs %] | ||||
|   [% count = count + 1 %] | ||||
|   [%# The largest is not an orphan, so skip %] | ||||
|   [% NEXT IF count == 1 %] | ||||
|  | ||||
|   [% CSV.dump([' ']) %] | ||||
|  | ||||
|   [% ntwk_header = [] %] | ||||
|   [% ntwk_header.push('Orphaned Network') %] | ||||
|   [% ntwk_header.push(count - 1) %] | ||||
|  | ||||
|   [% CSV.dump(ntwk_header) %] | ||||
|  | ||||
|   [% CSV.dump([ 'Device' 'IP' 'Device Location' 'Contact' ' Vendor' | ||||
|               'Model' ]) %] | ||||
|  | ||||
|   [% FOREACH row IN network %] | ||||
|     [% mydlist = [] %] | ||||
|     [% mydevice = row.dns || row.name %] | ||||
|     [% mydlist.push(mydevice) %] | ||||
|     [% mydlist.push(row.ip) %] | ||||
|     [% mydlist.push(row.location) %] | ||||
|     [% mydlist.push(row.contact) %] | ||||
|     [% mydlist.push(row.vendor) %] | ||||
|     [% mydlist.push(row.model) %] | ||||
|     [% CSV.dump(mydlist) %] | ||||
|  | ||||
|   [% END %] | ||||
| [% END %] | ||||
| [% END %] | ||||
		Reference in New Issue
	
	Block a user