implement connected devices list for ports
This commit is contained in:
		| @@ -64,16 +64,48 @@ __PACKAGE__->set_primary_key("port", "ip"); | ||||
| # Created by DBIx::Class::Schema::Loader v0.07015 @ 2012-01-07 14:20:02 | ||||
| # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:lcbweb0loNwHoWUuxTN/hA | ||||
|  | ||||
| __PACKAGE__->has_many( nodes => 'Netdisco::DB::Result::Node', | ||||
|     { | ||||
|       'foreign.switch' => 'self.ip', | ||||
|       'foreign.port' => 'self.port', | ||||
|     }, | ||||
|     { | ||||
|       prefetch => 'ips', | ||||
|       order_by => 'me.mac', | ||||
|       '+select' => [ | ||||
|         \"replace(age(me.time_last, me.time_recent)::text, 'mon', 'month')", | ||||
|       ], | ||||
|       '+as' => [ | ||||
|         'me.time_last', | ||||
|       ], | ||||
|     }, | ||||
| ); | ||||
|  | ||||
| sub get_nodes { | ||||
|     my ($row, $archive) = @_; | ||||
|     return $row->nodes({ ($archive ? () : ('me.active' => 1, 'ips.active' => 1)) }); | ||||
| } | ||||
|  | ||||
| __PACKAGE__->belongs_to( neighbor_alias => 'Netdisco::DB::Result::DeviceIp', | ||||
|     { | ||||
|       'foreign.alias' => 'self.remote_ip', | ||||
|     }, | ||||
|     { | ||||
|       join_type => 'left', | ||||
|     }, | ||||
| ); | ||||
| # FIXME make this more efficient by specifying the full join to DBIC | ||||
| sub neighbor { return eval { (shift)->neighbor_alias->device } } | ||||
| __PACKAGE__->belongs_to( device => 'Netdisco::DB::Result::Device', 'ip', | ||||
|   { | ||||
|     '+select' => [ | ||||
|       \"replace(age(timestamp 'epoch' + uptime / 100 * interval '1 second', timestamp '1970-01-01 00:00:00-00')::text, 'mon', 'month')", | ||||
|       \"to_char(last_discover, 'YYYY-MM-DD HH24:MI')", | ||||
|       \"to_char(last_macsuck,  'YYYY-MM-DD HH24:MI')", | ||||
|       \"to_char(last_arpnip,   'YYYY-MM-DD HH24:MI')", | ||||
|     ], | ||||
|     '+as' => [qw/ uptime last_discover last_macsuck last_arpnip /], | ||||
|   }, | ||||
|     { | ||||
|       '+select' => [ | ||||
|         \"replace(age(timestamp 'epoch' + uptime / 100 * interval '1 second', timestamp '1970-01-01 00:00:00-00')::text, 'mon', 'month')", | ||||
|         \"to_char(last_discover, 'YYYY-MM-DD HH24:MI')", | ||||
|         \"to_char(last_macsuck,  'YYYY-MM-DD HH24:MI')", | ||||
|         \"to_char(last_arpnip,   'YYYY-MM-DD HH24:MI')", | ||||
|       ], | ||||
|       '+as' => [qw/ uptime last_discover last_macsuck last_arpnip /], | ||||
|     }, | ||||
| ); | ||||
| __PACKAGE__->has_many( port_vlans_tagged => 'Netdisco::DB::Result::DevicePortVlan', | ||||
|     { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user