From 2db2d49ee254ef9140174682565b314b4be73259 Mon Sep 17 00:00:00 2001 From: Sol Jerome Date: Thu, 16 Jul 2009 00:24:56 +0000 Subject: POSIX.py: Fix false error in InstallSymLink We were falsely assuming that the path to the symlink existed when installing a new one. However, if a symlink has not yet been created, this path could simply not yet exist. Signed-off-by: Sol Jerome git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@5331 ce84e21b-d406-0410-9b95-82705330c041 --- src/lib/Client/Tools/POSIX.py | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 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 0ad9dacf6..016d8f32a 100644 --- a/src/lib/Client/Tools/POSIX.py +++ b/src/lib/Client/Tools/POSIX.py @@ -114,19 +114,20 @@ class POSIX(Bcfg2.Client.Tools.Tool): def InstallSymLink(self, entry): '''Install SymLink Entry''' self.logger.info("Installing Symlink %s" % (entry.get('name'))) - try: - fmode = os.lstat(entry.get('name'))[ST_MODE] - if S_ISREG(fmode) or S_ISLNK(fmode): - self.logger.debug("Non-directory entry already exists at %s" % \ - (entry.get('name'))) - os.unlink(entry.get('name')) - elif S_ISDIR(fmode): - self.logger.debug("Directory entry already exists at %s" % (entry.get('name'))) - self.cmd.run("mv %s/ %s.bak" % (entry.get('name'), entry.get('name'))) - else: - os.unlink(entry.get('name')) - except OSError: - self.logger.info("Symlink %s cleanup failed" % (entry.get('name'))) + if os.path.exists(entry.get('name')): + try: + fmode = os.lstat(entry.get('name'))[ST_MODE] + if S_ISREG(fmode) or S_ISLNK(fmode): + self.logger.debug("Non-directory entry already exists at %s" % \ + (entry.get('name'))) + os.unlink(entry.get('name')) + elif S_ISDIR(fmode): + self.logger.debug("Directory entry already exists at %s" % (entry.get('name'))) + self.cmd.run("mv %s/ %s.bak" % (entry.get('name'), entry.get('name'))) + else: + os.unlink(entry.get('name')) + except OSError: + self.logger.info("Symlink %s cleanup failed" % (entry.get('name'))) try: os.symlink(entry.get('to'), entry.get('name')) return True -- cgit v1.2.3-1-g7c22