summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Server/Plugin/helpers.py
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2013-09-11 10:07:02 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2013-09-11 10:07:02 -0400
commite51614dbcea65eee92bb1a726449a66be41de55b (patch)
treee1154685dbe47c58cc390858b025cbb10abd35bd /src/lib/Bcfg2/Server/Plugin/helpers.py
parente95a48a1c28b634adbb8f1aae0f3b586146086f0 (diff)
downloadbcfg2-e51614dbcea65eee92bb1a726449a66be41de55b.tar.gz
bcfg2-e51614dbcea65eee92bb1a726449a66be41de55b.tar.bz2
bcfg2-e51614dbcea65eee92bb1a726449a66be41de55b.zip
XMLFileBacked: Fixed multiple identical XIncludes in one file
Diffstat (limited to 'src/lib/Bcfg2/Server/Plugin/helpers.py')
-rw-r--r--src/lib/Bcfg2/Server/Plugin/helpers.py21
1 files changed, 9 insertions, 12 deletions
diff --git a/src/lib/Bcfg2/Server/Plugin/helpers.py b/src/lib/Bcfg2/Server/Plugin/helpers.py
index 3a994606c..ea94f71de 100644
--- a/src/lib/Bcfg2/Server/Plugin/helpers.py
+++ b/src/lib/Bcfg2/Server/Plugin/helpers.py
@@ -555,16 +555,12 @@ class XMLFileBacked(FileBacked):
xdata = self.xdata.getroottree()
else:
xdata = lxml.etree.parse(fname)
- included = [el for el in xdata.findall('//' + xinclude)]
- for el in included:
+ for el in xdata.findall('//' + xinclude):
name = el.get("href")
if name.startswith("/"):
fpath = name
else:
- if fname:
- rel = fname
- else:
- rel = self.name
+ rel = fname or self.name
fpath = os.path.join(os.path.dirname(rel), name)
# expand globs in xinclude, a bcfg2-specific extension
@@ -579,12 +575,13 @@ class XMLFileBacked(FileBacked):
parent = el.getparent()
parent.remove(el)
for extra in extras:
- if extra != self.name and extra not in self.extras:
- self.extras.append(extra)
- lxml.etree.SubElement(parent, xinclude, href=extra)
- self._follow_xincludes(fname=extra)
- if extra not in self.extra_monitors:
- self.add_monitor(extra)
+ if extra != self.name:
+ added = lxml.etree.SubElement(parent, xinclude, href=extra)
+ if extra not in self.extras:
+ self.extras.append(extra)
+ self._follow_xincludes(fname=extra)
+ if extra not in self.extra_monitors:
+ self.add_monitor(extra)
def Index(self):
self.xdata = lxml.etree.XML(self.data, base_url=self.name,