App-Netdisco

 view release on metacpan or  search on metacpan

lib/App/Netdisco/Worker/Plugin/LoadMIBs.pm  view on Meta::CPAN

      leaf   => $leaf,
      type   => $type,
      access => $access,
      index  => [($index ? (split m/:/, $index) : ())],
      status => $status,
      enum   => [($enum  ? (split m/:/, $enum ) : ())],
      descr  => $descr,
    };
  }

  foreach my $row (@browser) {
    $row->{num_children} = $children{ $row->{oid} } || 0;
  }

  debug sprintf "loadmibs - loaded %d objects from netdisco-mibs",
    scalar @browser;

  schema('netdisco')->txn_do(sub {
    my $gone = schema('netdisco')->resultset('SNMPObject')->delete;
    debug sprintf 'loadmibs - removed %d oids', $gone;
    schema('netdisco')->resultset('SNMPObject')->populate(\@browser);
    debug sprintf 'loadmibs - added %d new oids', scalar @browser;
  });

  # promote snapshots prior to loadmibs to be browsable
  schema('netdisco')->txn_do(sub {
    my @devices = schema('netdisco')
          ->resultset('DeviceBrowser')
          ->search({ -bool => \q{ array_length(oid_parts, 1) IS NULL } })
          ->distinct('ip')->get_column('ip')->all;

    foreach my $ip (@devices) {
        my $dev = get_device($ip);
        next unless $dev->in_storage;
        debug sprintf 'loadmibs - promoting snapshot for %s to be browsable', $dev->ip;
        make_snmpwalk_browsable($dev);
    }
  });

  # legacy snapshot upgrade
  schema('netdisco')->txn_do(sub {
    my $legacy_rs = schema('netdisco')
          ->resultset('DeviceBrowser')
          ->search({ -bool => \q{ jsonb_typeof(value) != 'array' } });

    if ($legacy_rs->count) {
        my @rows = $legacy_rs->hri->all;
        my $gone = $legacy_rs->delete;
        
        # the legacy looks like encode_base64( nfreeze( [$data] ) )
        foreach my $row (@rows) {
            my $value = (@{ thaw( decode_base64( from_json($row->{value}) ) ) })[0];
            $value = (ref {} eq ref $value)
              ? { map {($_ => (defined $value->{$_} ? encode_base64($value->{$_}, '') : undef))}
                  keys %$value }
              : (defined $value ? encode_base64($value, '') : undef);
            $row->{value} = to_json([$value]);
        }

        schema('netdisco')->resultset('DeviceBrowser')->populate(\@rows);
        debug sprintf 'loadmibs - updated %d legacy snapshot rows', scalar @rows;
    }
  });

  return Status->done('Loaded MIBs');
});

true;

__DATA__
ad_lag_ports	SNMP::Info::munge_port_list
adminAgentPhysAddress	SNMP::Info::munge_mac
adminAgentPhysAddress.0	SNMP::Info::munge_mac
ag_mod2_type	SNMP::Info::munge_e_type
ag_mod_type	SNMP::Info::munge_e_type
agentInterfaceMacAddress	SNMP::Info::munge_mac
aipAMAPRemHostname	SNMP::Info::munge_null
airespace_ap_ethermac	SNMP::Info::munge_mac
airespace_ap_mac	SNMP::Info::munge_mac
airespace_bl_mac	SNMP::Info::munge_mac
airespace_if_mac	SNMP::Info::munge_mac
airespace_sta_mac	SNMP::Info::munge_mac
alHardwareFan1RpmAlarm	SNMP::Info::Layer3::Altiga::munge_alarm
alHardwareFan2RpmAlarm	SNMP::Info::Layer3::Altiga::munge_alarm
alHardwareFan3RpmAlarm	SNMP::Info::Layer3::Altiga::munge_alarm
alHardwarePs1Voltage3vAlarm	SNMP::Info::Layer3::Altiga::munge_alarm
alHardwarePs1Voltage5vAlarm	SNMP::Info::Layer3::Altiga::munge_alarm
alHardwarePs2Voltage3vAlarm	SNMP::Info::Layer3::Altiga::munge_alarm
alHardwarePs2Voltage5vAlarm	SNMP::Info::Layer3::Altiga::munge_alarm
amap_rem_sysname	SNMP::Info::munge_null
ap_if_mac	SNMP::Info::munge_mac
aruba_ap_bssid_ssid	SNMP::Info::munge_null
aruba_ap_fqln	SNMP::Info::Layer3::Aruba::munge_aruba_fqln
aruba_ap_type	SNMP::Info::munge_e_type
aruba_card_type	SNMP::Info::munge_e_type
aruba_user_bssid	SNMP::Info::munge_mac
atPhysAddress	SNMP::Info::munge_mac
at_paddr	SNMP::Info::munge_mac
awcIfPhysAddress	SNMP::Info::munge_mac
awc_mac	SNMP::Info::munge_mac
b_mac	SNMP::Info::munge_mac
bs_mac	SNMP::Info::munge_mac
bsnAPDot3MacAddress	SNMP::Info::munge_mac
bsnAPEthernetMacAddress	SNMP::Info::munge_mac
bsnBlackListClientMacAddress	SNMP::Info::munge_mac
bsnMobileStationAPMacAddr	SNMP::Info::munge_mac
bsnMobileStationMacAddress	SNMP::Info::munge_mac
bsnMobileStationPacketsReceived	SNMP::Info::Airespace::munge_64bits
bsnMobileStationPacketsSent	SNMP::Info::Airespace::munge_64bits
cDot11ClientCurrentTxRateSet	SNMP::Info::Layer2::Aironet::munge_cd11_txrate
cDot11ClientDataRateSet	SNMP::Info::Layer2::Aironet::munge_cd11_txrate
cInetNetToMediaPhysAddress	SNMP::Info::IPv6::munge_physaddr
cLApIfMacAddress	SNMP::Info::munge_mac
c_id	SNMP::Info::Layer2::HP::munge_hp_c_id
c_inet_phys_addr	SNMP::Info::IPv6::munge_physaddr
cbgpPeer2LastError	SNMP::Info::munge_octet2hex
cbgpPeer2LocalAddr	SNMP::Info::munge_inetaddress
cd11_proto	SNMP::Info::Layer2::Airespace::munge_cd11_proto
cd11_rateset	SNMP::Info::Layer2::Aironet::munge_cd11_txrate
cd11_rxpkt	SNMP::Info::Airespace::munge_64bits
cd11_ssid	SNMP::Info::munge_null



( run in 0.998 second using v1.01-cache-2.11-cpan-39bf76dae61 )