Fix some issues with cisco entity sensors (#16365)

This commit is contained in:
Tony Murray 2024-09-06 10:46:52 -05:00 committed by GitHub
parent 2ba6f164f2
commit 0b9312a77a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -34,6 +34,10 @@ $tables = [
['num_oid' => '.1.3.6.1.4.1.9.9.601.1.3.1.1.4.', 'oid' => 'crepSegmentComplete', 'state_name' => 'crepSegmentComplete', 'mib' => 'CISCO-RESILIENT-ETHERNET-PROTOCOL-MIB', 'descr' => 'REP State - Segment '], ['num_oid' => '.1.3.6.1.4.1.9.9.601.1.3.1.1.4.', 'oid' => 'crepSegmentComplete', 'state_name' => 'crepSegmentComplete', 'mib' => 'CISCO-RESILIENT-ETHERNET-PROTOCOL-MIB', 'descr' => 'REP State - Segment '],
]; ];
$swrolenumber = 0;
$swstatenumber = 0;
$repsegmentnumber = 0;
foreach ($tables as $tablevalue) { foreach ($tables as $tablevalue) {
//Some switches on 15.x expose this information regardless if they are stacked or not, we try to mitigate that by doing the following. //Some switches on 15.x expose this information regardless if they are stacked or not, we try to mitigate that by doing the following.
if (($tablevalue['oid'] == 'cswGlobals' || $tablevalue['oid'] == 'cswSwitchRole' || $tablevalue['oid'] == 'cswSwitchState' || $tablevalue['oid'] == 'cswStackPortOperStatus') && $redundant_data == 'false' && count($role_data) == 1) { if (($tablevalue['oid'] == 'cswGlobals' || $tablevalue['oid'] == 'cswSwitchRole' || $tablevalue['oid'] == 'cswSwitchState' || $tablevalue['oid'] == 'cswStackPortOperStatus') && $redundant_data == 'false' && count($role_data) == 1) {
@ -44,7 +48,7 @@ foreach ($tables as $tablevalue) {
$cur_oid = $tablevalue['num_oid']; $cur_oid = $tablevalue['num_oid'];
if (is_array($temp)) { if (is_array($temp)) {
if (isset($temp[0]) && $temp[0][$tablevalue['state_name']] == 'nonRedundant' || $temp[0]['cswMaxSwitchNum'] == '1') { if ((isset($temp[0][$tablevalue['state_name']]) && $temp[0][$tablevalue['state_name']] == 'nonRedundant') || (isset($temp[0]['cswMaxSwitchNum']) && $temp[0]['cswMaxSwitchNum'] == '1')) {
break; break;
} }
@ -200,11 +204,11 @@ foreach ($tables as $tablevalue) {
foreach ($temp as $index => $entry) { foreach ($temp as $index => $entry) {
$state_group = null; $state_group = null;
if ($tablevalue['state_name'] == 'ciscoEnvMonTemperatureState' && (empty($temp[$index][$tablevalue['descr']]))) { if ($tablevalue['state_name'] == 'ciscoEnvMonTemperatureState' && (empty($entry[$tablevalue['descr']]))) {
d_echo('Invalid sensor, skipping..'); d_echo('Invalid sensor, skipping..');
} else { } else {
//Discover Sensors //Discover Sensors
$descr = ucwords($temp[$index][$tablevalue['descr']]); $descr = ucwords($entry[$tablevalue['descr']] ?? 'State');
if ($state_name == 'cRFStatusUnitState' || $state_name == 'cRFStatusPeerUnitState' || $state_name == 'cRFCfgRedundancyOperMode' || $state_name == 'cswRingRedundant') { if ($state_name == 'cRFStatusUnitState' || $state_name == 'cRFStatusPeerUnitState' || $state_name == 'cRFCfgRedundancyOperMode' || $state_name == 'cswRingRedundant') {
$descr = $tablevalue['descr']; $descr = $tablevalue['descr'];
} elseif ($state_name == 'cswSwitchRole') { } elseif ($state_name == 'cswSwitchRole') {
@ -225,7 +229,7 @@ foreach ($tables as $tablevalue) {
$repsegmentnumber++; $repsegmentnumber++;
$descr = $tablevalue['descr'] . $repsegmentnumber; $descr = $tablevalue['descr'] . $repsegmentnumber;
} }
discover_sensor(null, 'state', $device, $cur_oid . $index, $index, $state_name, trim($descr), 1, 1, null, null, null, null, $temp[$index][$tablevalue['state_name']], 'snmp', $index, null, null, $state_group); discover_sensor(null, 'state', $device, $cur_oid . $index, $index, $state_name, trim($descr), 1, 1, null, null, null, null, $entry[$tablevalue['state_name']], 'snmp', $index, null, null, $state_group);
//Create Sensor To State Index //Create Sensor To State Index
create_sensor_to_state_index($device, $state_name, $index); create_sensor_to_state_index($device, $state_name, $index);