summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Client/Tools/DebInit.py
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2013-02-12 16:02:24 -0500
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2013-02-14 14:57:04 -0500
commit43984bc5ebc59bd8c5890ed6ba3de162e6698dcc (patch)
treed9e972b160d5d5033537495e9f507cfe043483c3 /src/lib/Bcfg2/Client/Tools/DebInit.py
parentd526c8745b61c1977b775cfe750a86c51dd6a9f3 (diff)
downloadbcfg2-43984bc5ebc59bd8c5890ed6ba3de162e6698dcc.tar.gz
bcfg2-43984bc5ebc59bd8c5890ed6ba3de162e6698dcc.tar.bz2
bcfg2-43984bc5ebc59bd8c5890ed6ba3de162e6698dcc.zip
better Executor class for client tools
Diffstat (limited to 'src/lib/Bcfg2/Client/Tools/DebInit.py')
-rw-r--r--src/lib/Bcfg2/Client/Tools/DebInit.py59
1 files changed, 30 insertions, 29 deletions
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<action>[SK])(?P<sequence>\d+)(?P<name>\S+)")
+ svcre = \
+ re.compile("/etc/.*/(?P<action>[SK])(?P<sequence>\d+)(?P<name>\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."""