From 43984bc5ebc59bd8c5890ed6ba3de162e6698dcc Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Tue, 12 Feb 2013 16:02:24 -0500 Subject: better Executor class for client tools --- src/lib/Bcfg2/Client/Tools/DebInit.py | 59 ++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 29 deletions(-) (limited to 'src/lib/Bcfg2/Client/Tools/DebInit.py') diff --git a/src/lib/Bcfg2/Client/Tools/DebInit.py b/src/lib/Bcfg2/Client/Tools/DebInit.py index 7d5af1127..ca556e98b 100644 --- a/src/lib/Bcfg2/Client/Tools/DebInit.py +++ b/src/lib/Bcfg2/Client/Tools/DebInit.py @@ -15,7 +15,8 @@ class DebInit(Bcfg2.Client.Tools.SvcTool): __execs__ = ['/usr/sbin/update-rc.d', '/usr/sbin/invoke-rc.d'] __handles__ = [('Service', 'deb')] __req__ = {'Service': ['name', 'status']} - svcre = re.compile("/etc/.*/(?P[SK])(?P\d+)(?P\S+)") + svcre = \ + re.compile("/etc/.*/(?P[SK])(?P\d+)(?P\S+)") # implement entry (Verify|Install) ops def VerifyService(self, entry, _): @@ -28,7 +29,7 @@ class DebInit(Bcfg2.Client.Tools.SvcTool): files = [] try: - deb_version = open('/etc/debian_version', 'r').read().split('/', 1)[0] + deb_version = open('/etc/debian_version').read().split('/', 1)[0] except IOError: deb_version = 'unknown' @@ -59,20 +60,20 @@ class DebInit(Bcfg2.Client.Tools.SvcTool): return False else: return True + elif files: + if start_sequence: + for filename in files: + match = self.svcre.match(filename) + file_sequence = int(match.group('sequence')) + if ((match.group('action') == 'S' and + file_sequence != start_sequence) or + (match.group('action') == 'K' and + file_sequence != kill_sequence)): + return False + return True else: - if files: - if start_sequence: - for filename in files: - match = self.svcre.match(filename) - file_sequence = int(match.group('sequence')) - if match.group('action') == 'S' and file_sequence != start_sequence: - return False - if match.group('action') == 'K' and file_sequence != kill_sequence: - return False - return True - else: - entry.set('current_status', 'off') - return False + entry.set('current_status', 'off') + return False def InstallService(self, entry): """Install Service for entry.""" @@ -80,35 +81,35 @@ class DebInit(Bcfg2.Client.Tools.SvcTool): try: os.stat('/etc/init.d/%s' % entry.get('name')) except OSError: - self.logger.debug("Init script for service %s does not exist" % entry.get('name')) + self.logger.debug("Init script for service %s does not exist" % + entry.get('name')) return False if entry.get('status') == 'off': self.cmd.run("/usr/sbin/invoke-rc.d %s stop" % (entry.get('name'))) - cmdrc = self.cmd.run("/usr/sbin/update-rc.d -f %s remove" % entry.get('name'))[0] + return self.cmd.run("/usr/sbin/update-rc.d -f %s remove" % + entry.get('name')).success else: command = "/usr/sbin/update-rc.d %s defaults" % (entry.get('name')) if entry.get('sequence'): - cmdrc = self.cmd.run("/usr/sbin/update-rc.d -f %s remove" % entry.get('name'))[0] - if cmdrc != 0: + if not self.cmd.run("/usr/sbin/update-rc.d -f %s remove" % + entry.get('name')).success: return False start_sequence = int(entry.get('sequence')) kill_sequence = 100 - start_sequence command = "%s %d %d" % (command, start_sequence, kill_sequence) - cmdrc = self.cmd.run(command)[0] - return cmdrc == 0 + return self.cmd.run(command).success def FindExtra(self): """Find Extra Debian Service entries.""" specified = [entry.get('name') for entry in self.getSupportedEntries()] - extra = [] - for name in [self.svcre.match(fname).group('name') for fname in - glob.glob("/etc/rc[12345].d/S*") \ - if self.svcre.match(fname).group('name') not in specified]: - if name not in extra: - extra.append(name) - return [Bcfg2.Client.XML.Element('Service', name=name, type='deb') for name \ - in extra] + extra = set() + for fname in glob.glob("/etc/rc[12345].d/S*"): + name = self.svcre.match(fname).group('name') + if name not in specified: + extra.add(name) + return [Bcfg2.Client.XML.Element('Service', name=name, type='deb') + for name in list(extra)] def Remove(self, _): """Remove extra service entries.""" -- cgit v1.2.3-1-g7c22