1<?php
2
3/**
4 * Observium
5 *
6 *   This file is part of Observium.
7 *
8 * @package    observium
9 * @subpackage discovery
10 * @copyright  (C) 2006-2013 Adam Armstrong, (C) 2013-2019 Observium Limited
11 *
12 */
13
14// DELL-NETWORKING-CHASSIS-MIB::dellNetCpuUtilMemUsage.stack.1.1 = Gauge32: 41 percent
15// DELL-NETWORKING-CHASSIS-MIB::dellNetProcessorMemSize.stack.1.1 = INTEGER: 2029
16
17$mempool_array = snmpwalk_cache_threepart_oid($device, 'dellNetCpuUtilMemUsage', array(), $mib, NULL, OBS_SNMP_ALL_NUMERIC_INDEX);
18if (is_array($mempool_array))
19{
20  $mempool_array = snmpwalk_cache_threepart_oid($device, 'dellNetProcessorMemSize', $mempool_array, $mib, NULL, OBS_SNMP_ALL_NUMERIC_INDEX);
21  if (OBS_DEBUG > 1 && count($mempool_array)) { print_vars($mempool_array); }
22
23  foreach ($mempool_array as $type => $entry1)
24  {
25    // Hrm, this is possible for multiple types?
26    $first_unit = array_shift(array_keys($entry1));
27    foreach ($entry1 as $unit => $entry2)
28    {
29      $mempool_count = count($entry2);
30      foreach ($entry2 as $mempool => $entry)
31      {
32        $index     = "{$type}.{$unit}.{$mempool}";
33        $dot_index = ".{$index}";
34        $descr     = 'Unit ' . strval($unit - $first_unit);
35        if ($mempool_count > 1)
36        {
37          $descr  .= " Memory {$mempool}";
38        }
39
40        $oid_table = 'dellNetCpuUtilTable';
41        $oid_name  = 'dellNetCpuUtilMemUsage';
42        $precision = 1024 * 1024;
43        $total     = $entry['dellNetProcessorMemSize'];
44        $percent   = $entry['dellNetCpuUtilMemUsage'];
45        $used      = $total * $percent / 100;
46
47        discover_mempool($valid['mempool'], $device, $index, $mib, $descr, $precision, $total, $used);
48      }
49    }
50  }
51}
52
53unset ($mempool_array, $index, $descr, $precision, $total, $used, $percent);
54
55// EOF
56