From d21f01128f378cd9bbcf59e7436114594ddf08e4 Mon Sep 17 00:00:00 2001 From: "Jeffrey C. Ollie" Date: Tue, 23 Oct 2012 09:20:38 -0500 Subject: [PATCH] Fix systemd service status. Under systemd, not every service has a "Main PID" so using that to determine whether a service was running failed for a number of useful cases, especially services that use systemd's init script compatibility layer. Instead, use the 'systemctl is-active' command to determine the status of a service. --- salt/modules/systemd.py | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/salt/modules/systemd.py b/salt/modules/systemd.py index 2e37718..185b1d5 100644 --- a/salt/modules/systemd.py +++ b/salt/modules/systemd.py @@ -166,20 +166,15 @@ def reload(name): # system def status(name, sig=None): ''' - Return the status for a service via systemd, returns the PID if the service - is running or an empty string if the service is not running + Return the status for a service via systemd, returns a bool + whether the service is running. CLI Example:: salt '*' service.status ''' - ret = __salt__['cmd.run'](_systemctl_cmd('show', name)) - index1 = ret.find('\nMainPID=') - index2 = ret.find('\n', index1+9) - mainpid = ret[index1+9:index2] - if mainpid == '0': - return '' - return mainpid + cmd = 'systemctl is-active {0}'.format(name) + return not __salt__['cmd.retcode'](cmd) def enable(name): -- 1.7.11.7