Merge pull request #2350 from bcoca/service_fixes
rearranged systemd check, removed redundant systemctl check
This commit is contained in:
commit
da4827085f
1 changed files with 26 additions and 5 deletions
|
@ -395,7 +395,7 @@ class LinuxService(Service):
|
|||
location = dict()
|
||||
|
||||
for binary in binaries:
|
||||
location[binary] = self.module.get_bin_path(binary)
|
||||
location[binary] = self.module.get_bin_path(binary, opt_dirs=paths)
|
||||
|
||||
for initdir in initpaths:
|
||||
initscript = "%s/%s" % (initdir,self.name)
|
||||
|
@ -403,10 +403,31 @@ class LinuxService(Service):
|
|||
self.svc_initscript = initscript
|
||||
|
||||
def check_systemd():
|
||||
return os.path.exists("/run/systemd/system/") or os.path.exists("/dev/.run/systemd/") or os.path.exists("/dev/.systemd/")
|
||||
|
||||
# tools must be installed
|
||||
if location.get('systemctl',False):
|
||||
|
||||
# this should show if systemd is the boot init system
|
||||
# these mirror systemd's own sd_boot test http://www.freedesktop.org/software/systemd/man/sd_booted.html
|
||||
for canary in ["/run/systemd/system/", "/dev/.run/systemd/", "/dev/.systemd/"]:
|
||||
if os.path.exists(canary):
|
||||
return True
|
||||
|
||||
# If all else fails, check if init is the systemd command, using comm as cmdline could be symlink
|
||||
try:
|
||||
f = open('/proc/1/comm', 'r')
|
||||
except IOError:
|
||||
# If comm doesn't exist, old kernel, no systemd
|
||||
return False
|
||||
|
||||
for line in f:
|
||||
if 'systemd' in line:
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
# Locate a tool to enable/disable a service
|
||||
if location.get('systemctl',False) and check_systemd():
|
||||
if check_systemd():
|
||||
# service is managed by systemd
|
||||
self.__systemd_unit = self.name
|
||||
self.svc_cmd = location['systemctl']
|
||||
|
@ -684,7 +705,8 @@ class LinuxService(Service):
|
|||
(rc, out, err) = self.execute_command("%s --list %s" % (self.enable_cmd, self.name))
|
||||
if not self.name in out:
|
||||
self.module.fail_json(msg="service %s does not support chkconfig" % self.name)
|
||||
state = out.split()[-1]
|
||||
#TODO: look back on why this is here
|
||||
#state = out.split()[-1]
|
||||
|
||||
# Check if we're already in the correct state
|
||||
if "3:%s" % action in out and "5:%s" % action in out:
|
||||
|
@ -946,7 +968,6 @@ class FreeBsdService(Service):
|
|||
self.rcconf_file = rcfile
|
||||
|
||||
rc, stdout, stderr = self.execute_command("%s %s %s %s" % (self.svc_cmd, self.name, 'rcvar', self.arguments))
|
||||
cmd = "%s %s %s %s" % (self.svc_cmd, self.name, 'rcvar', self.arguments)
|
||||
try:
|
||||
rcvars = shlex.split(stdout, comments=True)
|
||||
except:
|
||||
|
|
Loading…
Reference in a new issue