Module: check_mk
Branch: master
Commit: 72e20b1d8341077428b17a9418c09d65e634a4b8
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=72e20b1d834107…
Author: Andreas <ab(a)mathias-kettner.de>
Date: Thu Jun 7 15:21:53 2018 +0200
added WK5817
Change-Id: If0ac5ff56d39e1fcd3c6928e9051dfca2796631e
---
.werks/5817 | 11 +++++++++++
cmk_base/data_sources/abstract.py | 31 ++-----------------------------
cmk_base/data_sources/tcp.py | 34 ++++++++++++++++++++++++++++++++++
3 files changed, 47 insertions(+), 29 deletions(-)
diff --git a/.werks/5817 b/.werks/5817
new file mode 100644
index 0000000..cc110df
--- /dev/null
+++ b/.werks/5817
@@ -0,0 +1,11 @@
+Title: The "Check for correct version of Check_MK agent" rule no longer applies
to datasource programs
+Level: 1
+Component: checks
+Class: fix
+Compatible: compat
+Edition: cre
+State: unknown
+Version: 1.6.0i1
+Date: 1528376768
+
+The version checking is now correctly restricted to agent output from remote Check_MK
agents.
diff --git a/cmk_base/data_sources/abstract.py b/cmk_base/data_sources/abstract.py
index 4c38217..1a599ac 100644
--- a/cmk_base/data_sources/abstract.py
+++ b/cmk_base/data_sources/abstract.py
@@ -696,43 +696,16 @@ class CheckMKAgentDataSource(DataSource):
# TODO: refactor
def _summary_result(self):
- expected_version = config.agent_target_version(self._hostname)
-
agent_info = self._get_agent_info()
agent_version = agent_info["version"]
-
- status, output, perfdata = 0, [], []
-
+ output = []
if not config.is_cluster(self._hostname) and agent_version != None:
output.append("Version: %s" % agent_version)
if not config.is_cluster(self._hostname) and agent_info["agentos"] !=
None:
output.append("OS: %s" % agent_info["agentos"])
- if expected_version and agent_version \
- and not self._is_expected_agent_version(agent_version, expected_version):
- # expected version can either be:
- # a) a single version string
- # b) a tuple of ("at_least", {'daily_build':
'2014.06.01', 'release': '1.2.5i4'}
- # (the dict keys are optional)
- if type(expected_version) == tuple and expected_version[0] ==
'at_least':
- expected = 'at least'
- if 'daily_build' in expected_version[1]:
- expected += ' build %s' %
expected_version[1]['daily_build']
- if 'release' in expected_version[1]:
- if 'daily_build' in expected_version[1]:
- expected += ' or'
- expected += ' release %s' %
expected_version[1]['release']
- else:
- expected = expected_version
- output.append("unexpected agent version %s (should be %s), " %
(agent_version, expected))
- status = self._exit_code_spec.get("wrong_version", 1)
-
- elif config.agent_min_version and agent_version < config.agent_min_version:
- output.append("old plugin version %s (should be at least %s), " %
(agent_version, config.agent_min_version))
- status = self._exit_code_spec.get("wrong_version", 1)
-
- return status, ", ".join(output), []
+ return 0, ", ".join(output), []
def _get_agent_info(self):
diff --git a/cmk_base/data_sources/tcp.py b/cmk_base/data_sources/tcp.py
index 6b2070e..1572425 100644
--- a/cmk_base/data_sources/tcp.py
+++ b/cmk_base/data_sources/tcp.py
@@ -160,6 +160,40 @@ class TCPDataSource(CheckMKAgentDataSource):
return output
+ # TODO: refactor
+ def _summary_result(self):
+ agent_info = self._get_agent_info()
+ agent_version = agent_info["version"]
+
+ status, output, perfdata = super(TCPDataSource, self)._summary_result()
+
+ expected_version = config.agent_target_version(self._hostname)
+ if expected_version and agent_version \
+ and not self._is_expected_agent_version(agent_version, expected_version):
+ # expected version can either be:
+ # a) a single version string
+ # b) a tuple of ("at_least", {'daily_build':
'2014.06.01', 'release': '1.2.5i4'}
+ # (the dict keys are optional)
+ if type(expected_version) == tuple and expected_version[0] ==
'at_least':
+ expected = 'at least'
+ if 'daily_build' in expected_version[1]:
+ expected += ' build %s' %
expected_version[1]['daily_build']
+ if 'release' in expected_version[1]:
+ if 'daily_build' in expected_version[1]:
+ expected += ' or'
+ expected += ' release %s' %
expected_version[1]['release']
+ else:
+ expected = expected_version
+ output += ", unexpected agent version %s (should be %s)" %
(agent_version, expected)
+ status = self._exit_code_spec.get("wrong_version", 1)
+
+ elif config.agent_min_version and agent_version < config.agent_min_version:
+ output += ", old plugin version %s (should be at least %s)" %
(agent_version, config.agent_min_version)
+ status = self._exit_code_spec.get("wrong_version", 1)
+
+ return status, output, perfdata
+
+
def _decrypt_package(self, encrypted_pkg, encryption_key):
from Cryptodome.Cipher import AES
from hashlib import md5