From 6ce9af36f6f0e7796d986b29ce3f4d8a52c55d2b Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Mon, 14 Jan 2013 09:43:11 -0500 Subject: better validation of required attrs for Package and Service tags --- src/lib/Bcfg2/Server/Lint/RequiredAttrs.py | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) (limited to 'src/lib/Bcfg2') diff --git a/src/lib/Bcfg2/Server/Lint/RequiredAttrs.py b/src/lib/Bcfg2/Server/Lint/RequiredAttrs.py index 3c130731b..9ed8be2e4 100644 --- a/src/lib/Bcfg2/Server/Lint/RequiredAttrs.py +++ b/src/lib/Bcfg2/Server/Lint/RequiredAttrs.py @@ -78,12 +78,8 @@ class RequiredAttrs(Bcfg2.Server.Lint.ServerPlugin): hasattr(Bcfg2.Client.Tools.VCS, "Install%s" % v)), revision=None, sourceurl=None)), - Service={ - "chkconfig": dict(name=None), - "deb": dict(name=None), - "rc-update": dict(name=None), - "smf": dict(name=None, FMRI=None), - "upstart": dict(name=None)}, + Service={"__any__": dict(name=None), + "smf": dict(name=None, FMRI=None)}, Action={None: dict(name=None, timing=lambda v: v in ['pre', 'post', 'both'], when=lambda v: v in ['modified', 'always'], @@ -98,7 +94,7 @@ class RequiredAttrs(Bcfg2.Server.Lint.ServerPlugin): v)), mask=dict(perms=lambda v: re.match('^([0-7]|[rwx\-]{0,3}', v))), - Package={None: dict(name=None)}, + Package={"__any__": dict(name=None)}, SEBoolean={None: dict(name=None, value=lambda v: v in ['on', 'off'])}, SEModule={None: dict(name=None, __text__=None)}, @@ -212,17 +208,16 @@ class RequiredAttrs(Bcfg2.Server.Lint.ServerPlugin): (tag, self.RenderXML(entry))) return - if isinstance(self.required_attrs[tag], dict): - etype = entry.get('type') - if etype in self.required_attrs[tag]: - required_attrs = self.required_attrs[tag][etype] - else: - self.LintError("unknown-entry-type", - "Unknown %s type %s: %s" % - (tag, etype, self.RenderXML(entry))) - return + etype = entry.get('type') + if etype in self.required_attrs[tag]: + required_attrs = self.required_attrs[tag][etype] + elif '__any__' in self.required_attrs[tag]: + required_attrs = self.required_attrs[tag]['__any__'] else: - required_attrs = self.required_attrs[tag] + self.LintError("unknown-entry-type", + "Unknown %s type %s: %s" % + (tag, etype, self.RenderXML(entry))) + return attrs = set(entry.attrib.keys()) if 'dev_type' in required_attrs: -- cgit v1.2.3-1-g7c22