diff --git a/includes/discovery/sensors/current/comware.inc.php b/includes/discovery/sensors/current/comware.inc.php new file mode 100644 index 0000000000..9a3dbe5561 --- /dev/null +++ b/includes/discovery/sensors/current/comware.inc.php @@ -0,0 +1,39 @@ + + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +if ($device['os'] == 'comware') { + echo 'Comware '; + + $multiplier = 1; + $divisor = 100000; + $divisor_alarm = 1000000; + foreach ($comware_oids as $index => $entry) { + if (is_numeric($entry['hh3cTransceiverBiasCurrent']) && $entry['hh3cTransceiverBiasCurrent'] != 2147483647) { + $oid = '.1.3.6.1.4.1.25506.2.70.1.1.1.17.15.' . $index; + $dbquery = dbFetchRows("SELECT `ifDescr` FROM `ports` WHERE `ifIndex`= ? AND `device_id` = ? AND `ifAdminStatus` = 'up'", array( + $index, + $device['device_id'] + )); + $limit_low = $entry['hh3cTransceiverBiasLoAlarm'] / $divisor_alarm; + $warn_limit_low = $entry['hh3cTransceiverBiasLoWarn'] / $divisor_alarm; + $limit = $entry['hh3cTransceiverBiasHiAlarm'] / $divisor_alarm; + $warn_limit = $entry['hh3cTransceiverBiasHiWarn'] / $divisor_alarm; + $current = $entry['hh3cTransceiverBiasCurrent'] / $divisor; + $entPhysicalIndex = $index; + $entPhysicalIndex_measured = 'ports'; + foreach ($dbquery as $dbindex => $dbresult) { + $descr = $dbresult['ifDescr'] . ' Bias Current'; + discover_sensor($valid['sensor'], 'current', $device, $oid, 'bias-' . $index, 'comware', $descr, $divisor, $multiplier, $limit_low, $warn_limit_low, $warn_limit, $limit, $current, 'snmp', $entPhysicalIndex, $entPhysicalIndex_measured); + } + } + } +} diff --git a/includes/discovery/sensors/dbm/comware.inc.php b/includes/discovery/sensors/dbm/comware.inc.php new file mode 100644 index 0000000000..ae7aae14e3 --- /dev/null +++ b/includes/discovery/sensors/dbm/comware.inc.php @@ -0,0 +1,63 @@ + + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +if ($device['os'] == 'comware') { + echo 'Comware '; + + // Based on 10G_BASE_LR_SFP, as HP does not provide threshold values through snmp + // Alarm thresholds: + // RX power(dBm) TX power(dBm) + // 2.50 3.50 + // -12.30 -11.20 + + $multiplier = 1; + $divisor = 100; + foreach ($comware_oids as $index => $entry) { + if (is_numeric($entry['hh3cTransceiverCurRXPower']) && $entry['hh3cTransceiverCurRXPower'] != 2147483647) { + $oid = '.1.3.6.1.4.1.25506.2.70.1.1.1.12.' . $index; + $dbquery = dbFetchRows("SELECT `ifDescr` FROM `ports` WHERE `ifIndex`= ? AND `device_id` = ? AND `ifAdminStatus` = 'up'", array( + $index, + $device['device_id'] + )); + $limit_low = -30; + $warn_limit_low = -12.3; + $limit = 2.5; + $warn_limit = -3; + $current = $entry['hh3cTransceiverCurRXPower'] / $divisor; + $entPhysicalIndex = $index; + $entPhysicalIndex_measured = 'ports'; + foreach ($dbquery as $dbindex => $dbresult) { + $descr = $dbresult['ifDescr'] . ' Rx Power'; + discover_sensor($valid['sensor'], 'dbm', $device, $oid, 'rx-' . $index, 'comware', $descr, $divisor, $multiplier, $limit_low, $warn_limit_low, $warn_limit, $limit, $current, 'snmp', $entPhysicalIndex, $entPhysicalIndex_measured); + } + } + + if (is_numeric($entry['hh3cTransceiverCurTXPower']) && $entry['hh3cTransceiverCurTXPower'] != 2147483647) { + $oid = '.1.3.6.1.4.1.25506.2.70.1.1.1.9.' . $index; + $dbquery = dbFetchRows("SELECT `ifDescr` FROM `ports` WHERE `ifIndex`= ? AND `device_id` = ? AND `ifAdminStatus` = 'up'", array( + $index, + $device['device_id'] + )); + $limit_low = -30; + $warn_limit_low = -11.2; + $limit = 3.5; + $warn_limit = -3; + $current = $entry['hh3cTransceiverCurTXPower'] / $divisor; + $entPhysicalIndex = $index; + $entPhysicalIndex_measured = 'ports'; + foreach ($dbquery as $dbindex => $dbresult) { + $descr = $dbresult['ifDescr'] . ' Tx Power'; + discover_sensor($valid['sensor'], 'dbm', $device, $oid, 'tx-' . $index, 'comware', $descr, $divisor, $multiplier, $limit_low, $warn_limit_low, $warn_limit, $limit, $current, 'snmp', $entPhysicalIndex, $entPhysicalIndex_measured); + } + } + } +} diff --git a/includes/discovery/sensors/pre-cache/comware.inc.php b/includes/discovery/sensors/pre-cache/comware.inc.php new file mode 100644 index 0000000000..ba6b1b7150 --- /dev/null +++ b/includes/discovery/sensors/pre-cache/comware.inc.php @@ -0,0 +1,23 @@ + + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +if ($device['os'] == 'comware') { + + echo 'Pre-cache Comware: '; + + $junos_oids = array(); + echo 'Caching OIDs:'; + + $comware_oids = snmpwalk_cache_multi_oid($device, 'hh3cTransceiverInfoTable', $oids, 'HH3C-TRANSCEIVER-INFO-MIB'); + +} + diff --git a/includes/discovery/sensors/temperatures/comware.inc.php b/includes/discovery/sensors/temperatures/comware.inc.php index eb107cc0f6..03129f74f8 100644 --- a/includes/discovery/sensors/temperatures/comware.inc.php +++ b/includes/discovery/sensors/temperatures/comware.inc.php @@ -11,18 +11,19 @@ */ if ($device['os'] == 'comware') { + echo 'Comware '; $entphydata = dbFetchRows("SELECT `entPhysicalIndex`, `entPhysicalClass`, `entPhysicalName` FROM `entPhysical` WHERE `device_id` = ? AND `entPhysicalClass` REGEXP 'module|sensor' ORDER BY `entPhysicalIndex`", array( $device['device_id'] )); if (!empty($entphydata)) { - - $tempdata = snmpwalk_cache_multi_oid($device, 'hh3cEntityExtTemperature', array(), 'HH3C-ENTITY-EXT-MIB'); - + + $tempdata = snmpwalk_cache_multi_oid($device, 'hh3cEntityExtTemperature', array(), 'HH3C-ENTITY-EXT-MIB'); + foreach ($entphydata as $index) { foreach ($tempdata as $tempindex => $value) { - if ($index['entPhysicalIndex'] == $tempindex) { + if ($index['entPhysicalIndex'] == $tempindex && $value['hh3cEntityExtTemperature'] != 65535) { $cur_oid = '.1.3.6.1.4.1.25506.2.6.1.1.1.1.12.'; discover_sensor($valid['sensor'], 'temperature', $device, $cur_oid . $tempindex, $tempindex, 'comware', $index['entPhysicalName'], '1', '1', null, null, null, null, $value['hh3cEntityExtTemperature'], 'snmp', $index); } @@ -30,4 +31,28 @@ if ($device['os'] == 'comware') { } } + + $multiplier = 1; + $divisor = 1; + $divisor_alarm = 1000; + foreach ($comware_oids as $index => $entry) { + if (is_numeric($entry['hh3cTransceiverTemperature']) && $entry['hh3cTransceiverTemperature'] != 2147483647) { + $oid = '.1.3.6.1.4.1.25506.2.70.1.1.1.15.' . $index; + $dbquery = dbFetchRows("SELECT `ifDescr` FROM `ports` WHERE `ifIndex`= ? AND `device_id` = ? AND `ifAdminStatus` = 'up'", array( + $index, + $device['device_id'] + )); + $limit_low = $entry[' hh3cTransceiverTempLoAlarm'] / $divisor_alarm; + $warn_limit_low = $entry[' hh3cTransceiverTempLoWarn'] / $divisor_alarm; + $limit = $entry[' hh3cTransceiverTempHiAlarm'] / $divisor_alarm; + $warn_limit = $entry[' hh3cTransceiverTempHiWarn'] / $divisor_alarm; + $current = $entry['hh3cTransceiverTemperature']; + $entPhysicalIndex = $index; + $entPhysicalIndex_measured = 'ports'; + foreach ($dbquery as $dbindex => $dbresult) { + $descr = $dbresult['ifDescr'] . ' Temperature'; + discover_sensor($valid['sensor'], 'temperature', $device, $oid, 'rx-' . $index, 'comware', $descr, $divisor, $multiplier, $limit_low, $warn_limit_low, $warn_limit, $limit, $current, 'snmp', $entPhysicalIndex, $entPhysicalIndex_measured); + } + } + } } diff --git a/includes/discovery/sensors/voltages/comware.inc.php b/includes/discovery/sensors/voltages/comware.inc.php new file mode 100644 index 0000000000..39157a8a65 --- /dev/null +++ b/includes/discovery/sensors/voltages/comware.inc.php @@ -0,0 +1,39 @@ + + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +if ($device['os'] == 'comware') { + echo 'Comware '; + + $multiplier = 1; + $divisor = 100; + $divisor_alarm = 10000; + foreach ($comware_oids as $index => $entry) { + if (is_numeric($entry['hh3cTransceiverVoltage']) && $entry['hh3cTransceiverVoltage'] != 2147483647) { + $oid = '.1.3.6.1.4.1.25506.2.70.1.1.1.16.' . $index; + $dbquery = dbFetchRows("SELECT `ifDescr` FROM `ports` WHERE `ifIndex`= ? AND `device_id` = ? AND `ifAdminStatus` = 'up'", array( + $index, + $device['device_id'] + )); + $limit_low = $entry['hh3cTransceiverVccLoAlarm'] / $divisor_alarm; + $warn_limit_low = $entry['hh3cTransceiverVccLoWarn'] / $divisor_alarm; + $limit = $entry['hh3cTransceiverVccHiAlarm'] / $divisor_alarm; + $warn_limit = $entry['hh3cTransceiverVccHiWarn'] / $divisor_alarm; + $current = $entry['hh3cTransceiverVoltage'] / $divisor; + $entPhysicalIndex = $index; + $entPhysicalIndex_measured = 'ports'; + foreach ($dbquery as $dbindex => $dbresult) { + $descr = $dbresult['ifDescr'] . ' Voltage'; + discover_sensor($valid['sensor'], 'voltage', $device, $oid, 'volt-' . $index, 'comware', $descr, $divisor, $multiplier, $limit_low, $warn_limit_low, $warn_limit, $limit, $current, 'snmp', $entPhysicalIndex, $entPhysicalIndex_measured); + } + } + } +}