diff options
Diffstat (limited to 'src/lib/Client/Tools')
-rw-r--r-- | src/lib/Client/Tools/APT.py | 2 | ||||
-rw-r--r-- | src/lib/Client/Tools/POSIX.py | 36 | ||||
-rw-r--r-- | src/lib/Client/Tools/SMF.py | 1 | ||||
-rw-r--r-- | src/lib/Client/Tools/YUMng.py | 9 | ||||
-rw-r--r-- | src/lib/Client/Tools/__init__.py | 6 |
5 files changed, 41 insertions, 13 deletions
diff --git a/src/lib/Client/Tools/APT.py b/src/lib/Client/Tools/APT.py index 156186091..fe1ef6fdd 100644 --- a/src/lib/Client/Tools/APT.py +++ b/src/lib/Client/Tools/APT.py @@ -119,7 +119,7 @@ class APT(Bcfg2.Client.Tools.Tool): if bad: self.logger.debug("It is suggested that you either manage these " "files, revert the changes, or ignore false " - "failures):") + "failures:") self.logger.info("Package %s failed validation. Bad files are:" % \ entry.get('name')) self.logger.info(bad) diff --git a/src/lib/Client/Tools/POSIX.py b/src/lib/Client/Tools/POSIX.py index d2611130c..c883fc17a 100644 --- a/src/lib/Client/Tools/POSIX.py +++ b/src/lib/Client/Tools/POSIX.py @@ -671,12 +671,36 @@ class POSIX(Bcfg2.Client.Tools.Tool): 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 + ename = entry.get('name') + if entry.get('recursive') in ['True', 'true']: + # ensure that configuration spec is consistent first + if [e for e in self.buildModlist() \ + if e.startswith(ename) and e != ename]: + self.logger.error('Not installing %s. One or more files ' + 'in this directory are specified in ' + 'your configuration.' % ename) + return False + try: + shutil.rmtree(ename) + except OSError, e: + self.logger.error('Failed to remove %s: %s' % (ename, + e.strerror)) + else: + if os.path.isdir(ename): + try: + os.rmdir(ename) + return True + except OSError, e: + self.logger.error('Failed to remove %s: %s' % (ename, + e.strerror)) + return False + try: + os.remove(ename) + return True + except OSError, e: + self.logger.error('Failed to remove %s: %s' % (ename, + e.strerror)) + return False def Verifypermissions(self, entry, _): """Verify Path type='permissions' entry""" diff --git a/src/lib/Client/Tools/SMF.py b/src/lib/Client/Tools/SMF.py index f0bc6bd05..96c7d9d28 100644 --- a/src/lib/Client/Tools/SMF.py +++ b/src/lib/Client/Tools/SMF.py @@ -66,6 +66,7 @@ class SMF(Bcfg2.Client.Tools.SvcTool): # Occurs when no lines are returned (service not installed) return False + entry.set('current_status', srvdata[0]) if entry.get('status') == 'on': return srvdata[0] == 'ON' else: diff --git a/src/lib/Client/Tools/YUMng.py b/src/lib/Client/Tools/YUMng.py index 3b5a62d97..8db1683e4 100644 --- a/src/lib/Client/Tools/YUMng.py +++ b/src/lib/Client/Tools/YUMng.py @@ -358,7 +358,12 @@ class YUMng(Bcfg2.Client.Tools.PkgTool): for po in packages: d = {} for i in ['name', 'epoch', 'version', 'release', 'arch']: - d[i] = getattr(po, i) + if i == 'arch' and getattr(po, i) is None: + d[i] = 'noarch' + elif i == 'epoch' and getattr(po, i) is None: + d[i] = '0' + else: + d[i] = getattr(po, i) self.installed.setdefault(po.name, []).append(d) def VerifyPackage(self, entry, modlist, pinned_version=None): @@ -530,7 +535,7 @@ class YUMng(Bcfg2.Client.Tools.PkgTool): package_fail = True self.logger.debug("It is suggested that you either manage " "these files, revert the changes, or ignore " - "false failures):") + "false failures:") self.logger.debug(" Verify Problems:") for fn, probs in stat['verify'].items(): self.logger.debug(" %s" % fn) diff --git a/src/lib/Client/Tools/__init__.py b/src/lib/Client/Tools/__init__.py index 8a90e130c..b5120db71 100644 --- a/src/lib/Client/Tools/__init__.py +++ b/src/lib/Client/Tools/__init__.py @@ -335,9 +335,7 @@ class SvcTool(Tool): def restart_service(self, service): self.logger.debug('Restarting service %s' % service.get('name')) - restart_target = 'restart' - if service.get('mode', 'default') == 'custom': - restart_target = service.get('target', 'restart') + restart_target = service.get('target', 'restart') return self.cmd.run(self.get_svc_command(service, restart_target))[0] def check_service(self, service): @@ -353,7 +351,7 @@ class SvcTool(Tool): if entry.get('mode', 'default') == 'manual': continue # need to handle servicemode = (build|default) - # need to handle mode = (default|supervised|custom) + # need to handle mode = (default|supervised) if entry.get('status') == 'on': if self.setup['servicemode'] == 'build': rc = self.stop_service(entry) |