Update IronWare sensors & bgp-peers discovery, allow skip_values to target a specific index appended to the OID (#10941)

* Migrate ironware sensor discovery from php to yaml.

* More sensors, add grouping.

* dynamic_discovery_get_value() becomes getValueFromData()

* Target a specific index with skip_values.

* Improve Brocade BGP session discovery/polling

This commit allows for the correct discovery of BGP sessions
with 32-bit ASNs, IPv6 neighbors using the BGP4V2-MIB which is
based on draft-ietf-idr-bgp4-mibv2-11 and also polls for IPv4
unicast received routes through the FOUNDRY-SN-BGP4-GROUP-MIB.

Copied most of the code from PR#8877 by @Mikeburke14, cleaned
up the code a little bit to match the normal LibreNMS style,
and fixed bgpPeers_cbgp discovery as well as polling for the
ipv4.unicast neighbors.

Note that older Brocade IronWare firmware versions are known
to have multiple defects relating to the BGP4V2-MIB which
might result in certain missing non-established neighbors.

Related vendor defect numbers:

- DEFECT000633962
-- Symptom: The OID bgp4V2PeerAdminStatus does not return the
            correct value
-- Reported: NI 05.7.00
-- Resolved: NI 05.8.00g

- DEFECT000583319
-- Symptom: SNMP polling on bgp4V2PeerTable (OID brcdIp.3.5.1.1.2)
            does not display all the BGP entries
-- Reported: NI 05.6.00
-- Resolved: NI 05.8.00e

- DEFECT000550309
-- Symptom: SNMP polling on bgp4V2PeerTable (OID brcdIp.3.5.1.1.2)
            does not display the full information
-- Reported: NI 05.7.00
-- Resolved: NI 05.8.00c

* Add ironware CER & ICX platform test data.

* Re-add ironware.json compatible with current master branch.
This commit is contained in:
Martijn Schmidt
2020-02-01 23:28:03 +01:00
committed by GitHub
parent 398d5fe2b7
commit a64bd45dbc
14 changed files with 29126 additions and 265 deletions

View File

@@ -2528,17 +2528,6 @@ function get_device_oid_limit($device)
return $global_max > 0 ? $global_max : 10;
}
/**
* Strip out non-numeric characters
*/
function return_num($entry)
{
if (!is_numeric($entry)) {
preg_match('/-?\d*\.?\d+/', $entry, $num_response);
return $num_response[0];
}
}
/**
* If Distributed, create a lock, then purge the mysql table
*