Files
netdisco/lib/App/Netdisco/DB/Result/DeviceBrowser.pm
Oliver Gorwits 9eb537a4c1 #910 implement import of snmpwalk and more robust snapshot handling (#1086)
* initial work

* initial work

* initial work

* some fixes for time and Layer3 weird spec

* store again the snapshot after update for specific

* resolve the enums

* monkeypatch SNMP::translateObj to avoid hardware exception on macOS

* only save cache to db in the late phase worker

* no need to check for cache on transport, can just go ahead and try

* use database only for oidmap instead of netdisco-mibs

* rewrite device snapshot to gather loaded mib leafs only

* remove old walker code from snapshot worker

* allow snmp browser to work without snapshot

* only store snapshot leafs which the device responded on

* refactor to separate snapshot work from snmp transport work

* refactor to separate snapshot work from snmp transport work

* allow typeahead on MIB qualified leafs

* fixes for snmpwalk input after previous refactor

* add the extra stuff SNMP::Info device class uses into snapshot

* better width for snmp search box

* fix css for snmp options

* add spinner while snmp loading

* add spinner while snmp loading

* add spinner while snmp loading

* support SNMP::Info device class or named MIBs as extra on snapshot

* add final tidy and bug fix
2023-08-10 22:27:02 +01:00

53 lines
1.3 KiB
Perl

use utf8;
package App::Netdisco::DB::Result::DeviceBrowser;
use strict;
use warnings;
use base 'App::Netdisco::DB::Result';
__PACKAGE__->table("device_browser");
__PACKAGE__->add_columns(
"ip",
{ data_type => "inet", is_nullable => 0 },
"oid",
{ data_type => "text", is_nullable => 0 },
"oid_parts",
{ data_type => "integer[]", is_nullable => 0 },
"leaf",
{ data_type => "text", is_nullable => 0 },
"munge",
{ data_type => "text", is_nullable => 1 },
"value",
{ data_type => "text", is_nullable => 1 },
);
__PACKAGE__->set_primary_key("ip", "oid");
=head1 RELATIONSHIPS
=head2 snmp_object
Returns the SNMP Object table entry to which the given row is related. The
idea is that you always get the SNMP Object row data even if the Device
Browser table doesn't have any walked data.
However you probably want to use the C<snmp_object> method in the
C<DeviceBrowser> ResultSet instead, so you can pass the IP address.
=cut
__PACKAGE__->belongs_to(
snmp_object => 'App::Netdisco::DB::Result::SNMPObject',
sub {
my $args = shift;
return {
"$args->{self_alias}.oid" => { -ident => "$args->{foreign_alias}.oid" },
"$args->{self_alias}.ip" => { '=' => \'?' },
};
},
{ join_type => 'RIGHT' }
);
__PACKAGE__->belongs_to( oid_fields => 'App::Netdisco::DB::Result::SNMPObject', 'oid' );
1;