diff options
author | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2013-03-27 13:40:46 -0400 |
---|---|---|
committer | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2013-03-27 16:57:18 -0400 |
commit | b90d6dccd515551829f2661a5d855f92d1e23103 (patch) | |
tree | ad7d9f8adae9a3a7f3285e859fe3d7c55bbee343 /src/lib | |
parent | 810bed32be1edf6c79cf0952029d31339461eaf9 (diff) | |
download | bcfg2-b90d6dccd515551829f2661a5d855f92d1e23103.tar.gz bcfg2-b90d6dccd515551829f2661a5d855f92d1e23103.tar.bz2 bcfg2-b90d6dccd515551829f2661a5d855f92d1e23103.zip |
XMLFileBacked: track FAM monitors separately from processed xincludes to avoid infinite loop with pseudo FAM
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/Bcfg2/Server/Plugin/helpers.py | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/lib/Bcfg2/Server/Plugin/helpers.py b/src/lib/Bcfg2/Server/Plugin/helpers.py index 00b55a83b..2b878d7e2 100644 --- a/src/lib/Bcfg2/Server/Plugin/helpers.py +++ b/src/lib/Bcfg2/Server/Plugin/helpers.py @@ -526,6 +526,10 @@ class XMLFileBacked(FileBacked): #: "Extra" files included in this file by XInclude. self.extras = [] + #: Extra FAM monitors set by this object for files included by + #: XInclude. + self.extra_monitors = [] + if ((create or (self.create is not None and self.create)) and not os.path.exists(self.name)): toptag = create or self.create @@ -576,9 +580,11 @@ class XMLFileBacked(FileBacked): parent.remove(el) for extra in extras: if extra != self.name and extra not in self.extras: - self.add_monitor(extra) + 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) def Index(self): self.xdata = lxml.etree.XML(self.data, base_url=self.name, @@ -607,7 +613,7 @@ class XMLFileBacked(FileBacked): :type fpath: string :returns: None """ - self.extras.append(fpath) + self.extra_monitors.append(fpath) if self.fam and self.should_monitor: self.fam.AddMonitor(fpath, self) |