Module: check_mk
Branch: master
Commit: ab8b6c6565e787df7984f859c1c9876171fe12e5
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=ab8b6c6565e787…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Sat Nov 5 12:08:46 2011 +0100
Handle None-parameter for checks with factory_settings
If a check created by inventory has None as a parameter
but for that check type exists factory settings, then
we automatically change the None into an empty dictionary
so that the factory settings will apply. This helps in
cases where an earlier version of the check works without
parameters and a later implementation uses a dictionary.
---
modules/check_mk.py | 16 +++++++++++++++-
1 files changed, 15 insertions(+), 1 deletions(-)
diff --git a/modules/check_mk.py b/modules/check_mk.py
index 5162bd8..b03f8aa 100755
--- a/modules/check_mk.py
+++ b/modules/check_mk.py
@@ -4110,6 +4110,21 @@ def compute_check_parameters(host, checktype, item, params):
def_levels_varname = check_default_levels.get(checktype)
if def_levels_varname:
vars_before_config.add(def_levels_varname)
+
+ # Handle case where parameter is None but the type of the
+ # default value is a dictionary. This is for example the
+ # case if a check type has gotten parameters in a new version
+ # but inventory of the old version left None as a parameter.
+ # Also from now on we support that the inventory simply puts
+ # None as a parameter. We convert that to an empty dictionary
+ # that will be updated with the factory settings and default
+ # levels, if possible.
+ if params == None and def_levels_varname:
+ fs = factory_settings.get(def_levels_varname)
+ if type(fs) == dict:
+ params = {}
+
+ # Honor factory settings for dict-type checks
if def_levels_varname and type(params) == dict:
# Start with factory settings
@@ -4133,7 +4148,6 @@ def compute_check_parameters(host, checktype, item, params):
# Get parameters configured via check_parameters
entries += service_extra_conf(host, descr, check_parameters)
-
if len(entries) > 0:
# loop from last to first (first must have precedence)
for entry in entries[::-1]:
Module: check_mk
Branch: master
Commit: 83e610f672afe34cff0c4031b039aaf1a02decda
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=83e610f672afe3…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Fri Nov 4 16:17:57 2011 +0100
WATO: fix replication state for local site
local site must never have the flag need_sync.
---
web/htdocs/wato.py | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index f5fbdcc..f783709 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -6539,7 +6539,7 @@ def mark_affected_sites_dirty(folder, hostname=None, sync = True, restart = True
find_folder_sites(site_ids, folder)
for site_id in site_ids:
changes = {}
- if sync:
+ if sync and not site_is_local(site_id):
changes["need_sync"] = True
if restart:
changes["need_restart"] = True
Module: check_mk
Branch: master
Commit: 719913eb2be94bfd33d7a28e186aaf585467fd03
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=719913eb2be94b…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Fri Nov 4 15:00:32 2011 +0100
WATO: new feature: factory reset
---
web/htdocs/images/icon_factoryreset.png | Bin 0 -> 2484 bytes
web/htdocs/wato.py | 47 ++++++++++++++++++++++++++++--
2 files changed, 43 insertions(+), 4 deletions(-)
diff --git a/web/htdocs/images/icon_factoryreset.png b/web/htdocs/images/icon_factoryreset.png
new file mode 100644
index 0000000..321e824
Binary files /dev/null and b/web/htdocs/images/icon_factoryreset.png differ
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index 7308274..9c24fbb 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -3858,7 +3858,10 @@ def mode_snapshot(phase):
changelog_button()
html.context_button(_("Create Snapshot"),
make_action_link([("mode", "snapshot"),("_create_snapshot","Yes")]), "snapshot")
+ html.context_button(_("Factory Reset"),
+ make_action_link([("mode", "snapshot"),("_factory_reset","Yes")]), "factoryreset")
return
+
elif phase == "action":
if html.has_var("_download_file"):
download_file = html.var("_download_file")
@@ -3932,7 +3935,26 @@ def mode_snapshot(phase):
return ""
else:
return None # browser reload
- return False
+
+ elif html.has_var("_factory_reset"):
+ c = wato_confirm(_("Confirm factory reset"),
+ _("If you proceed now, all hosts, folders, rules and other configurations "
+ "done with WATO will be deleted! Please consider making a snapshot before "
+ "you do this. Snapshots will not be deleted. Also the password of the currently "
+ "logged in user (%s) will be kept.<br><br>"
+ "Do you really want to delete all or your configuration data?") % config.user_id)
+ if c:
+ factory_reset()
+ return None, _("Resetted WATO, wiped all configuration.")
+ elif c == False: # not yet confirmed
+ return ""
+ else:
+ return None # browser reload
+
+
+ else:
+ return False
+
else:
snapshots = []
if os.path.exists(snapshot_dir):
@@ -4006,6 +4028,21 @@ def create_snapshot():
return snapshot_name
+def factory_reset():
+ # Darn. What makes things complicated here is that we need to conserve htpasswd,
+ # at least the account of the currently logged in user.
+ users = load_users()
+ for id in users.keys():
+ if id != config.user_id:
+ del users[id]
+ save_users(users) # this will cleanup htpasswd
+
+ for path in [ root_dir, multisite_dir, sites_mk, log_dir ]:
+ if os.path.exists(path):
+ shutil.rmtree(path)
+
+ log_pending(SYNCRESTART, None, "factory-reset", _("Complete reset to factory settings."))
+
#.
# .-Value-Editor---------------------------------------------------------.
@@ -9905,8 +9942,10 @@ def load_plugins():
config.declare_permission("wato.snapshots",
_("Backup & Restore"),
- _("Access to the module <i>Backup & Restore</i>. Please note: a user with write access to this module "
- "can make arbitrary changes to the configuration by restoring uploaded snapshots!"),
- [ "admin", ])
+ _("Access to the module <i>Backup & Restore</i>. Please note: a user with "
+ "write access to this module "
+ "can make arbitrary changes to the configuration by restoring uploaded snapshots "
+ "and even do a complete factory reset!"),
+ [ "admin", ])
load_web_plugins("wato", globals())
Module: check_mk
Branch: master
Commit: c20c7a2b02dcb14cb310d900f340d3fd2dcc0bc8
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=c20c7a2b02dcb1…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Fri Nov 4 14:09:02 2011 +0100
WATO: add rule for datasource_programs
---
web/plugins/wato/check_mk_configuration.py | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/web/plugins/wato/check_mk_configuration.py b/web/plugins/wato/check_mk_configuration.py
index 8d72eeb..b5b72b8 100644
--- a/web/plugins/wato/check_mk_configuration.py
+++ b/web/plugins/wato/check_mk_configuration.py
@@ -710,3 +710,15 @@ register_rule(group,
"a host is connected to, e.g. when the IP address of the host is dynamic "
"and can change."))
+register_rule(group,
+ "datasource_programs",
+ TextAscii(
+ title = _("Individual program call instead of agent access"),
+ help = _("For agent based checks Check_MK allows you to specify an alternative "
+ "program that should be called by Check_MK instead of connecting the agent "
+ "via TCP. That program must output the agent's data on standard output in "
+ "the same format the agent would do. This is for example useful for monitoring "
+ "via SSH. The command line may contain the placeholders <tt><IP></tt> and "
+ "<tt><HOST></tt>."),
+ label = _("Command line to execute")))
+