diff options
Diffstat (limited to 'src/lib/Bcfg2')
-rw-r--r-- | src/lib/Bcfg2/Options.py | 5 | ||||
-rw-r--r-- | src/lib/Bcfg2/Server/Lint/RequiredAttrs.py | 31 |
2 files changed, 18 insertions, 18 deletions
diff --git a/src/lib/Bcfg2/Options.py b/src/lib/Bcfg2/Options.py index aff8c0733..c0a274e23 100644 --- a/src/lib/Bcfg2/Options.py +++ b/src/lib/Bcfg2/Options.py @@ -827,6 +827,11 @@ LINT_CONFIG = \ cmd='--lint-config', odesc='<conffile>', long_arg=True) +LINT_PLUGINS = \ + Option('bcfg2-lint plugin list', + default=None, # default is Bcfg2.Server.Lint.__all__ + cf=('lint', 'plugins'), + cook=list_split) LINT_SHOW_ERRORS = \ Option('Show error handling', default=False, diff --git a/src/lib/Bcfg2/Server/Lint/RequiredAttrs.py b/src/lib/Bcfg2/Server/Lint/RequiredAttrs.py index 3c130731b..61b737a82 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: @@ -236,6 +231,7 @@ class RequiredAttrs(Bcfg2.Server.Lint.ServerPlugin): required_attrs[entry.get('scope')] = is_username if '__text__' in required_attrs: + fmt = required_attrs['__text__'] del required_attrs['__text__'] if (not entry.text and not entry.get('empty', 'false').lower() == 'true'): @@ -243,7 +239,6 @@ class RequiredAttrs(Bcfg2.Server.Lint.ServerPlugin): "Text missing for %s %s in %s: %s" % (tag, name, filename, self.RenderXML(entry))) - fmt = required_attrs['__text__'] if fmt is not None and not fmt(entry.text): self.LintError( "required-attr-format", |