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.
This commit is contained in:
parent
4816644b22
commit
af17bab373
1 changed files with 11 additions and 10 deletions
|
@ -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):
|
||||||
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):
|
||||||
# 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
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue