From a874882e6e1e176f1e72adf3a48bf3029f7c44bc Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Mon, 8 Aug 2022 08:45:36 +0100 Subject: [PATCH] error message to user to load mibs --- lib/App/Netdisco/Web/Plugin/Device/SNMP.pm | 25 ++++++++++++++-------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/lib/App/Netdisco/Web/Plugin/Device/SNMP.pm b/lib/App/Netdisco/Web/Plugin/Device/SNMP.pm index 7a3fdea4..a2323e39 100644 --- a/lib/App/Netdisco/Web/Plugin/Device/SNMP.pm +++ b/lib/App/Netdisco/Web/Plugin/Device/SNMP.pm @@ -34,9 +34,23 @@ ajax '/ajax/data/device/:ip/snmptree/:base' => require_login sub { my $base = param('base'); $base =~ m/^\.1(\.\d+)*$/ or send_error('Bad OID Base', 404); - my $items = _get_snmp_data($device->ip, $base); - content_type 'application/json'; + + return to_json [{ + text => 'No MIB data. Please run `~/bin/netdisco-do loadmibs`.', + children => \0, + state => { disabled => \1 }, + icon => 'icon-search', + }] unless schema('netdisco')->resultset('SNMPObject')->count(); + + return to_json [{ + text => 'No data for this device. You can request a snapshot in the Details tab.', + children => \0, + state => { disabled => \1 }, + icon => 'icon-search', + }] unless schema('netdisco')->resultset('DeviceSnapshot')->find($device->ip); + + my $items = _get_snmp_data($device->ip, $base); to_json $items; }; @@ -123,13 +137,6 @@ sub _get_snmp_data { my ($ip, $base, $recurse) = @_; my @parts = grep {length} split m/\./, $base; - return [{ - text => 'No data for this device. You can request a snapshot in the Details tab.', - children => \0, - state => { disabled => \1 }, - icon => 'icon-search', - }] unless schema('netdisco')->resultset('DeviceSnapshot')->find($ip); - my %meta = map { ('.'. join '.', @{$_->{oid_parts}}) => $_ } schema('netdisco')->resultset('Virtual::FilteredSNMPObject') ->search({}, { bind => [