From 5223ec6eedd1ba50843ec167a318c4217624cf48 Mon Sep 17 00:00:00 2001 From: Sol Jerome Date: Sat, 26 Sep 2009 20:31:42 +0000 Subject: POSIX: Add support for nonexistent Path entry types Allow specification of Path entries which should not exist on the client. This gives the user the ability to explicitly remove Path entries if they exist on the client. Signed-off-by: Sol Jerome git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@5464 ce84e21b-d406-0410-9b95-82705330c041 --- src/lib/Client/Tools/POSIX.py | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) (limited to 'src/lib/Client/Tools/POSIX.py') 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: -- cgit v1.2.3-1-g7c22