Module: check_mk
Branch: master
Commit: a4b377d0bb852ed0bee83917336e1a8612fb5c01
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=a4b377d0bb852e…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Thu Nov 17 11:48:29 2011 +0100
WATO: make deletion of local site possible
---
web/htdocs/wato.py | 50 ++++++++++++++++++++++++++++++--------------------
1 files changed, 30 insertions(+), 20 deletions(-)
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index 668edcf..783f141 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -432,12 +432,13 @@ def load_folder(dir, name="", path="", parent=None):
folder["attributes"] = {}
# Add information about the effective site of this folder
- if "site" in folder["attributes"]:
- folder[".siteid"] = folder["attributes"]["site"]
- elif parent:
- folder[".siteid"] = parent[".siteid"]
- else:
- folder[".siteid"] = default_site()
+ if is_distributed():
+ if "site" in folder["attributes"]:
+ folder[".siteid"] = folder["attributes"]["site"]
+ elif parent:
+ folder[".siteid"] = parent[".siteid"]
+ else:
+ folder[".siteid"] = default_site()
# Now look subdirectories
for entry in os.listdir(dir):
@@ -550,10 +551,11 @@ def load_hosts_file(folder):
# Compute site attribute, because it is needed at various
# places.
- if "site" in host:
- host[".siteid"] = host["site"]
- else:
- host[".siteid"] = folder[".siteid"]
+ if is_distributed():
+ if "site" in host:
+ host[".siteid"] = host["site"]
+ else:
+ host[".siteid"] = folder[".siteid"]
hosts[hostname] = host
@@ -5710,7 +5712,7 @@ def find_usage_of_timeperiod(tpname):
#.
-# .-Sites----------------------------------------------------------------.
+# .-Multisite Connections------------------------------------------------.
# | ____ _ _ |
# | / ___|(_) |_ ___ ___ |
# | \___ \| | __/ _ \/ __| |
@@ -5735,13 +5737,19 @@ def mode_sites(phase):
if phase == "action":
delid = html.var("_delete")
if delid and html.transaction_valid():
- # Make sure that site is not being used by hosts and folders
- site_ids = set([])
- find_folder_sites(site_ids, g_root_folder, True)
- if delid in site_ids:
- raise MKUserError(None,
- _("You cannot delete this connection. "
- "It has folders/hosts assigned to it."))
+ # The last connection can always be deleted. In that case we
+ # fallb back to non-distributed-WATO and the site attribute
+ # will be removed.
+ test_sites = dict(sites.items())
+ del test_sites[delid]
+ if is_distributed(test_sites):
+ # Make sure that site is not being used by hosts and folders
+ site_ids = set([])
+ find_folder_sites(site_ids, g_root_folder, True)
+ if delid in site_ids:
+ raise MKUserError(None,
+ _("You cannot delete this connection. "
+ "It has folders/hosts assigned to it."))
c = wato_confirm(_("Confirm deletion of site %s" % delid),
_("Do you really want to delete the connection to the site %s?" % delid))
@@ -6389,8 +6397,10 @@ def do_remote_automation(site, command, vars):
# Determine, if we have any slaves to distribute
# configuration to.
-def is_distributed():
- for site in config.sites.values():
+def is_distributed(sites = None):
+ if sites == None:
+ sites = config.sites
+ for site in sites.values():
if site.get("replication"):
return True
return False
Module: check_mk
Branch: master
Commit: 83d6a3177fcd7e509b47de26b9d0cdff33dc8878
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=83d6a3177fcd7e…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Tue Nov 15 17:10:23 2011 +0100
Multisite: fixed checkboxes once more
---
web/htdocs/htmllib.py | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/web/htdocs/htmllib.py b/web/htdocs/htmllib.py
index b925afa..0c1c0e6 100644
--- a/web/htdocs/htmllib.py
+++ b/web/htdocs/htmllib.py
@@ -439,11 +439,14 @@ class html:
# between False and None. The browser does not set the variables for
# Checkboxes that are not checked :-(
def get_checkbox(self, varname, form_name = None):
- if not self.has_var("filled_in") or ( # no form filled in
+ if self.has_var(varname):
+ return not not self.var(varname)
+ elif not self.has_var("filled_in") or ( # no form filled in
self.form_name != None and self.var("filled_in") != self.form_name): # wrong form filled in
return None
else:
- return not not self.req.vars.get(varname)
+ # Form filled in but variable missing -> Checkbox not checked
+ return False
def datetime_input(self, varname, default_value):
try: