Module: check_mk
Branch: master
Commit: 3d0ef79373bd31486844c6fc2a10a2db61241f69
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=3d0ef79373bd31…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Wed Jan 23 20:56:36 2019 +0100
Rulespec refers to groups by class references now
CMK-1572
Change-Id: I107d0e3de84652da99b6aca39d7e0ad2a478a32a
---
cmk/gui/plugins/wato/__init__.py | 2 ++
cmk/gui/plugins/wato/utils/__init__.py | 10 ++++++---
cmk/gui/watolib/rulespecs.py | 32 ++++++++++++----------------
tests/unit/cmk/gui/watolib/test_rulespecs.py | 2 +-
4 files changed, 24 insertions(+), 22 deletions(-)
diff --git a/cmk/gui/plugins/wato/__init__.py b/cmk/gui/plugins/wato/__init__.py
index 55a991f..6d8954e 100644
--- a/cmk/gui/plugins/wato/__init__.py
+++ b/cmk/gui/plugins/wato/__init__.py
@@ -97,6 +97,8 @@ from cmk.gui.plugins.wato.utils import (
register_modules,
register_notification_parameters,
register_rule,
+ rulespec_registry,
+ Rulespec,
rulespec_group_registry,
RulespecGroup,
RulespecSubGroup,
diff --git a/cmk/gui/plugins/wato/utils/__init__.py
b/cmk/gui/plugins/wato/utils/__init__.py
index 89b0f60..202af92 100644
--- a/cmk/gui/plugins/wato/utils/__init__.py
+++ b/cmk/gui/plugins/wato/utils/__init__.py
@@ -116,6 +116,13 @@ from cmk.gui.watolib.password_store import PasswordStore
from cmk.gui.watolib.host_tags import group_hosttags_by_topic
from cmk.gui.watolib.timeperiods import TimeperiodSelection
from cmk.gui.watolib.users import notification_script_title
+from cmk.gui.watolib.rulespecs import (
+ rulespec_registry,
+ Rulespec,
+ rulespec_group_registry,
+ RulespecGroup,
+ RulespecSubGroup,
+)
from cmk.gui.watolib import (
multisite_dir,
wato_root_dir,
@@ -125,9 +132,6 @@ from cmk.gui.watolib import (
wato_fileheader,
add_change,
log_audit,
- rulespec_group_registry,
- RulespecGroup,
- RulespecSubGroup,
get_rulegroup,
register_rule,
declare_host_attribute,
diff --git a/cmk/gui/watolib/rulespecs.py b/cmk/gui/watolib/rulespecs.py
index 5bed91d..3d26bc7 100644
--- a/cmk/gui/watolib/rulespecs.py
+++ b/cmk/gui/watolib/rulespecs.py
@@ -271,20 +271,24 @@ class Rulespec(object):
# type: () -> str
raise NotImplementedError()
- # TODO: Refactor to group object access
@abc.abstractproperty
- def group_name(self):
- # type: () -> str
+ def group(self):
+ # type: () -> Type[RulespecGroup]
raise NotImplementedError()
@property
+ def group_name(self):
+ # type: () -> Text
+ return self.group().name
+
+ @property
def main_group_name(self):
- # type: () -> str
+ # type: () -> Text
return self.group_name.split("/")[0]
@property
def sub_group_name(self):
- # type: () -> str
+ # type: () -> Text
return self.group_name.split("/")[1] if "/" in
self.group_name else ""
@property
@@ -372,14 +376,12 @@ def register_rule(
**kwargs):
factory_default = kwargs.get("factory_default",
Rulespec.NO_FACTORY_DEFAULT)
- # Added during 1.6 development for easier transition. Is not needed for
- # pre 1.6 compatibility
- if not isinstance(group, six.string_types) and issubclass(group, RulespecBaseGroup):
- group = group().name
+ if isinstance(group, six.string_types):
+ group = get_rulegroup(group).__class__
class_attrs = {
"name": varname,
- "group_name": group,
+ "group": group,
"valuespec": valuespec,
"item_spec": itemspec,
"item_type": itemtype,
@@ -393,16 +395,10 @@ def register_rule(
}
if title:
- class_attrs.update({
- "_title": title,
- "title": property(lambda self: self._title),
- })
+ class_attrs["title"] = title
if help:
- class_attrs.update({
- "_help": help,
- "help": property(lambda self: self._help),
- })
+ class_attrs["help"] = help
rulespec_class = type("LegacyRulespec%s" % varname, (Rulespec,),
class_attrs)
rulespec_registry.register(rulespec_class)
diff --git a/tests/unit/cmk/gui/watolib/test_rulespecs.py
b/tests/unit/cmk/gui/watolib/test_rulespecs.py
index e68af13..cc33375 100644
--- a/tests/unit/cmk/gui/watolib/test_rulespecs.py
+++ b/tests/unit/cmk/gui/watolib/test_rulespecs.py
@@ -1508,7 +1508,7 @@ class DummyGroup(RulespecGroup):
class DummyRulespec(Rulespec):
name = "name"
- group_name = "group"
+ group = DummyGroup
valuespec = FixedValue(None)
item_spec = None
item_type = None