Module: check_mk
Branch: master
Commit: 5e41756191452b380569ea62881a717c94c8c0a6
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=5e41756191452b…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Thu Mar 9 13:14:28 2017 +0100
CME: Groups can now be assigned with customers
Change-Id: I385b7fc805ba6626c682307133e5c8960fd92678
---
web/htdocs/wato.py | 62 ++++++++++++++++++++++++++++++++++++++-------------
web/htdocs/watolib.py | 2 +-
2 files changed, 48 insertions(+), 16 deletions(-)
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index 204289b..a6ec2d9 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -6993,6 +6993,9 @@ def mode_groups(phase, what):
table.cell(_("Name"), name)
table.cell(_("Alias"), group['alias'])
+ if cmk.is_managed_edition():
+ table.cell(_("Customer"), managed.get_customer_name(group))
+
if what == "contact":
table.cell(_("Members"))
html.write_html(HTML(", ").join(
@@ -7024,6 +7027,9 @@ def mode_edit_group(phase, group_type):
name = html.var("edit") # missing -> new group
new = name == None
+ if cmk.is_managed_edition():
+ vs_customer = managed.vs_customer()
+
if phase == "title":
if new:
if group_type == "host":
@@ -7047,10 +7053,29 @@ def mode_edit_group(phase, group_type):
all_groups = userdb.load_group_information()
groups = all_groups.setdefault(group_type, {})
+ if new:
+ clone_group = html.var("clone")
+ if clone_group:
+ name = clone_group
+
+ try:
+ group = groups[name]
+ except KeyError:
+ raise MKUserError("clone", _("This group does not
exist."))
+ else:
+ group = {}
+ else:
+ try:
+ group = groups[name]
+ except KeyError:
+ raise MKUserError("edit", _("This group does not
exist."))
+
+ group.setdefault("alias", name)
+
edit_nagvis_map_permissions = group_type == 'contact'
if edit_nagvis_map_permissions:
if not new:
- permitted_maps = groups[name].get('nagvis_maps', [])
+ permitted_maps = group.get('nagvis_maps', [])
else:
permitted_maps = []
@@ -7060,19 +7085,29 @@ def mode_edit_group(phase, group_type):
if not alias:
raise MKUserError("alias", _("Please specify an alias
name."))
- extra_info = {"alias": alias}
+ group = {
+ "alias": alias
+ }
+
if edit_nagvis_map_permissions:
vs_nagvis_maps = get_nagvis_maps_valuespec()
permitted_maps = vs_nagvis_maps.from_html_vars('nagvis_maps')
vs_nagvis_maps.validate_value(permitted_maps, 'nagvis_maps')
if permitted_maps:
- extra_info['nagvis_maps'] = permitted_maps
+ group["nagvis_maps"] = permitted_maps
+
+ if cmk.is_managed_edition():
+ customer = vs_customer.from_html_vars("customer")
+ vs_customer.validate_value(customer, "customer")
+
+ if customer != "provider":
+ group["customer"] = customer
if new:
name = html.var("name").strip()
- add_group(name, group_type, extra_info)
+ add_group(name, group_type, group)
else:
- edit_group(name, group_type, extra_info)
+ edit_group(name, group_type, group)
return group_type + "_groups"
@@ -7083,23 +7118,20 @@ def mode_edit_group(phase, group_type):
html.help(_("The name of the group is used as an internal key. It cannot be
"
"changed later. It is also visible in the status GUI."))
if new:
- clone_group = html.var("clone")
- html.text_input("name", clone_group or "")
+ html.text_input("name", name)
html.set_focus("name")
else:
- clone_group = None
html.write_text(name)
html.set_focus("alias")
forms.section(_("Alias"))
html.help(_("An Alias or description of this group."))
- alias = groups.get(name, {}).get('alias', '')
- if not alias:
- if clone_group:
- alias = groups.get(clone_group, {}).get('alias', '')
- else:
- alias = name
- html.text_input("alias", alias)
+ html.text_input("alias", group["alias"])
+
+ if cmk.is_managed_edition():
+ forms.section(vs_customer.title())
+ vs_customer.render_input("customer", managed.get_customer_id(group))
+ html.help(vs_customer.help())
# Show permissions for NagVis maps if any of those exist
if edit_nagvis_map_permissions and get_nagvis_maps():
diff --git a/web/htdocs/watolib.py b/web/htdocs/watolib.py
index c3f9521..de2dff9 100644
--- a/web/htdocs/watolib.py
+++ b/web/htdocs/watolib.py
@@ -7214,7 +7214,7 @@ def _set_group(all_groups, group_type, name, extra_info):
all_groups.setdefault(group_type, {})
all_groups[group_type].setdefault(name, {})
- all_groups[group_type][name].update(extra_info)
+ all_groups[group_type][name] = extra_info
save_group_information(all_groups)
if group_type == "contact":