Module: check_mk
Branch: master
Commit: 34c17265f9b07d4a0719c20480e6a6415944caa3
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=34c17265f9b07d…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Sat Feb 23 20:43:13 2019 +0100
Fixed new bulk discovery API call
The call did not work with hosts that are located in subfolders.
CMK-1700
Change-Id: I84f95f2a03e23409f8f3c95149b9f2d295148da7
---
cmk/gui/plugins/webapi/bulk_discovery.py | 4 +--
tests/integration/cmk/gui/test_webapi.py | 56 ++++++++++++++++++++++----------
2 files changed, 41 insertions(+), 19 deletions(-)
diff --git a/cmk/gui/plugins/webapi/bulk_discovery.py
b/cmk/gui/plugins/webapi/bulk_discovery.py
index 32588f7..c73a108 100644
--- a/cmk/gui/plugins/webapi/bulk_discovery.py
+++ b/cmk/gui/plugins/webapi/bulk_discovery.py
@@ -42,7 +42,7 @@ from cmk.gui.watolib.bulk_discovery import (
vs_bulk_discovery,
get_tasks,
)
-from cmk.gui.watolib.hosts_and_folders import Folder
+from cmk.gui.watolib.hosts_and_folders import Host
@api_call_collection_registry.register
@@ -121,7 +121,7 @@ class APICallBulkDiscovery(APICallCollection):
hosts_to_discover = []
for host_name in request["hostnames"]:
- host = Folder.current().host(host_name)
+ host = Host.host(host_name)
if host is None:
raise MKUserError(None, _("The host '%s' does not
exist") % host_name)
host.need_permission("write")
diff --git a/tests/integration/cmk/gui/test_webapi.py
b/tests/integration/cmk/gui/test_webapi.py
index 1341aae..340c5e2 100644
--- a/tests/integration/cmk/gui/test_webapi.py
+++ b/tests/integration/cmk/gui/test_webapi.py
@@ -16,25 +16,29 @@ from testlib import web, APIError, wait_until, repo_path # pylint:
disable=unus
@pytest.fixture
-def local_test_host(web, site):
- web.add_host(
- "test-host", attributes={
- "ipaddress": "127.0.0.1",
- })
+def local_test_hosts(web, site):
+ site.makedirs("var/check_mk/agent_output/")
- site.write_file(
- "etc/check_mk/conf.d/test-host.mk",
- "datasource_programs.append(('cat
~/var/check_mk/agent_output/<HOST>', [], ['test-host']))\n"
- )
+ web.add_hosts([
+ ("test-host", "", {
+ "ipaddress": "127.0.0.1",
+ }),
+ ("test-host2", "xy/zzz", {
+ "ipaddress": "127.0.0.1",
+ }),
+ ])
- site.makedirs("var/check_mk/agent_output/")
- site.write_file(
- "var/check_mk/agent_output/test-host",
- file("%s/tests/integration/cmk_base/test-files/linux-agent-output" %
repo_path()).read())
+ for hostname in ["test-host", "test-host2"]:
+ site.write_file(
+ "var/check_mk/agent_output/%s.mk" % hostname,
+ file(
+ "%s/tests/integration/cmk_base/test-files/linux-agent-output" %
repo_path()).read())
yield
- web.delete_host("test-host")
- site.delete_file("etc/check_mk/conf.d/test-host.mk")
+
+ for hostname in ["test-host", "test-host2"]:
+ web.delete_host(hostname)
+ site.delete_file("var/check_mk/agent_output/%s.mk" % hostname)
def test_global_settings(site, web):
@@ -553,7 +557,7 @@ def _wait_for_bulk_discovery_job(web):
wait_until(job_completed, timeout=15, interval=1)
-def test_bulk_discovery_start_with_defaults(web, local_test_host):
+def test_bulk_discovery_start_with_defaults(web, local_test_hosts):
result = web.bulk_discovery_start({
"hostnames": ["test-host"],
})
@@ -571,7 +575,7 @@ def test_bulk_discovery_start_with_defaults(web, local_test_host):
assert "discovery successful" in
status["job"]["output"]
-def test_bulk_discovery_start_with_parameters(web, local_test_host):
+def test_bulk_discovery_start_with_parameters(web, local_test_hosts):
result = web.bulk_discovery_start({
"hostnames": ["test-host"],
"mode": "new",
@@ -589,6 +593,24 @@ def test_bulk_discovery_start_with_parameters(web, local_test_host):
assert status["job"]["state"] == "finished"
+def test_bulk_discovery_start_multiple_with_subdir(web, local_test_hosts):
+ result = web.bulk_discovery_start({
+ "hostnames": ["test-host", "test-host2"],
+ "mode": "new",
+ "use_cache": True,
+ "do_scan": True,
+ "bulk_size": 5,
+ "ignore_single_check_errors": True,
+ })
+ assert result["started"] is True
+
+ _wait_for_bulk_discovery_job(web)
+
+ status = web.bulk_discovery_status()
+ assert status["is_running"] is False
+ assert status["job"]["state"] == "finished"
+
+
def test_activate_changes(web, site):
try:
web.add_host(