summaryrefslogtreecommitdiffstats
path: root/src/lib/Server/Plugins/Metadata.py
diff options
context:
space:
mode:
authorAndrew Brestick <brestick@mcs.anl.gov>2008-06-23 16:18:04 +0000
committerAndrew Brestick <brestick@mcs.anl.gov>2008-06-23 16:18:04 +0000
commitc746bdc6f47d023ff13fae99f218aac0cd54003e (patch)
tree6696729c06427c60e22a0b53a09fa3ea7ed4002d /src/lib/Server/Plugins/Metadata.py
parentf26f2426d1b73b5bfddaef7b1700201876b64151 (diff)
downloadbcfg2-c746bdc6f47d023ff13fae99f218aac0cd54003e.tar.gz
bcfg2-c746bdc6f47d023ff13fae99f218aac0cd54003e.tar.bz2
bcfg2-c746bdc6f47d023ff13fae99f218aac0cd54003e.zip
Resolves clients.xml overwrite issue in #567, fixes configuration issues with certain bcfg2-admin modes
git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@4706 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'src/lib/Server/Plugins/Metadata.py')
-rw-r--r--src/lib/Server/Plugins/Metadata.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/lib/Server/Plugins/Metadata.py b/src/lib/Server/Plugins/Metadata.py
index 996ba29f6..faa92ef50 100644
--- a/src/lib/Server/Plugins/Metadata.py
+++ b/src/lib/Server/Plugins/Metadata.py
@@ -105,6 +105,7 @@ class Metadata(Bcfg2.Server.Plugin.MetadataPlugin,
self.passwords = {}
self.session_cache = {}
self.clientdata = None
+ self.clientdata_original = None
self.default = None
self.pdirty = False
try:
@@ -137,6 +138,7 @@ class Metadata(Bcfg2.Server.Plugin.MetadataPlugin,
return
included = [ent.get('href') for ent in \
xdata.findall('./{http://www.w3.org/2001/XInclude}include')]
+ xdata_original = copy.deepcopy(xdata)
if included:
for name in included:
if name not in self.extra[dest]:
@@ -154,6 +156,7 @@ class Metadata(Bcfg2.Server.Plugin.MetadataPlugin,
self.secure = []
self.floating = []
self.addresses = {}
+ self.clientdata_original = xdata_original
self.clientdata = xdata
for client in xdata.findall('.//Client'):
clname = client.get('name').lower()
@@ -271,7 +274,7 @@ class Metadata(Bcfg2.Server.Plugin.MetadataPlugin,
fd = datafile.fileno()
while self.locked(fd) == True:
pass
- datafile.write(lxml.etree.tostring(self.clientdata.getroot()))
+ datafile.write(lxml.etree.tostring(self.clientdata_original.getroot()))
fcntl.lockf(fd, fcntl.LOCK_UN)
datafile.close()