Module: check_mk
Branch: master
Commit: 70942f23d7c0440662094cb2d1b4c8e60567008c
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=70942f23d7c044…
Author: Moritz Kiemer <mo(a)mathias-kettner.de>
Date: Fri Jan 11 11:04:37 2019 +0100
6955 lparstat_aix: Add CPU entitlement info to HW/SW inventory
CMK-1297
Change-Id: I2d33e54d9597cbfcd4c8c0afd08e2273d36bb37f
---
.werks/6955 | 10 +++++++++
checks/lparstat_aix | 3 +++
cmk/gui/plugins/views/inventory.py | 8 ++++++-
inventory/lparstat_aix | 46 ++++++++++++++++++++++++++++++++++++++
inventory/prtconf | 10 +++++----
5 files changed, 72 insertions(+), 5 deletions(-)
diff --git a/.werks/6955 b/.werks/6955
new file mode 100644
index 0000000..b253010
--- /dev/null
+++ b/.werks/6955
@@ -0,0 +1,10 @@
+Title: lparstat_aix: Add CPU entitlement info to HW/SW inventory
+Level: 1
+Component: inv
+Compatible: compat
+Edition: cre
+Version: 1.6.0i1
+Date: 1547200846
+Class: feature
+
+
diff --git a/checks/lparstat_aix b/checks/lparstat_aix
index 76980e9..b1ae2f0 100644
--- a/checks/lparstat_aix
+++ b/checks/lparstat_aix
@@ -40,6 +40,9 @@ def parse_lparstat_aix(info):
# get system config:
kv_pairs = (word for word in info[0] if '=' in word)
parsed = {'system_config': dict(kv.split('=', 1) for kv in
kv_pairs)}
+ # from
ibm.com: 'If there are two SMT threads, the row is displayed as
"on."'
+ if parsed['system_config'].get('smt', '').lower() ==
'on':
+ parsed['system_config']['smt'] = '2'
for index, key in enumerate(info[1]):
name = key.lstrip('%')
diff --git a/cmk/gui/plugins/views/inventory.py b/cmk/gui/plugins/views/inventory.py
index 53f6192..8d3f142 100644
--- a/cmk/gui/plugins/views/inventory.py
+++ b/cmk/gui/plugins/views/inventory.py
@@ -616,13 +616,19 @@ inventory_displayhints.update({
".hardware.cpu.cores_per_cpu": {"title": _("Cores per
CPU"), "paint": "count"},
".hardware.cpu.threads_per_cpu": {"title": _("Hyperthreads
per CPU"), "paint": "count"},
".hardware.cpu.threads": {"title": _("Total Number of
Hyperthreads"), "paint": "count"},
+ ".hardware.cpu.smt_threads": {"title": _("Simultaneous
multithreading"), "paint": "count"},
+ ".hardware.cpu.sharing_mode": {"title": _("CPU sharing
mode")},
".hardware.cpu.cpus": {
- "title": _("Total Number of CPUs"), "short":
_("CPUs"), "paint": "count"
+ "title": _("Number of physical CPUs"), "short":
_("CPUs"), "paint": "count"
+ },
+ ".hardware.cpu.logical_cpus": {
+ "title": _("Number of logical CPUs"), "short":
_("Logical CPUs"), "paint": "count"
},
".hardware.cpu.arch": {"title": _("CPU Architecture"),
"short": _("CPU Arch")},
".hardware.cpu.cores": {
"title": _("Total Number of Cores"), "short":
_("Cores"), "paint": "count"
},
+ ".hardware.cpu.entitlement": {"title": _("CPU
Entitlement")},
".hardware.memory.": {"title": _("Memory (RAM)")},
".hardware.memory.total_ram_usable": {"title": _("Total
usable RAM"), "paint": "bytes_rounded"},
".hardware.memory.total_swap": {"title": _("Total swap
space"), "paint": "bytes_rounded"},
diff --git a/inventory/lparstat_aix b/inventory/lparstat_aix
new file mode 100644
index 0000000..e548ce3
--- /dev/null
+++ b/inventory/lparstat_aix
@@ -0,0 +1,46 @@
+#!/usr/bin/python
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2013 mk(a)mathias-kettner.de |
+# +------------------------------------------------------------------+
+#
+# This file is part of Check_MK.
+# The official homepage is at
http://mathias-kettner.de/check_mk.
+#
+# check_mk 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 in version 2. check_mk is distributed
+# in the hope that it will be useful, but WITHOUT ANY WARRANTY; with-
+# out even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more de-
+# tails. You should have received a copy of the GNU General Public
+# License along with GNU Make; see the file COPYING. If not, write
+# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301 USA.
+
+
+def inv_lparstat_aix(parsed, inventory_tree):
+ data = parsed.get('system_config', {})
+ node = inventory_tree.get_dict('hardware.cpu.')
+
+ sharing_mode = '-'.join(data.get(k) for k in ('type', 'mode')
if data.get(k))
+ if sharing_mode:
+ node['sharing_mode'] = sharing_mode
+
+ for nkey, dkey in [("smt_threads", "smt"),
("entitlement", "ent"), ("cpus", "psize"),
+ ("logical_cpus", "lcpu")]:
+ try:
+ node[nkey] = data[dkey]
+ except KeyError:
+ pass
+
+
+inv_info['lparstat_aix'] = {
+ "inv_function": inv_lparstat_aix,
+}
diff --git a/inventory/prtconf b/inventory/prtconf
index 6aeeb8a..3164545 100644
--- a/inventory/prtconf
+++ b/inventory/prtconf
@@ -59,13 +59,15 @@ def inv_prtconf(info):
if line[0].startswith("========="):
break # ignore the rest of the output currently
+ cpu_dict = inv_tree("hardware.cpu.")
+
for varname, value in confdict.items():
if varname == "CPU Type":
if value == "64-bit":
arch = "ppc64"
else:
arch = "ppc"
- inv_tree("hardware.cpu.")["arch"] = arch
+ cpu_dict["arch"] = arch
elif varname == "Kernel Type":
if value == "64-bit":
@@ -75,13 +77,13 @@ def inv_prtconf(info):
inv_tree("software.os.")["arch"] = arch
elif varname == "Processor Type":
- inv_tree("hardware.cpu.")["model"] = value
+ cpu_dict["model"] = value
elif varname == "Processor Clock Speed":
- inv_tree("hardware.cpu.")["max_speed"] =
float(value.split()[0]) * 1000 * 1000
+ cpu_dict["max_speed"] = float(value.split()[0]) * 1000 * 1000
elif varname == "Number Of Processors":
- inv_tree("hardware.cpu.")["cpus"] = int(value)
+ cpu_dict.setdefault("cpus", int(value))
elif varname == "Firmware Version":
inv_tree("hardware.bios.")["version"] = value