summaryrefslogtreecommitdiffstats
path: root/src/lib/Server/Lint/InfoXML.py
diff options
context:
space:
mode:
authorJonathan Billings <jsbillin@umich.edu>2011-04-25 11:32:58 -0400
committerJonathan Billings <jsbillin@umich.edu>2011-04-25 11:32:58 -0400
commitc7a2034df875624889d6a42290e0f6e5b14ff23f (patch)
tree01ad39e8b09c405355d0acb4bb2de8730a4581c4 /src/lib/Server/Lint/InfoXML.py
parentb748d1a5fde80fa18913b67ae6eccf415d78fed3 (diff)
parent5f7092b061cb200afef2eff2aa39fc150a6ea838 (diff)
downloadbcfg2-c7a2034df875624889d6a42290e0f6e5b14ff23f.tar.gz
bcfg2-c7a2034df875624889d6a42290e0f6e5b14ff23f.tar.bz2
bcfg2-c7a2034df875624889d6a42290e0f6e5b14ff23f.zip
Merge remote-tracking branch 'upstream/master' into removefix
Diffstat (limited to 'src/lib/Server/Lint/InfoXML.py')
-rw-r--r--src/lib/Server/Lint/InfoXML.py61
1 files changed, 31 insertions, 30 deletions
diff --git a/src/lib/Server/Lint/InfoXML.py b/src/lib/Server/Lint/InfoXML.py
index 798d8c208..25f609902 100644
--- a/src/lib/Server/Lint/InfoXML.py
+++ b/src/lib/Server/Lint/InfoXML.py
@@ -7,36 +7,37 @@ class InfoXML(Bcfg2.Server.Lint.ServerPlugin):
@Bcfg2.Server.Lint.returnErrors
def Run(self):
- for filename, entryset in self.core.plugins['Cfg'].entries.items():
- infoxml_fname = os.path.join(entryset.path, "info.xml")
- if self.HandlesFile(infoxml_fname):
- if (hasattr(entryset, "infoxml") and
- entryset.infoxml is not None):
- xdata = entryset.infoxml.pnode.data
- for info in xdata.getroottree().findall("//Info"):
- required = []
- if "required_attrs" in self.config:
- required = self.config["required_attrs"].split(",")
+ if 'Cfg' in self.core.plugins:
+ for filename, entryset in self.core.plugins['Cfg'].entries.items():
+ infoxml_fname = os.path.join(entryset.path, "info.xml")
+ if self.HandlesFile(infoxml_fname):
+ if (hasattr(entryset, "infoxml") and
+ entryset.infoxml is not None):
+ self.check_infoxml(entryset.infoxml.pnode.data)
+ elif ("require" in self.config and
+ self.config["require"].lower != "false"):
+ self.LintError("No info.xml found for %s" % filename)
- missing = [attr for attr in required
- if info.get(attr) is None]
- if missing:
- self.LintError("Required attribute(s) %s not found in %s:%s" %
- (",".join(missing), infoxml_fname,
- self.RenderXML(info)))
+ def check_infoxml(self, xdata):
+ for info in xdata.getroottree().findall("//Info"):
+ required = []
+ if "required_attrs" in self.config:
+ required = self.config["required_attrs"].split(",")
- if ("require_paranoid" in self.config and
- self.config["require_paranoid"].lower() == "true" and
- (Bcfg2.Options.MDATA_PARANOID.value and
- info.get("paranoid") is not None and
- info.get("paranoid").lower() == "false") or
- (not Bcfg2.Options.MDATA_PARANOID.value and
- (info.get("paranoid") is None or
- info.get("paranoid").lower() != "true"))):
- self.LintError("Paranoid must be true in %s:%s" %
- (infoxml_fname,
- self.RenderXML(info)))
- elif ("require" in self.config and
- self.config["require"].lower != "false"):
- self.LintError("No info.xml found for %s" % filename)
+ missing = [attr for attr in required if info.get(attr) is None]
+ if missing:
+ self.LintError("Required attribute(s) %s not found in %s:%s" %
+ (",".join(missing), infoxml_fname,
+ self.RenderXML(info)))
+
+ if ("require_paranoid" in self.config and
+ self.config["require_paranoid"].lower() == "true" and
+ (Bcfg2.Options.MDATA_PARANOID.value and
+ info.get("paranoid") is not None and
+ info.get("paranoid").lower() == "false") or
+ (not Bcfg2.Options.MDATA_PARANOID.value and
+ (info.get("paranoid") is None or
+ info.get("paranoid").lower() != "true"))):
+ self.LintError("Paranoid must be true in %s:%s" %
+ (infoxml_fname, self.RenderXML(info)))