diff --git a/LibreNMS/Util/ModuleTestHelper.php b/LibreNMS/Util/ModuleTestHelper.php index 62a114d0d2..a973eeafd8 100644 --- a/LibreNMS/Util/ModuleTestHelper.php +++ b/LibreNMS/Util/ModuleTestHelper.php @@ -241,9 +241,10 @@ class ModuleTestHelper continue; } - if (str_contains($line, ' = ')) { - list($oid, $raw_data) = explode(' = ', $line, 2); + if (str_contains($line, ' =')) { + list($oid, $raw_data) = explode(' =', $line, 2); $oid = ltrim($oid, '.'); + $raw_data = trim($raw_data); if (empty($raw_data)) { $result[] = "$oid|4|"; // empty data, we don't know type, put string diff --git a/includes/common.php b/includes/common.php index 0de727b957..41d54e8bf3 100644 --- a/includes/common.php +++ b/includes/common.php @@ -360,6 +360,7 @@ function device_by_id_cache($device_id, $refresh = false) $device = $cache['devices']['id'][$device_id]; } else { $device = dbFetchRow("SELECT * FROM `devices` WHERE `device_id` = ?", array($device_id)); + load_os($device); //order vrf_lite_cisco with context, this will help to get the vrf_name and instance_name all the time $vrfs_lite_cisco = dbFetchRows("SELECT * FROM `vrf_lite_cisco` WHERE `device_id` = ?", array($device_id)); @@ -1559,14 +1560,16 @@ function display($value, $purifier_config = array()) * $device['os'] must be set * * @param array $device - * @throws Exception No OS to load */ function load_os(&$device) { global $config; + if (!isset($device['os'])) { - throw new Exception('No OS to load'); + d_echo('No OS to load'); + return; } + $tmp_os = Symfony\Component\Yaml\Yaml::parse( file_get_contents($config['install_dir'] . '/includes/definitions/' . $device['os'] . '.yaml') ); diff --git a/tests/data/arista_eos.json b/tests/data/arista_eos.json new file mode 100644 index 0000000000..4969e3280c --- /dev/null +++ b/tests/data/arista_eos.json @@ -0,0 +1,186 @@ +{ + "bgp-peers": { + "discovery": { + "devices": [ + { + "bgpLocalAs": "65000" + } + ], + "bgpPeers": [ + { + "astext": "", + "bgpPeerIdentifier": "192.168.0.2", + "bgpPeerRemoteAs": "65000", + "bgpPeerState": "idle", + "bgpPeerAdminStatus": "stop", + "bgpLocalAddr": "0.0.0.0", + "bgpPeerRemoteAddr": "0.0.0.0", + "bgpPeerInUpdates": "0", + "bgpPeerOutUpdates": "0", + "bgpPeerInTotalMessages": "0", + "bgpPeerOutTotalMessages": "0", + "bgpPeerFsmEstablishedTime": "0", + "bgpPeerInUpdateElapsedTime": "0", + "context_name": "" + }, + { + "astext": "", + "bgpPeerIdentifier": "2001:0550:0002:002f:0000:0000:0033:0001", + "bgpPeerRemoteAs": "65001", + "bgpPeerState": "idle", + "bgpPeerAdminStatus": "stop", + "bgpLocalAddr": "0.0.0.0", + "bgpPeerRemoteAddr": "0.0.0.0", + "bgpPeerInUpdates": "0", + "bgpPeerOutUpdates": "0", + "bgpPeerInTotalMessages": "0", + "bgpPeerOutTotalMessages": "0", + "bgpPeerFsmEstablishedTime": "0", + "bgpPeerInUpdateElapsedTime": "0", + "context_name": "" + } + ], + "bgpPeers_cbgp": [ + { + "bgpPeerIdentifier": "192.168.0.2", + "afi": "ipv4", + "safi": "unicast", + "AcceptedPrefixes": "0", + "DeniedPrefixes": "0", + "PrefixAdminLimit": "0", + "PrefixThreshold": "0", + "PrefixClearThreshold": "0", + "AdvertisedPrefixes": "0", + "SuppressedPrefixes": "0", + "WithdrawnPrefixes": "0", + "AcceptedPrefixes_delta": "0", + "AcceptedPrefixes_prev": "0", + "DeniedPrefixes_delta": "0", + "DeniedPrefixes_prev": "0", + "AdvertisedPrefixes_delta": "0", + "AdvertisedPrefixes_prev": "0", + "SuppressedPrefixes_delta": "0", + "SuppressedPrefixes_prev": "0", + "WithdrawnPrefixes_delta": "0", + "WithdrawnPrefixes_prev": "0", + "context_name": "" + }, + { + "bgpPeerIdentifier": "2001:0550:0002:002f:0000:0000:0033:0001", + "afi": "ipv6", + "safi": "unicast", + "AcceptedPrefixes": "0", + "DeniedPrefixes": "0", + "PrefixAdminLimit": "0", + "PrefixThreshold": "0", + "PrefixClearThreshold": "0", + "AdvertisedPrefixes": "0", + "SuppressedPrefixes": "0", + "WithdrawnPrefixes": "0", + "AcceptedPrefixes_delta": "0", + "AcceptedPrefixes_prev": "0", + "DeniedPrefixes_delta": "0", + "DeniedPrefixes_prev": "0", + "AdvertisedPrefixes_delta": "0", + "AdvertisedPrefixes_prev": "0", + "SuppressedPrefixes_delta": "0", + "SuppressedPrefixes_prev": "0", + "WithdrawnPrefixes_delta": "0", + "WithdrawnPrefixes_prev": "0", + "context_name": "" + } + ] + }, + "poller": { + "devices": [ + { + "bgpLocalAs": "65000" + } + ], + "bgpPeers": [ + { + "astext": "", + "bgpPeerIdentifier": "192.168.0.2", + "bgpPeerRemoteAs": "65000", + "bgpPeerState": "established", + "bgpPeerAdminStatus": "running", + "bgpLocalAddr": "", + "bgpPeerRemoteAddr": "0.0.0.0", + "bgpPeerInUpdates": "13362513", + "bgpPeerOutUpdates": "13579799", + "bgpPeerInTotalMessages": "0", + "bgpPeerOutTotalMessages": "0", + "bgpPeerFsmEstablishedTime": "4", + "bgpPeerInUpdateElapsedTime": "0", + "context_name": "" + }, + { + "astext": "", + "bgpPeerIdentifier": "2001:0550:0002:002f:0000:0000:0033:0001", + "bgpPeerRemoteAs": "65001", + "bgpPeerState": "established", + "bgpPeerAdminStatus": "running", + "bgpLocalAddr": "2001:0550:0002:002f:0000:0000:0033:0002", + "bgpPeerRemoteAddr": "0.0.0.0", + "bgpPeerInUpdates": "12658044", + "bgpPeerOutUpdates": "118", + "bgpPeerInTotalMessages": "0", + "bgpPeerOutTotalMessages": "0", + "bgpPeerFsmEstablishedTime": "1551697", + "bgpPeerInUpdateElapsedTime": "0", + "context_name": "" + } + ], + "bgpPeers_cbgp": [ + { + "bgpPeerIdentifier": "192.168.0.2", + "afi": "ipv4", + "safi": "unicast", + "AcceptedPrefixes": "540339", + "DeniedPrefixes": "0", + "PrefixAdminLimit": "0", + "PrefixThreshold": "0", + "PrefixClearThreshold": "0", + "AdvertisedPrefixes": "0", + "SuppressedPrefixes": "0", + "WithdrawnPrefixes": "0", + "AcceptedPrefixes_delta": "540339", + "AcceptedPrefixes_prev": "0", + "DeniedPrefixes_delta": "0", + "DeniedPrefixes_prev": "0", + "AdvertisedPrefixes_delta": "0", + "AdvertisedPrefixes_prev": "0", + "SuppressedPrefixes_delta": "0", + "SuppressedPrefixes_prev": "0", + "WithdrawnPrefixes_delta": "0", + "WithdrawnPrefixes_prev": "0", + "context_name": "" + }, + { + "bgpPeerIdentifier": "2001:0550:0002:002f:0000:0000:0033:0001", + "afi": "ipv6", + "safi": "unicast", + "AcceptedPrefixes": "40633", + "DeniedPrefixes": "0", + "PrefixAdminLimit": "0", + "PrefixThreshold": "0", + "PrefixClearThreshold": "0", + "AdvertisedPrefixes": "0", + "SuppressedPrefixes": "0", + "WithdrawnPrefixes": "0", + "AcceptedPrefixes_delta": "40633", + "AcceptedPrefixes_prev": "0", + "DeniedPrefixes_delta": "0", + "DeniedPrefixes_prev": "0", + "AdvertisedPrefixes_delta": "0", + "AdvertisedPrefixes_prev": "0", + "SuppressedPrefixes_delta": "0", + "SuppressedPrefixes_prev": "0", + "WithdrawnPrefixes_delta": "0", + "WithdrawnPrefixes_prev": "0", + "context_name": "" + } + ] + } + } +} \ No newline at end of file diff --git a/tests/snmpsim/arista_eos.snmprec b/tests/snmpsim/arista_eos.snmprec index 3e5816702c..73de0e33e2 100644 --- a/tests/snmpsim/arista_eos.snmprec +++ b/tests/snmpsim/arista_eos.snmprec @@ -1,2 +1,32 @@ 1.3.6.1.2.1.1.1.0|4|Arista Networks EOS version 4.15.3F running on an Arista Networks DCS-7050TX-128 -1.3.6.1.2.1.1.2.0|6|1.3.6.1.4.1..30065.1.3011.7050.1958.128 +1.3.6.1.2.1.1.2.0|6|1.3.6.1.4.1.30065.1.3011.7050.1958.128 +1.3.6.1.2.1.1.3.0|67|2793316199 +1.3.6.1.2.1.1.5.0|4| +1.3.6.1.2.1.1.6.0|4| +1.3.6.1.2.1.15.2.0|2|65000 +1.3.6.1.2.1.25.1.1.0|67|2793326600 +1.3.6.1.4.1.30065.4.1.1.2.1.3.1.1.4.192.168.0.2|4x|17AA8001 +1.3.6.1.4.1.30065.4.1.1.2.1.3.1.2.16.32.1.5.80.0.2.0.47.0.0.0.0.0.51.0.1|4x|200105500002002F0000000000330002 +1.3.6.1.4.1.30065.4.1.1.2.1.10.1.1.4.192.168.0.2|66|65000 +1.3.6.1.4.1.30065.4.1.1.2.1.10.1.2.16.32.1.5.80.0.2.0.47.0.0.0.0.0.51.0.1|66|65001 +1.3.6.1.4.1.30065.4.1.1.2.1.12.1.1.4.192.168.0.2|2|2 +1.3.6.1.4.1.30065.4.1.1.2.1.12.1.2.16.32.1.5.80.0.2.0.47.0.0.0.0.0.51.0.1|2|2 +1.3.6.1.4.1.30065.4.1.1.2.1.13.1.1.4.192.168.0.2|2|6 +1.3.6.1.4.1.30065.4.1.1.2.1.13.1.2.16.32.1.5.80.0.2.0.47.0.0.0.0.0.51.0.1|2|6 +1.3.6.1.4.1.30065.4.1.1.4.1.1.1.1.4.192.168.0.2|66|13090321 +1.3.6.1.4.1.30065.4.1.1.4.1.1.1.2.16.32.1.5.80.0.2.0.47.0.0.0.0.0.51.0.1|66|1551697 +1.3.6.1.4.1.30065.4.1.1.4.1.2.1.1.4.192.168.0.2|66|4 +1.3.6.1.4.1.30065.4.1.1.4.1.2.1.2.16.32.1.5.80.0.2.0.47.0.0.0.0.0.51.0.1|66|17 +1.3.6.1.4.1.30065.4.1.1.7.1.1.1.1.4.192.168.0.2|65|13362513 +1.3.6.1.4.1.30065.4.1.1.7.1.1.1.2.16.32.1.5.80.0.2.0.47.0.0.0.0.0.51.0.1|65|12658044 +1.3.6.1.4.1.30065.4.1.1.7.1.2.1.1.4.192.168.0.2|65|6500126734 +1.3.6.1.4.1.30065.4.1.1.7.1.2.1.2.16.32.1.5.80.0.2.0.47.0.0.0.0.0.51.0.1|65|118 +1.3.6.1.4.1.30065.4.1.1.7.1.3.1.1.4.192.168.0.2|65|13579799 +1.3.6.1.4.1.30065.4.1.1.7.1.3.1.2.16.32.1.5.80.0.2.0.47.0.0.0.0.0.51.0.1|65|12658183 +1.3.6.1.4.1.30065.4.1.1.7.1.4.1.1.4.192.168.0.2|65|17644316 +1.3.6.1.4.1.30065.4.1.1.7.1.4.1.2.16.32.1.5.80.0.2.0.47.0.0.0.0.0.51.0.1|65|447455 +1.3.6.1.4.1.30065.4.1.1.8.1.3.1.1.4.192.168.0.2.1.1|66|540336 +1.3.6.1.4.1.30065.4.1.1.8.1.3.1.2.16.32.1.5.80.0.2.0.47.0.0.0.0.0.51.0.1.2.1|66|41030 +1.3.6.1.4.1.30065.4.1.1.8.1.4.1.1.4.192.168.0.2.1.1|66|540339 +1.3.6.1.4.1.30065.4.1.1.8.1.4.1.2.16.32.1.5.80.0.2.0.47.0.0.0.0.0.51.0.1.2.1|66|40633 +1.3.6.1.6.3.10.2.1.3.0|2|26373899