diff options
author | Alexander Sulfrian <alexander@sulfrian.net> | 2013-06-13 00:10:29 +0200 |
---|---|---|
committer | Alexander Sulfrian <alexander@sulfrian.net> | 2014-02-26 13:38:17 +0100 |
commit | 67dbedcad2ae4ee8a4bb8587f882557092e85bdd (patch) | |
tree | b2566c3dfd07875a2036eb4462b95cce22101845 /src/lib/Bcfg2 | |
parent | a8006090c834d70d3e0bc5adecf5143bb738a106 (diff) | |
download | bcfg2-67dbedcad2ae4ee8a4bb8587f882557092e85bdd.tar.gz bcfg2-67dbedcad2ae4ee8a4bb8587f882557092e85bdd.tar.bz2 bcfg2-67dbedcad2ae4ee8a4bb8587f882557092e85bdd.zip |
Client/Tools/POSIX: catch multiple VerifyDirectory calls
If a directory should be pruned from all unknown files VerifyDirectory
created a new entry each call and the second fails because the
file was already removed.
Diffstat (limited to 'src/lib/Bcfg2')
-rw-r--r-- | src/lib/Bcfg2/Client/Tools/POSIX/Directory.py | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/lib/Bcfg2/Client/Tools/POSIX/Directory.py b/src/lib/Bcfg2/Client/Tools/POSIX/Directory.py index 675a4461a..ceb360d7e 100644 --- a/src/lib/Bcfg2/Client/Tools/POSIX/Directory.py +++ b/src/lib/Bcfg2/Client/Tools/POSIX/Directory.py @@ -11,6 +11,10 @@ class POSIXDirectory(POSIXTool): """ Handle <Path type='directory' ...> entries """ __req__ = ['name', 'mode', 'owner', 'group'] + def __init__(self, logger, setup, config): + super(POSIXDirectory, self).__init__(logger, setup, config) + self.prune_list = list() + def verify(self, entry, modlist): ondisk = self._exists(entry) if not ondisk: @@ -27,8 +31,10 @@ class POSIXDirectory(POSIXTool): try: extras = [os.path.join(entry.get('name'), ent) for ent in os.listdir(entry.get('name')) - if os.path.join(entry.get('name'), - ent) not in modlist] + if (os.path.join(entry.get('name'), + ent) not in modlist and + os.path.join(entry.get('name'), + ent) not in self.prune_list)] if extras: prune = False msg = "Directory %s contains extra entries: %s" % \ @@ -37,6 +43,7 @@ class POSIXDirectory(POSIXTool): entry.set('qtext', entry.get('qtext', '') + '\n' + msg) for extra in extras: Bcfg2.Client.XML.SubElement(entry, 'Prune', name=extra) + self.prune_list += extras except OSError: prune = True |