summaryrefslogtreecommitdiffstats
path: root/src/lib/Client/Tools/POSIX.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/Client/Tools/POSIX.py')
-rw-r--r--src/lib/Client/Tools/POSIX.py30
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: