summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSol Jerome <sol.jerome@gmail.com>2013-04-10 09:46:12 -0500
committerSol Jerome <sol.jerome@gmail.com>2013-04-10 09:46:12 -0500
commit2cb245f4ebf5dbd37f11f02a7d1598b050799515 (patch)
treef1173fc1b7567a0f4ea498b5fb485a37277175b9
parent2d861fb3c2ef62bfbf15ced8bca4e86dba0f439b (diff)
downloadbcfg2-2cb245f4ebf5dbd37f11f02a7d1598b050799515.tar.gz
bcfg2-2cb245f4ebf5dbd37f11f02a7d1598b050799515.tar.bz2
bcfg2-2cb245f4ebf5dbd37f11f02a7d1598b050799515.zip
RcUpdate: Fix detection of running services
Signed-off-by: Sol Jerome <sol.jerome@gmail.com>
-rw-r--r--src/lib/Bcfg2/Client/Tools/RcUpdate.py24
-rw-r--r--src/lib/Bcfg2/Utils.py17
2 files changed, 31 insertions, 10 deletions
diff --git a/src/lib/Bcfg2/Client/Tools/RcUpdate.py b/src/lib/Bcfg2/Client/Tools/RcUpdate.py
index 552b27842..4b78581f7 100644
--- a/src/lib/Bcfg2/Client/Tools/RcUpdate.py
+++ b/src/lib/Bcfg2/Client/Tools/RcUpdate.py
@@ -12,6 +12,15 @@ class RcUpdate(Bcfg2.Client.Tools.SvcTool):
__handles__ = [('Service', 'rc-update')]
__req__ = {'Service': ['name', 'status']}
+ def get_enabled_svcs(self):
+ """
+ Return a list of all enabled services.
+ """
+ return [line.split()[0]
+ for line in self.cmd.run(['/bin/rc-status',
+ '-s']).stdout.splitlines()
+ if 'started' in line]
+
def VerifyService(self, entry, _):
"""
Verify Service status for entry.
@@ -21,9 +30,12 @@ class RcUpdate(Bcfg2.Client.Tools.SvcTool):
if entry.get('status') == 'ignore':
return True
+ # get a list of all started services
+ allsrv = self.get_enabled_svcs()
+
# check if service is enabled
- result = self.cmd.run(["/sbin/rc-update", "show", "default"])
- is_enabled = entry.get("name") in result.stdout
+ result = self.cmd.run(["/sbin/rc-update", "show", "default"]).stdout
+ is_enabled = entry.get("name") in result
# check if init script exists
try:
@@ -34,8 +46,7 @@ class RcUpdate(Bcfg2.Client.Tools.SvcTool):
return False
# check if service is enabled
- result = self.cmd.run(self.get_svc_command(entry, "status"))
- is_running = "started" in result.stdout
+ is_running = entry.get('name') in allsrv
if entry.get('status') == 'on' and not (is_enabled and is_running):
entry.set('current_status', 'off')
@@ -70,10 +81,7 @@ class RcUpdate(Bcfg2.Client.Tools.SvcTool):
def FindExtra(self):
"""Locate extra rc-update services."""
- allsrv = [line.split()[0]
- for line in self.cmd.run(['/bin/rc-status',
- '-s']).stdout.splitlines()
- if 'started' in line]
+ allsrv = self.get_enabled_svcs()
self.logger.debug('Found active services:')
self.logger.debug(allsrv)
specified = [srv.get('name') for srv in self.getSupportedEntries()]
diff --git a/src/lib/Bcfg2/Utils.py b/src/lib/Bcfg2/Utils.py
index 39cf5255e..581445bf4 100644
--- a/src/lib/Bcfg2/Utils.py
+++ b/src/lib/Bcfg2/Utils.py
@@ -108,10 +108,16 @@ class ExecutorResult(object):
def __init__(self, stdout, stderr, retval):
#: The output of the command
- self.stdout = stdout
+ if isinstance(stdout, str):
+ self.stdout = stdout
+ else:
+ self.stdout = stdout.decode('utf-8')
#: The error produced by the command
- self.stderr = stderr
+ if isinstance(stdout, str):
+ self.stderr = stderr
+ else:
+ self.stderr = stderr.decode('utf-8')
#: The return value of the command.
self.retval = retval
@@ -234,6 +240,13 @@ class Executor(object):
for line in inputdata.splitlines():
self.logger.debug('> %s' % line)
(stdout, stderr) = proc.communicate(input=inputdata)
+
+ # py3k fixes
+ if not isinstance(stdout, str):
+ stdout = stdout.decode('utf-8')
+ if not isinstance(stderr, str):
+ stderr = stderr.decode('utf-8')
+
for line in stdout.splitlines(): # pylint: disable=E1103
self.logger.debug('< %s' % line)
for line in stderr.splitlines(): # pylint: disable=E1103