Commit af17bab3 by Florian Diebold

Support systemd in the service module.

Most of it worked already, except for the enable parameter, because it
tried to use chkconfig which only sees SysV services. First look for
systemctl and use that if it exists.
parent 4816644b
...@@ -32,7 +32,7 @@ def _find_binaries(m): ...@@ -32,7 +32,7 @@ def _find_binaries(m):
global CHKCONFIG global CHKCONFIG
global INITCTL global INITCTL
paths = ['/sbin', '/usr/sbin', '/bin', '/usr/bin'] paths = ['/sbin', '/usr/sbin', '/bin', '/usr/bin']
binaries = [ 'service', 'chkconfig', 'update-rc.d', 'initctl'] binaries = [ 'service', 'chkconfig', 'update-rc.d', 'initctl', 'systemctl']
location = dict() location = dict()
for binary in binaries: for binary in binaries:
...@@ -44,7 +44,9 @@ def _find_binaries(m): ...@@ -44,7 +44,9 @@ def _find_binaries(m):
location[binary] = path + '/' + binary location[binary] = path + '/' + binary
break break
if location.get('chkconfig', None): if location.get('systemctl', None):
CHKCONFIG = location['systemctl']
elif location.get('chkconfig', None):
CHKCONFIG = location['chkconfig'] CHKCONFIG = location['chkconfig']
elif location.get('update-rc.d', None): elif location.get('update-rc.d', None):
CHKCONFIG = location['update-rc.d'] CHKCONFIG = location['update-rc.d']
...@@ -142,17 +144,16 @@ def _do_enable(name, enable): ...@@ -142,17 +144,16 @@ def _do_enable(name, enable):
# we change argument depending on real binary used # we change argument depending on real binary used
# update-rc.d wants enable/disable while # update-rc.d wants enable/disable while
# chkconfig wants on/off # chkconfig wants on/off
valid_argument = dict({'on' : 'on', 'off' : 'off'}) # also, systemctl needs the arguments reversed
if CHKCONFIG.endswith("update-rc.d"): if CHKCONFIG.endswith("update-rc.d"):
valid_argument['on'] = "enable" args = (CHKCONFIG, name, "enable" if enable else "disable")
valid_argument['off'] = "disable" elif CHKCONFIG.endswith("systemctl"):
args = (CHKCONFIG, "enable" if enable else "disable", name + ".service")
else:
args = (CHKCONFIG, name, "on" if enable else "off")
if enable is not None: if enable is not None:
if enable: rc, stdout, stderr = _run("%s %s %s" % args)
rc, stdout, stderr = _run("%s %s %s" % (CHKCONFIG, name, valid_argument['on']))
else:
rc, stdout, stderr = _run("%s %s %s" % (CHKCONFIG, name, valid_argument['off']))
return rc, stdout, stderr return rc, stdout, stderr
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment