diff options
Diffstat (limited to 'src/lib/Client/Tools/POSIX.py')
-rw-r--r-- | src/lib/Client/Tools/POSIX.py | 30 |
1 files changed, 25 insertions, 5 deletions
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: |