Module: check_mk
Branch: master
Commit: d6227564203a0fc7c57c1a19c8808db0f438061d
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=d6227564203a0f…
Author: Andreas <ab(a)mathias-kettner.de>
Date: Thu Jun 7 18:46:16 2018 +0200
added WK5818
Change-Id: I080ac1ffc26512d1ef6b64ef5952ac988da54f14
---
.werks/5818 | 9 +++++++++
cmk_base/data_sources/__init__.py | 5 +++++
cmk_base/data_sources/abstract.py | 39 ---------------------------------------
cmk_base/data_sources/tcp.py | 39 +++++++++++++++++++++++++++++++++++++++
4 files changed, 53 insertions(+), 39 deletions(-)
diff --git a/.werks/5818 b/.werks/5818
new file mode 100644
index 0000000..d184b2e
--- /dev/null
+++ b/.werks/5818
@@ -0,0 +1,9 @@
+Title: Fixed "unknown agent version" message in Check_MK check, shown by
cluster hosts
+Level: 1
+Component: checks
+Compatible: compat
+Edition: cre
+Version: 1.6.0i1
+Date: 1528389637
+Class: fix
+
diff --git a/cmk_base/data_sources/__init__.py b/cmk_base/data_sources/__init__.py
index 3a03826..af4f586 100644
--- a/cmk_base/data_sources/__init__.py
+++ b/cmk_base/data_sources/__init__.py
@@ -107,6 +107,11 @@ class DataSources(object):
def _initialize_data_sources(self):
self._sources = {}
+ if config.is_cluster(self._hostname):
+ # Cluster hosts do not have any actual data sources
+ # Instead all data is provided by the nodes
+ return
+
self._initialize_agent_based_data_sources()
self._initialize_snmp_data_sources()
self._initialize_management_board_data_sources()
diff --git a/cmk_base/data_sources/abstract.py b/cmk_base/data_sources/abstract.py
index 1a599ac..7afea91 100644
--- a/cmk_base/data_sources/abstract.py
+++ b/cmk_base/data_sources/abstract.py
@@ -726,45 +726,6 @@ class CheckMKAgentDataSource(DataSource):
return agent_info
- def _is_expected_agent_version(self, agent_version, expected_version):
- try:
- if agent_version in [ '(unknown)', None, 'None' ]:
- return False
-
- if type(expected_version) == str and expected_version != agent_version:
- return False
-
- elif type(expected_version) == tuple and expected_version[0] ==
'at_least':
- spec = expected_version[1]
- if cmk_base.utils.is_daily_build_version(agent_version) and
'daily_build' in spec:
- expected = int(spec['daily_build'].replace('.',
''))
-
- branch = cmk_base.utils.branch_of_daily_build(agent_version)
- if branch == "master":
- agent = int(agent_version.replace('.', ''))
-
- else: # branch build (e.g. 1.2.4-2014.06.01)
- agent =
int(agent_version.split('-')[1].replace('.', ''))
-
- if agent < expected:
- return False
-
- elif 'release' in spec:
- if cmk_base.utils.is_daily_build_version(agent_version):
- return False
-
- if cmk_base.utils.parse_check_mk_version(agent_version) \
- <
cmk_base.utils.parse_check_mk_version(spec['release']):
- return False
-
- return True
- except Exception, e:
- if cmk.debug.enabled():
- raise
- raise MKGeneralException("Unable to check agent version (Agent: %s
Expected: %s, Error: %s)" %
- (agent_version, expected_version, e))
-
-
class ManagementBoardDataSource(DataSource):
"""Abstract base class for all data sources that work with the
management board configuration"""
diff --git a/cmk_base/data_sources/tcp.py b/cmk_base/data_sources/tcp.py
index 1572425..42875b6 100644
--- a/cmk_base/data_sources/tcp.py
+++ b/cmk_base/data_sources/tcp.py
@@ -194,6 +194,45 @@ class TCPDataSource(CheckMKAgentDataSource):
return status, output, perfdata
+ def _is_expected_agent_version(self, agent_version, expected_version):
+ try:
+ if agent_version in [ '(unknown)', None, 'None' ]:
+ return False
+
+ if type(expected_version) == str and expected_version != agent_version:
+ return False
+
+ elif type(expected_version) == tuple and expected_version[0] ==
'at_least':
+ spec = expected_version[1]
+ if cmk_base.utils.is_daily_build_version(agent_version) and
'daily_build' in spec:
+ expected = int(spec['daily_build'].replace('.',
''))
+
+ branch = cmk_base.utils.branch_of_daily_build(agent_version)
+ if branch == "master":
+ agent = int(agent_version.replace('.', ''))
+
+ else: # branch build (e.g. 1.2.4-2014.06.01)
+ agent =
int(agent_version.split('-')[1].replace('.', ''))
+
+ if agent < expected:
+ return False
+
+ elif 'release' in spec:
+ if cmk_base.utils.is_daily_build_version(agent_version):
+ return False
+
+ if cmk_base.utils.parse_check_mk_version(agent_version) \
+ <
cmk_base.utils.parse_check_mk_version(spec['release']):
+ return False
+
+ return True
+ except Exception, e:
+ if cmk.debug.enabled():
+ raise
+ raise MKGeneralException("Unable to check agent version (Agent: %s
Expected: %s, Error: %s)" %
+ (agent_version, expected_version, e))
+
+
def _decrypt_package(self, encrypted_pkg, encryption_key):
from Cryptodome.Cipher import AES
from hashlib import md5