Module: check_mk
Branch: master
Commit: cfaa059972d5a2dc47a3dd3bf43482ca7a8f8d81
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=cfaa059972d5a2…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Thu Dec 15 10:40:42 2011 +0100
Fixed nagvis auth file generation
---
web/plugins/wato/nagvis_auth.py | 39 ++++++++++++++++++++++++++++++++++++++-
1 files changed, 38 insertions(+), 1 deletions(-)
diff --git a/web/plugins/wato/nagvis_auth.py b/web/plugins/wato/nagvis_auth.py
index 9536ba9..5375f97 100644
--- a/web/plugins/wato/nagvis_auth.py
+++ b/web/plugins/wato/nagvis_auth.py
@@ -46,6 +46,43 @@
#
# This feature is available since NagVis release 1.6.1.
+#
+# The 3 following functions must be removed here when splitting
+# up the auth file generation in "global" and map folder specific
+# permissions
+#
+g_target_maps = {}
+def get_mapname_by_stringpath(filename):
+ return get_mapname(api.get_folder(filename))
+
+def get_mapname(thing):
+ """
+ folder can be a file/folder dictionary as provided by wato
+ or a tuple path to a file/folder. e.g. the parent folder.
+
+ In NagVis Mapnamen sind nur [0-9A-Za-z_-] erlaubt.
+ """
+ if thing is None:
+ return 'main'
+ elif isinstance(thing, tuple):
+ name = '_'.join(thing)
+ elif thing.get('.path', ()) != '':
+ name = thing['.path'].replace('/', '_')
+ else:
+ name = 'main'
+
+ if '.mk' in name:
+ name = name.replace('.mk', '')
+
+ return name
+
+def nagvis_auth_process_tree(thing):
+ global g_target_maps
+ g_target_maps[get_mapname(thing)] = thing
+
+ for child in thing.get('.folders', {}).itervalues():
+ process_tree(child)
+
# Generate the permissions file for the multisite authorization module
def generate_auth_file(users):
import json
@@ -57,7 +94,7 @@ def generate_auth_file(users):
#
# 0. Data gathering - populate g_target_maps list
#
- process_tree(api.get_folder_tree())
+ nagvis_auth_process_tree(api.get_folder_tree())
#
# 1. Write out the user permissions file
Module: check_mk
Branch: master
Commit: bea23d6724c3a83c67acc90a126c810b29c8b6a4
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=bea23d6724c3a8…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Thu Dec 15 10:40:31 2011 +0100
Changed only_hosts filter in distributed WATO to new distributed_wato_site var
---
web/htdocs/wato.py | 26 +++++++++++---------------
1 files changed, 11 insertions(+), 15 deletions(-)
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index 4ec0338..43e7eec 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -6401,13 +6401,13 @@ def save_sites(sites):
out = file(sites_mk, "w")
out.write("# Written by WATO\n# encoding: utf-8\n\n")
out.write("sites = \\\n%s\n" % pprint.pformat(sites))
- update_only_hosts_file(sites)
+ update_distributed_wato_file(sites)
need_sidebar_reload()
# Makes sure, that in distributed mode we monitor only
# the hosts that are directly assigned to our (the local)
# site.
-def update_only_hosts_file(sites):
+def update_distributed_wato_file(sites):
# Note: we cannot access config.sites here, since we
# are currently in the process of saving the new
# site configuration.
@@ -6417,9 +6417,9 @@ def update_only_hosts_file(sites):
distributed = True
if "socket" not in site \
or site["socket"] == "unix:" + defaults.livestatus_unix_socket:
- create_only_hosts_file(siteid, site.get("replication"))
+ create_distributed_wato_file(siteid, site.get("replication"))
if not distributed:
- delete_only_hosts_file()
+ delete_distributed_wato_file()
#.
# .-Replication----------------------------------------------------------.
@@ -6968,7 +6968,7 @@ def automation_push_snapshot():
log_commit_pending() # pending changes are lost
# Create rule making this site only monitor our hosts
- create_only_hosts_file(site_id, mode)
+ create_distributed_wato_file(site_id, mode)
log_audit(None, "replication", _("Synchronized with master (my site id is %s.)") % site_id)
if html.var("restart", "no") == "yes":
check_mk_local_automation("restart")
@@ -6980,20 +6980,16 @@ def automation_push_snapshot():
else:
return _("Internal automation error: %s") % e
-def create_only_hosts_file(siteid, mode):
- out = file(defaults.check_mk_configdir + "/only_hosts.mk", "w")
+def create_distributed_wato_file(siteid, mode):
+ out = file(defaults.check_mk_configdir + "/distributed_wato.mk", "w")
out.write("# Written by WATO\n# encoding: utf-8\n\n")
out.write("# This file has been created by the master site\n"
"# push the configuration to us. It makes sure that\n"
"# we only monitor hosts that are assigned to our site.\n\n")
- out.write("if only_hosts == None:\n only_hosts = []\n\n")
- #if mode == 'master':
- # out.write("only_hosts += [(NEGATE, ['!site:%s'], ALL_HOSTS )]\n" % siteid)
- #else:
- out.write("only_hosts += [(['site:%s'], ALL_HOSTS )]\n" % siteid)
-
-def delete_only_hosts_file():
- p = defaults.check_mk_configdir + "/only_hosts.mk"
+ out.write("distributed_wato_site = '%s'\n" % siteid)
+
+def delete_distributed_wato_file():
+ p = defaults.check_mk_configdir + "/distributed_wato.mk"
if os.path.exists(p):
os.remove(p)