diff options
Diffstat (limited to 'src/lib/Client')
-rw-r--r-- | src/lib/Client/Frame.py | 2 | ||||
-rw-r--r-- | src/lib/Client/Tools/POSIX.py | 30 |
2 files changed, 26 insertions, 6 deletions
diff --git a/src/lib/Client/Frame.py b/src/lib/Client/Frame.py index 8ab329e7b..3228ab2c2 100644 --- a/src/lib/Client/Frame.py +++ b/src/lib/Client/Frame.py @@ -118,7 +118,7 @@ class Frame: entry.get('name')) for entry in problems]) self.logger.error("") entries = [(entry.tag, entry.get('name')) for struct in config for entry in struct] - pkgs = [(entry.get('name'), entry.get('origin')) for struct in config for entry in struct if entry.tag == 'Package'] + pkgs = [(entry.get('name'), entry.get('origin')) for struct in config for entry in struct if entry.tag == 'Package'] multi = [] for entry in entries[:]: if entries.count(entry) > 1: diff --git a/src/lib/Client/Tools/POSIX.py b/src/lib/Client/Tools/POSIX.py index 81471f910..d956abf3a 100644 --- a/src/lib/Client/Tools/POSIX.py +++ b/src/lib/Client/Tools/POSIX.py @@ -79,11 +79,17 @@ def isString(strng): class POSIX(Bcfg2.Client.Tools.Tool): '''POSIX File support code''' name = 'POSIX' - __handles__ = [('ConfigFile', None), ('Directory', None), - ('Path', 'ConfigFile'), ('Path', 'Device'), - ('Path', 'Directory'), ('Path', 'HardLink'), - ('Path', 'Perms'), ('Path', 'SymLink'), - ('Permissions', None), ('SymLink', None)] + __handles__ = [('ConfigFile', None), + ('Directory', None), + ('Path', 'ConfigFile'), + ('Path', 'Device'), + ('Path', 'Directory'), + ('Path', 'HardLink'), + ('Path', 'Perms'), + ('Path', 'SymLink'), + ('Path', 'nonexistent'), + ('Permissions', None), + ('SymLink', None)] __req__ = {'ConfigFile': ['name', 'owner', 'group', 'perms'], 'Directory': ['name', 'owner', 'group', 'perms'], 'Path': ['name', 'type'], @@ -376,6 +382,20 @@ class POSIX(Bcfg2.Client.Tools.Tool): (entry.get('name'))) return False + def Verifynonexistent(self, entry, _): + '''Verify nonexistent entry''' + # return true if path does _not_ exist + return not os.path.lexists(entry.get('name')) + + def Installnonexistent(self, entry): + '''Remove nonexistent entries''' + try: + os.remove(entry.get('name')) + return True + except OSError: + self.logger.error('Failed to remove %s' % entry.get('name')) + return False + def gatherCurrentData(self, entry): if entry.tag == 'ConfigFile': try: |