Module: check_mk
Branch: master
Commit: 839f469a604986dee2273bb3c48265cf5c603ee0
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=839f469a604986…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Tue May 24 17:26:19 2011 +0200
WATO: do snmp scan only on button
---
ChangeLog | 2 ++
modules/automation.py | 15 ++++++++++++++-
web/htdocs/wato.py | 30 ++++++++++++++++++++----------
3 files changed, 36 insertions(+), 11 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index b569d56..e621f49 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -21,6 +21,8 @@
* Bulk operation on host lists (inventory, tags changed, etc)
* Easy search operation in host lists
* Dialog for global host search
+ * Services dialog now tries to use cached data. On SNMP hosts
+ no scan will be done until new button "Full Scan" is pressed.
MK Livestatus:
* Column aggregation (Stats) now also works for perf_data
diff --git a/modules/automation.py b/modules/automation.py
index 0d7a703..298fa97 100644
--- a/modules/automation.py
+++ b/modules/automation.py
@@ -120,6 +120,11 @@ def automation_inventory(args):
def automation_try_inventory(args):
+ if args[0] == '--cache':
+ global opt_use_cachefile
+ opt_use_cachefile = True
+ args = args[1:]
+
hostname = args[0]
try:
ipaddress = lookup_ipaddress(hostname)
@@ -128,8 +133,16 @@ def automation_try_inventory(args):
f = []
+ # if we are using cache files, then we restrict us to existing
+ # check types. SNMP scan is only done without the --cache option
if is_snmp_host(hostname):
- f = do_snmp_scan([hostname], True, True)
+ if opt_use_cachefile:
+ existing_checks = set([ cn for (cn, item) in get_check_table(hostname) ])
+ for cn in inventorable_checktypes("snmp"):
+ if cn in existing_checks:
+ f += make_inventory(cn, [hostname], True, True)
+ else:
+ f = do_snmp_scan([hostname], True, True)
if is_tcp_host(hostname):
for cn in inventorable_checktypes("tcp"):
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index 2bd9527..1821cec 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -744,11 +744,22 @@ def mode_inventory(phase, firsttime):
raise MKGeneralException("You called this page for a non-existing
host.")
if phase == "title":
- return "Services of host %s" % hostname
+ title = "Services of host %s" % hostname
+ if html.var("scan"):
+ title += " (live scan)"
+ else:
+ title += " (cached data)"
+ return title
+
+ elif phase == "buttons":
+ html.context_button(_("Host list"), make_link([("mode",
"file")]))
+ html.context_button(_("Edit host"), make_link([("mode",
"edithost"), ("host", hostname)]))
+ html.context_button(_("Full Scan"), html.makeuri([("scan",
"yes")]))
elif phase == "action":
if html.check_transaction():
- table = check_mk_automation("try-inventory", [hostname])
+ cache_options = not html.var("scan") and [ '--cache' ] or
[]
+ table = check_mk_automation("try-inventory", cache_options +
[hostname])
table.sort()
active_checks = {}
new_target = "file"
@@ -768,9 +779,6 @@ def mode_inventory(phase, firsttime):
return new_target, message
return "file"
- elif phase == "buttons":
- html.context_button("Host list", make_link([("mode",
"file")]))
- html.context_button("Edit host", make_link([("mode",
"edithost"), ("host", hostname)]))
else:
show_service_table(hostname, firsttime)
@@ -1429,15 +1437,15 @@ def check_mk_automation(command, args=[], indata=""):
sudoline = None
if defaults.check_mk_automation:
commandargs = defaults.check_mk_automation.split()
- cmd = commandargs + [ command ] + args
+ cmd = commandargs + [ command, '--' ] + args
else:
omd_mode, omd_site = html.omd_mode()
if not omd_mode or omd_mode == 'own':
commandargs = [ 'check_mk', '--automation' ]
- cmd = commandargs + [ command ] + args
+ cmd = commandargs + [ command, '--' ] + args
else: # OMD shared mode
commandargs = [ 'sudo', '/bin/su', '-', omd_site,
'-c', 'check_mk --automation' ]
- cmd = commandargs[:-1] + [ commandargs[-1] + ' ' + ' '.join([
command ] + args) ]
+ cmd = commandargs[:-1] + [ commandargs[-1] + ' ' + ' '.join([
command, '--' ] + args) ]
sudoline = "%s ALL = (root) NOPASSWD: /bin/su - %s -c check_mk\\
--automation\\ *" % (html.apache_user(), omd_site)
sudo_msg = ''
@@ -1753,7 +1761,8 @@ def changelog_button():
def show_service_table(hostname, firsttime):
# Read current check configuration
- table = check_mk_automation("try-inventory", [hostname])
+ cache_options = not html.var("scan") and [ '--cache' ] or []
+ table = check_mk_automation("try-inventory", cache_options + [hostname])
table.sort()
html.begin_form("checks", None, "POST")
@@ -1771,8 +1780,9 @@ def show_service_table(hostname, firsttime):
if fixall == 2:
html.button("_fixall", "Fix all missing/exceeding")
+ if len(table) > 0:
+ html.button("_save", _("Save manual check configuration"))
- html.button("_save", "Save manual check configuration")
html.hidden_fields()
html.write("<table class=data>\n")