Module: check_mk
Branch: master
Commit: 5ab32227daf1a033daa1297baa36d9749062c3c5
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=5ab32227daf1a0…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Thu Dec 20 13:20:53 2018 +0100
Fixed service discovery of hosts in non-main folders after implementation of asynchronous
discovery
Change-Id: Ieb315e075b5d1afbc6b6ae9934c5f74e588c4c11
---
cmk/gui/wato/pages/services.py | 21 ++++++++++++++-------
web/htdocs/js/wato.js | 14 +++++++++-----
2 files changed, 23 insertions(+), 12 deletions(-)
diff --git a/cmk/gui/wato/pages/services.py b/cmk/gui/wato/pages/services.py
index ba10d94..eaa7b9a 100644
--- a/cmk/gui/wato/pages/services.py
+++ b/cmk/gui/wato/pages/services.py
@@ -130,6 +130,7 @@ DiscoveryOptions = NamedTuple("DiscoveryOptions", [
StartDiscoveryRequest = NamedTuple("StartDiscoveryRequest", [
("host", watolib.Host),
+ ("folder", watolib.Folder),
("options", DiscoveryOptions),
])
@@ -214,8 +215,9 @@ class ModeDiscovery(WatoMode):
def page(self):
self._async_progress_msg_container()
self._service_container()
- html.javascript("start_service_discovery(%s, %s)" %
(json.dumps(self._host.name()),
-
json.dumps(self._options._asdict())))
+ html.javascript("start_service_discovery(%s, %s, %s)" %
+ (json.dumps(self._host.name()),
json.dumps(self._host.folder().path()),
+ json.dumps(self._options._asdict())))
def _async_progress_msg_container(self):
html.open_div(id_="async_progress_msg")
@@ -330,7 +332,8 @@ class AutomationServiceDiscoveryJob(AutomationCommand):
host.need_permission("read")
options = json.loads(html.get_ascii_input("options"))
- return StartDiscoveryRequest(host=host, options=DiscoveryOptions(**options))
+ return StartDiscoveryRequest(
+ host=host, folder=host.folder(), options=DiscoveryOptions(**options))
def execute(self, request):
# type: (StartDiscoveryRequest) -> str
@@ -461,7 +464,8 @@ class ModeAjaxServiceDiscovery(WatoWebApiMode):
request.setdefault("update_target", None)
request.setdefault("update_services", [])
- self._host = watolib.Folder.current().host(request["host_name"])
+ folder = watolib.Folder.folder(request["folder_path"])
+ self._host = folder.host(request["host_name"])
if not self._host:
raise MKUserError("host", _("You called this page with an
invalid host name."))
self._host.need_permission("read")
@@ -591,7 +595,8 @@ class ModeAjaxServiceDiscovery(WatoWebApiMode):
def _get_check_table(self):
# type: () -> DiscoveryResult
- return _get_check_table(StartDiscoveryRequest(self._host, self._options))
+ return _get_check_table(
+ StartDiscoveryRequest(self._host, self._host.folder(), self._options))
def _update_persisted_discovery_options(self):
show_checkboxes = config.user.load_file("discovery_checkboxes", False)
@@ -1003,8 +1008,9 @@ class DiscoveryPageRenderer(object):
def _start_js_call(self, options, request_vars=None):
# type: (DiscoveryOptions, dict) -> str
- return "start_service_discovery(%s, %s, %s, %s)" % (
+ return "start_service_discovery(%s, %s, %s, %s, %s)" % (
json.dumps(self._host.name()),
+ json.dumps(self._host.folder().path()),
json.dumps(options._asdict()),
json.dumps(html.transaction_manager.get()),
json.dumps(request_vars),
@@ -1114,8 +1120,9 @@ class DiscoveryPageRenderer(object):
div_id = "activecheck_%s" % descr
html.div(html.render_icon("reload", cssclass="reloading"),
id_=div_id)
- html.final_javascript("execute_active_check(%s, %s, %s, %s, %s);" % (
+ html.javascript("execute_active_check(%s, %s, %s, %s, %s, %s);" % (
json.dumps(self._host.site_id() or ''),
+ json.dumps(self._host.folder().path()),
json.dumps(self._host.name()),
json.dumps(check_type),
json.dumps(item),
diff --git a/web/htdocs/js/wato.js b/web/htdocs/js/wato.js
index f774c90..16046e8 100644
--- a/web/htdocs/js/wato.js
+++ b/web/htdocs/js/wato.js
@@ -902,7 +902,7 @@ function start_host_diag_test(ident, hostname, transid) {
var g_service_discovery_result = null;
var g_show_updating_timer = null;
-function start_service_discovery(host_name, discovery_options, transid, request_vars)
+function start_service_discovery(host_name, folder_path, discovery_options, transid,
request_vars)
{
// When we receive no response for 2 seconds, then show the updating message
g_show_updating_timer = setTimeout(function() {
@@ -913,19 +913,21 @@ function start_service_discovery(host_name, discovery_options,
transid, request_
monitor_async_progress({
"update_url" : "ajax_service_discovery.py",
"host_name": host_name,
+ "folder_path": folder_path,
"transid": transid,
"start_time" : time(),
"is_finished_function": is_service_discovery_finished,
"update_function": update_service_discovery,
"finish_function": finish_service_discovery,
- "post_data": get_service_discovery_post_data(host_name,
discovery_options, transid, request_vars)
+ "post_data": get_service_discovery_post_data(host_name, folder_path,
discovery_options, transid, request_vars)
});
}
-function get_service_discovery_post_data(host_name, discovery_options, transid,
request_vars)
+function get_service_discovery_post_data(host_name, folder_path, discovery_options,
transid, request_vars)
{
var request = {
"host_name": host_name,
+ "folder_path": folder_path,
"discovery_options": discovery_options,
"discovery_result": g_service_discovery_result
};
@@ -982,11 +984,12 @@ function update_service_discovery(handler_data, response) {
}
g_service_discovery_result = response.discovery_result;
- handler_data.post_data = get_service_discovery_post_data(handler_data.host_name,
response.discovery_options, handler_data.transid);
+ handler_data.post_data = get_service_discovery_post_data(handler_data.host_name,
handler_data.folder_path, response.discovery_options, handler_data.transid);
var container = document.getElementById("service_container");
container.style.display = "block";
container.innerHTML = response.body;
+ executeJSbyObject(container);
update_service_discovery_activate_changes_button(response);
}
@@ -1035,11 +1038,12 @@ function lock_service_discovery_controls(lock)
// | |
// '-----------------------------------------------------------------------'
-function execute_active_check(site, hostname, checktype, item, divid)
+function execute_active_check(site, folder_path, hostname, checktype, item, divid)
{
var oDiv = document.getElementById(divid);
var url = "wato_ajax_execute_check.py?" +
"site=" + encodeURIComponent(site) +
+ "&folder=" + encodeURIComponent(folder_path) +
"&host=" + encodeURIComponent(hostname) +
"&checktype=" + encodeURIComponent(checktype) +
"&item=" + encodeURIComponent(item);