Module: check_mk
Branch: master
Commit: 9a317cdd138796040aa27228874ebe8a2e99743b
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=9a317cdd138796…
Author: Moritz Kiemer <mo(a)mathias-kettner.de>
Date: Wed Jan 30 13:17:17 2019 +0100
mk_jolokia: use 'version' method
We now use the proper 'version' method of the jolokia protocol
(
https://jolokia.org/reference/html/protocol.html).
Also fixes two bugs that snuck in during refactoring.
Change-Id: I9b8a97f692d1a3ca6d16b78e87a464592900d66f
---
agents/plugins/mk_jolokia.py | 22 +++++++++++-----------
tests/unit/plugins/test_mk_jolokia.py | 2 +-
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/agents/plugins/mk_jolokia.py b/agents/plugins/mk_jolokia.py
index 90f4b44..252057a 100755
--- a/agents/plugins/mk_jolokia.py
+++ b/agents/plugins/mk_jolokia.py
@@ -249,7 +249,7 @@ class JolokiaInstance(object):
self._session = self._initialize_http_session()
def _get_base_url(self):
- return "%s://%s:%d/%s" % (
+ return "%s://%s:%d/%s/" % (
self._config["protocol"].strip('/'),
self._config["server"].strip('/'),
self._config["port"],
@@ -302,9 +302,9 @@ class JolokiaInstance(object):
def get_post_data(self, path, function, use_target):
segments = path.strip("/").split("/")
- data = {"mbean": segments[0], "attribute": segments[1]}
- if len(segments) > 2:
- data["path"] = segments[2]
+ # we may have one to three segments:
+ data = dict(zip(("mbean", "attribute", "path"),
segments))
+
data["type"] = function
if use_target and self.target:
data["target"] = self.target
@@ -462,19 +462,19 @@ def query_instance(inst):
def generate_jolokia_info(inst):
# Determine type of server
- value = fetch_var(inst, "read", "")
- server_info = make_item_list((), value, "")
+ data = fetch_var(inst, "version", "")
- if not server_info:
+ if not data:
sys.stderr.write("%s ERROR: Empty server info\n" % inst.name)
raise SkipInstance()
- info_dict = dict(server_info)
- version = info_dict.get(('info', 'version'), "unknown")
- product = info_dict.get(('info', 'product'), "unknown")
+ info = data.get('info', {})
+ version = info.get('version', "unknown")
+ product = info.get('product', "unknown")
if inst.product:
product = inst.product
- agentversion = info_dict.get(('agent',), "unknown")
+
+ agentversion = data.get('agent', "unknown")
yield inst.name, product, version, agentversion
diff --git a/tests/unit/plugins/test_mk_jolokia.py
b/tests/unit/plugins/test_mk_jolokia.py
index 0dd61ba..b7a69b2 100644
--- a/tests/unit/plugins/test_mk_jolokia.py
+++ b/tests/unit/plugins/test_mk_jolokia.py
@@ -31,7 +31,7 @@ def test_config_instance():
@pytest.mark.parametrize("config,base_url", [
({"protocol": "sftp", "server":
"billy.theserver", "port": 42,
- "suburi": "jolo-site"},
"sftp://billy.theserver:42/jolo-site")
+ "suburi": "jolo-site"},
"sftp://billy.theserver:42/jolo-site/")
])
def test_jolokia_instance_base_url(config, base_url):
joloi = mk_jolokia.JolokiaInstance(config)