From d005b601b9751fffdb9f46aebea3ed1e96c9da5f Mon Sep 17 00:00:00 2001 From: Rasmus Aberg Date: Tue, 21 Jul 2015 17:08:09 +0200 Subject: [PATCH] moved roundme function to common.php and enabled it to round to 10th/100th/1000th based on of 10/100/1000 input --- includes/common.php | 15 +++++++++++ includes/discovery/fanspeeds/extreme.inc.php | 26 ++++++-------------- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/includes/common.php b/includes/common.php index b0cd6c7af0..af127932c5 100644 --- a/includes/common.php +++ b/includes/common.php @@ -699,4 +699,19 @@ function get_graph_subtypes($type) { return $types; } +/* + * @return rounded value to 10th/100th/1000th depending on input (valid: 10, 100, 1000) + */ +function round_Nth($val = 0, $round_to) { + if (($round_to == "10") || ($round_to == "100") || ($round_to == "1000")) { + $diff = $val % $round_to; + if ($diff >= ($round_to / 2)) { + $ret = $val + ($round_to-$diff); + } else { + $ret = $val - $diff; + } + return $ret; + } +} + ?> diff --git a/includes/discovery/fanspeeds/extreme.inc.php b/includes/discovery/fanspeeds/extreme.inc.php index 9ce1a10a72..c314b8e2b5 100644 --- a/includes/discovery/fanspeeds/extreme.inc.php +++ b/includes/discovery/fanspeeds/extreme.inc.php @@ -1,17 +1,6 @@ = 50) { - $ret = $val + (100-$diff); - } else { - $ret = $val - $diff; - } - return $ret; - } - echo(" EXTREME-BASE-MIB "); // Fan Speed @@ -24,13 +13,14 @@ if ($device['os'] == 'xos') { $index = $matches[1]; // substract 100 from index to start from 1 instead of 101 $modindex = ($index - 100); - $oid = "1.3.6.1.4.1.1916.1.1.1.9.1.4.$index"; - $value = snmp_get($device, $oid, '-Oqv', 'EXTREME-BASE-MIB'); - $descr = "Fan Speed $modindex"; - $high_limit = roundme($value * 1.5); - $high_warn_limit = roundme($value * 1.25); - $low_warn_limit = roundme($value * 0.75); - $low_limit = roundme($value * 0.5); + $oid = "1.3.6.1.4.1.1916.1.1.1.9.1.4.$index"; + $value = snmp_get($device, $oid, '-Oqv', 'EXTREME-BASE-MIB'); + $descr = "Fan Speed $modindex"; + // round function used to round limit values to hundreds to avoid h/w/l limits being changed on every discovery as a change of 1rpm for fan speed would cause the limit values to change since they're dynamically calculated + $high_limit = round_Nth(($value * 1.5), 100); + $high_warn_limit = round_Nth(($value * 1.25), 100); + $low_warn_limit = round_Nth(($value * 0.75), 100); + $low_limit = round_Nth(($value * 0.5), 100); if (is_numeric($value)) { discover_sensor($valid['sensor'], 'fanspeed', $device, $oid, $index, 'extreme-fanspeed', $descr, '1', '1', $low_limit, $low_warn_limit, $high_warn_limit, $high_limit, $value); }