Module: check_mk
Branch: master
Commit: 4d98cac478d017ecb4b568bff713cd230333c705
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=4d98cac478d017…
Author: Andreas <ab(a)mathias-kettner.de>
Date: Fri Jun 8 08:57:17 2018 +0200
Revert "Revert "added WK5818""
This reverts commit fc68605ce7d06882b72169fb4de7b234fc58ff6b.
Change-Id: I550e6dce667e2a3f1ebf12d2fda5d3f1df6859f3
---
.werks/5818 | 9 +++++++++
cmk_base/data_sources/__init__.py | 5 +++++
cmk_base/data_sources/abstract.py | 39 --------------------------------------
cmk_base/data_sources/tcp.py | 40 +++++++++++++++++++++++++++++++++++++++
4 files changed, 54 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..2c62226 100644
--- a/cmk_base/data_sources/tcp.py
+++ b/cmk_base/data_sources/tcp.py
@@ -32,6 +32,7 @@ import subprocess
import cmk.debug
from cmk.exceptions import MKTerminate
+import cmk_base.utils as utils
import cmk_base.console as console
import cmk_base.config as config
import cmk_base.checks as checks
@@ -194,6 +195,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 utils.is_daily_build_version(agent_version) and 'daily_build'
in spec:
+ expected = int(spec['daily_build'].replace('.',
''))
+
+ branch = 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 utils.is_daily_build_version(agent_version):
+ return False
+
+ if utils.parse_check_mk_version(agent_version) \
+ < 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