summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Client/Tools/Chkconfig.py
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2013-03-21 14:35:04 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2013-03-21 14:35:04 -0400
commit38f99b402d3118e2c26ff42d72ddf9b666adac13 (patch)
tree705d18bed66337192816325facb1733280291ff5 /src/lib/Bcfg2/Client/Tools/Chkconfig.py
parenta3f2a731bbef5d9c2033eed23432aa7792d47989 (diff)
parent71d7285c405bd639f1f9f2642ea8fb567b97caec (diff)
downloadbcfg2-38f99b402d3118e2c26ff42d72ddf9b666adac13.tar.gz
bcfg2-38f99b402d3118e2c26ff42d72ddf9b666adac13.tar.bz2
bcfg2-38f99b402d3118e2c26ff42d72ddf9b666adac13.zip
Merge branch '1.3.2' into maint
Conflicts: src/lib/Bcfg2/Client/Tools/__init__.py src/sbin/bcfg2-test testsuite/Testsrc/Testlib/TestClient/TestTools/TestPOSIX/Test__init.py testsuite/Testsrc/Testlib/TestClient/TestTools/TestPOSIXUsers.py testsuite/Testsrc/test_code_checks.py
Diffstat (limited to 'src/lib/Bcfg2/Client/Tools/Chkconfig.py')
-rw-r--r--src/lib/Bcfg2/Client/Tools/Chkconfig.py34
1 files changed, 16 insertions, 18 deletions
diff --git a/src/lib/Bcfg2/Client/Tools/Chkconfig.py b/src/lib/Bcfg2/Client/Tools/Chkconfig.py
index e1ad35861..ec7f462b3 100644
--- a/src/lib/Bcfg2/Client/Tools/Chkconfig.py
+++ b/src/lib/Bcfg2/Client/Tools/Chkconfig.py
@@ -24,16 +24,14 @@ class Chkconfig(Bcfg2.Client.Tools.SvcTool):
if entry.get('status') == 'ignore':
return True
- try:
- cmd = "/sbin/chkconfig --list %s " % (entry.get('name'))
- raw = self.cmd.run(cmd)[1]
- patterns = ["error reading information", "unknown service"]
- srvdata = [line.split() for line in raw for pattern in patterns \
- if pattern not in line][0]
- except IndexError:
- # Ocurrs when no lines are returned (service not installed)
+ rv = self.cmd.run("/sbin/chkconfig --list %s " % entry.get('name'))
+ if rv.success:
+ srvdata = rv.stdout.splitlines()[0].split()
+ else:
+ # service not installed
entry.set('current_status', 'off')
return False
+
if len(srvdata) == 2:
# This is an xinetd service
if entry.get('status') == srvdata[1]:
@@ -43,7 +41,7 @@ class Chkconfig(Bcfg2.Client.Tools.SvcTool):
return False
try:
- onlevels = [level.split(':')[0] for level in srvdata[1:] \
+ onlevels = [level.split(':')[0] for level in srvdata[1:]
if level.split(':')[1] == 'on']
except IndexError:
onlevels = []
@@ -70,25 +68,25 @@ class Chkconfig(Bcfg2.Client.Tools.SvcTool):
if entry.get('status') == 'off':
rv &= self.cmd.run((rcmd + " --level 0123456") %
(entry.get('name'),
- entry.get('status')))[0] == 0
+ entry.get('status'))).success
if entry.get("current_status") == "on":
- rv &= self.stop_service(entry)
+ rv &= self.stop_service(entry).success
else:
rv &= self.cmd.run(rcmd % (entry.get('name'),
- entry.get('status')))[0] == 0
+ entry.get('status'))).success
if entry.get("current_status") == "off":
- rv &= (self.start_service(entry) == 0)
+ rv &= self.start_service(entry).success
return rv
def FindExtra(self):
"""Locate extra chkconfig Services."""
allsrv = [line.split()[0]
- for line in self.cmd.run("/sbin/chkconfig "
- "--list 2>/dev/null|grep :on")[1]]
+ for line in self.cmd.run("/sbin/chkconfig",
+ "--list").stdout.splitlines()
+ if ":on" in line]
self.logger.debug('Found active services:')
self.logger.debug(allsrv)
specified = [srv.get('name') for srv in self.getSupportedEntries()]
- return [Bcfg2.Client.XML.Element('Service',
- type='chkconfig',
- name=name) \
+ return [Bcfg2.Client.XML.Element('Service', type='chkconfig',
+ name=name)
for name in allsrv if name not in specified]