summaryrefslogtreecommitdiffstats
path: root/src/lib/Server/Plugin.py
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2011-06-15 13:22:19 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2011-06-15 13:22:19 -0400
commitbc1a6b8d0a46e37a108a752a7b6f54e637ff804d (patch)
treee50cc822d4a21045ce465ee522de69bd9fb8d5a1 /src/lib/Server/Plugin.py
parent5f93d780fc2dcd6ba35179acd61c05754d1e4fbc (diff)
downloadbcfg2-bc1a6b8d0a46e37a108a752a7b6f54e637ff804d.tar.gz
bcfg2-bc1a6b8d0a46e37a108a752a7b6f54e637ff804d.tar.bz2
bcfg2-bc1a6b8d0a46e37a108a752a7b6f54e637ff804d.zip
bug fixes
Diffstat (limited to 'src/lib/Server/Plugin.py')
-rw-r--r--src/lib/Server/Plugin.py20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/lib/Server/Plugin.py b/src/lib/Server/Plugin.py
index aff9af12b..e535802c7 100644
--- a/src/lib/Server/Plugin.py
+++ b/src/lib/Server/Plugin.py
@@ -435,12 +435,13 @@ class XMLFileBacked(FileBacked):
def Index(self):
"""Build local data structures."""
try:
- xdata = XML(self.data)
+ self.xdata = XML(self.data)
except XMLSyntaxError:
logger.error("Failed to parse %s" % (self.name))
return
- self.label = xdata.attrib[self.__identifier__]
- self.entries = xdata.getchildren()
+ self.entries = self.xdata.getchildren()
+ if self.__identifier__ is not None:
+ self.label = self.xdata.attrib[self.__identifier__]
def __iter__(self):
return iter(self.entries)
@@ -455,6 +456,8 @@ class SingleXMLFileBacked(XMLFileBacked):
class StructFile(XMLFileBacked):
"""This file contains a set of structure file formatting logic."""
+ __identifier__ = None
+
def __init__(self, name):
XMLFileBacked.__init__(self, name)
self.matches = {}
@@ -489,13 +492,14 @@ class StructFile(XMLFileBacked):
def Match(self, metadata):
"""Return matching fragments of independent."""
- rv = []
if metadata.hostname not in self.matches:
- for child in self.entries():
+ rv = []
+ for child in self.entries:
rv.extend(self._match(child, metadata))
- if not rv:
- logger.error("File %s got null match" % (self.name))
- return rv
+ if not rv:
+ logger.error("File %s got null match" % (self.name))
+ self.matches[metadata.hostname] = rv
+ return self.matches[metadata.hostname]
class INode: