Module: check_mk
Branch: master
Commit: 19a1b928f23d3a8e6218d439d821f03ec9465920
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=19a1b928f23d3a…
Author: Simon Betz <si(a)mathias-kettner.de>
Date: Tue Mar 19 15:20:04 2019 +0100
7124 FIX Check_MK Discovery/Inventory: Removed duplicate agent info monitoring
The agent information is already checked by the {{Check_MK}} service itself.
Change-Id: Iec162ac2c86d5c569abe3ec97b74367e2ac08e47
---
.werks/7124 | 15 +++++++++++++++
cmk_base/checking.py | 2 +-
cmk_base/data_sources/abstract.py | 17 +++++++++++++----
cmk_base/data_sources/ipmi.py | 2 +-
cmk_base/data_sources/piggyback.py | 2 +-
cmk_base/data_sources/tcp.py | 19 ++++++++++---------
cmk_base/discovery.py | 2 +-
cmk_base/inventory.py | 2 +-
8 files changed, 43 insertions(+), 18 deletions(-)
diff --git a/.werks/7124 b/.werks/7124
new file mode 100644
index 0000000..8a5bc9b
--- /dev/null
+++ b/.werks/7124
@@ -0,0 +1,15 @@
+Title: Check_MK Discovery/Inventory: Removed duplicate agent info monitoring
+Level: 1
+Component: checks
+Compatible: compat
+Edition: cre
+Version: 1.6.0i1
+Date: 1553005141
+Class: fix
+
+Previously the agent information about agent version and only-from
+configuration was checked by the {{Check_MK}}, {{Check_MK Discovery}}
+and {{Check_MK HW/SW Inventory}} service.
+
+We removed this duplicate agent information monitoring from the
+{{Check_MK Discovery}} and {{Check_MK HW/SW Inventory}} service.
diff --git a/cmk_base/checking.py b/cmk_base/checking.py
index 69a60f8..6519db0 100644
--- a/cmk_base/checking.py
+++ b/cmk_base/checking.py
@@ -110,7 +110,7 @@ def do_check(hostname, ipaddress, only_check_plugin_names=None):
item_state.save(hostname)
for source in sources.get_data_sources():
- source_state, source_output, source_perfdata = source.get_summary_result()
+ source_state, source_output, source_perfdata =
source.get_summary_result_for_checking()
if source_output != "":
status = max(status, source_state)
infotexts.append("[%s] %s" % (source.id(), source_output))
diff --git a/cmk_base/data_sources/abstract.py b/cmk_base/data_sources/abstract.py
index 7a9f140..768a542 100644
--- a/cmk_base/data_sources/abstract.py
+++ b/cmk_base/data_sources/abstract.py
@@ -359,7 +359,16 @@ class DataSource(object):
# TODO: Refactor the returned data of this method and self._summary_result()
# to some wrapped object like CheckResult(...)
- def get_summary_result(self):
+ def get_summary_result_for_discovery(self):
+ return self._get_summary_result(for_checking=False)
+
+ def get_summary_result_for_inventory(self):
+ return self._get_summary_result(for_checking=False)
+
+ def get_summary_result_for_checking(self):
+ return self._get_summary_result()
+
+ def _get_summary_result(self, for_checking=True):
"""Returns a three element tuple of state, output and perfdata
(list) that summarizes
the execution result of this data source.
@@ -367,7 +376,7 @@ class DataSource(object):
"Check_MK HW/SW Inventory" services."""
if not self._exception:
- return self._summary_result()
+ return self._summary_result(for_checking)
exc_msg = "%s" % self._exception
@@ -385,7 +394,7 @@ class DataSource(object):
return status, exc_msg + check_api_utils.state_markers[status], []
- def _summary_result(self):
+ def _summary_result(self, for_checking):
"""Produce a source specific summary result in case no exception
occured.
When an exception occured while processing a data source, the generic
@@ -646,7 +655,7 @@ class CheckMKAgentDataSource(DataSource):
return HostSections(sections, agent_cache_info, piggybacked_raw_data,
persisted_sections)
# TODO: refactor
- def _summary_result(self):
+ def _summary_result(self, for_checking):
agent_info = self._get_agent_info()
agent_version = agent_info["version"]
output = []
diff --git a/cmk_base/data_sources/ipmi.py b/cmk_base/data_sources/ipmi.py
index f060c30..0644af2 100644
--- a/cmk_base/data_sources/ipmi.py
+++ b/cmk_base/data_sources/ipmi.py
@@ -191,7 +191,7 @@ class IPMIManagementBoardDataSource(ManagementBoardDataSource,
CheckMKAgentDataS
return output
- def _summary_result(self):
+ def _summary_result(self, for_checking):
return 0, "Version: %s" % self._get_ipmi_version(), []
def _get_ipmi_version(self):
diff --git a/cmk_base/data_sources/piggyback.py b/cmk_base/data_sources/piggyback.py
index d7eb135..10def70 100644
--- a/cmk_base/data_sources/piggyback.py
+++ b/cmk_base/data_sources/piggyback.py
@@ -67,7 +67,7 @@ class PiggyBackDataSource(CheckMKAgentDataSource):
self._logger.verbose("Execute data source")
return self._execute(), False
- def _summary_result(self):
+ def _summary_result(self, for_checking):
"""Returns useful information about the data source execution
Return only summary information in case there is piggyback
data"""
diff --git a/cmk_base/data_sources/tcp.py b/cmk_base/data_sources/tcp.py
index e65a716..e3d0891 100644
--- a/cmk_base/data_sources/tcp.py
+++ b/cmk_base/data_sources/tcp.py
@@ -235,18 +235,19 @@ class TCPDataSource(CheckMKAgentDataSource):
return 1, ", invalid access configuration: %s%s" \
% (", ".join(infotexts), state_markers[1])
- def _summary_result(self):
+ def _summary_result(self, for_checking):
agent_info = self._get_agent_info()
- status, output, perfdata = super(TCPDataSource, self)._summary_result()
+ status, output, perfdata = super(TCPDataSource,
self)._summary_result(for_checking)
infotexts = [output]
- for sub_status, sub_output in [
- self._sub_result_version(agent_info),
- self._sub_result_only_from(agent_info),
- ]:
- status = max(status, sub_status)
- if sub_output:
- infotexts.append(sub_output)
+ if for_checking:
+ for sub_status, sub_output in [
+ self._sub_result_version(agent_info),
+ self._sub_result_only_from(agent_info),
+ ]:
+ status = max(status, sub_status)
+ if sub_output:
+ infotexts.append(sub_output)
return status, ", ".join(infotexts), perfdata
diff --git a/cmk_base/discovery.py b/cmk_base/discovery.py
index 53726bb..ae98174 100644
--- a/cmk_base/discovery.py
+++ b/cmk_base/discovery.py
@@ -403,7 +403,7 @@ def check_discovery(hostname, ipaddress):
# Add data source information to check results
for source in sources.get_data_sources():
- source_state, source_output, _source_perfdata = source.get_summary_result()
+ source_state, source_output, _source_perfdata =
source.get_summary_result_for_discovery()
# Do not output informational (state = 0) things. These information are shown by
the "Check_MK" service
if source_state != 0:
status = max(status, source_state)
diff --git a/cmk_base/inventory.py b/cmk_base/inventory.py
index f1f54fb..0f558b3 100644
--- a/cmk_base/inventory.py
+++ b/cmk_base/inventory.py
@@ -147,7 +147,7 @@ def do_inv_check(hostname, options):
infotexts.append("Found %s status entries" %
status_data_tree.count_entries())
for source in sources.get_data_sources():
- source_state, source_output, _source_perfdata = source.get_summary_result()
+ source_state, source_output, _source_perfdata =
source.get_summary_result_for_inventory()
# Do not output informational (state = 0) things. These information are shown by
the "Check_MK" service
if source_state != 0:
status = max(source_state, status)