add gentoo service module

This commit is contained in:
Thomas S Hatch 2012-01-05 21:53:07 -07:00
parent 0f8bc2a686
commit 7b00e84fe7
2 changed files with 164 additions and 0 deletions

View File

@ -0,0 +1,163 @@
'''
Top level package command wrapper, used to translate the os detected by the
grains to the correct service manager
'''
import os
def __virtual__():
'''
Only work on systems which default to systemd
'''
if __grains__['os'] == 'Gentoo':
return 'service'
return False
def get_enabled():
'''
Return a list of service that are enabled on boot
CLI Example::
salt '*' service.get_enabled
'''
ret = set()
lines = __salt__['cmd.run']('rc-update show').strip().split('\n')
for line in lines:
if not '|' in line:
continue
if 'shutdown' in line:
continue
ret.add(line.split('|')[0].strip())
return list(ret)
def get_disabled():
'''
Return a set of services that are installed but disabled
CLI Example::
salt '*' service.get_enabled
'''
ret = set()
lines = __salt__['cmd.run']('rc-update -v show').strip().split('\n')
for line in lines:
if not '|' in line:
continue
elif 'shutdown' in line:
continue
comps = line.split()
if len(comps) < 3:
ret.add(comps[0])
return list(ret)
def get_all():
'''
Return all available boot services
CLI Example::
salt '*' service.get_enabled
'''
return get_enabled() + get_disabled()
def start(name):
'''
Start the specified service
CLI Example::
salt '*' service.start <service name>
'''
cmd = '/etc/init.d/{0} start'.format(name)
return not __salt__['cmd.retcode'](cmd)
def stop(name):
'''
Stop the specified service
CLI Example::
salt '*' service.stop <service name>
'''
cmd = '/etc/init.d/{0} stop'.format(name)
return not __salt__['cmd.retcode'](cmd)
def restart(name):
'''
Restart the named service
CLI Example::
salt '*' service.restart <service name>
'''
cmd = '/etc/init.d/{0} restart'.format(name)
return not __salt__['cmd.retcode'](cmd)
def status(name, sig=None):
'''
Return the status for a service, returns the PID or an empty string if the
service is running or not, pass a signature to use to find the service via
ps
CLI Example::
salt '*' service.status <service name> [service signature]
'''
sig = name if not sig else sig
cmd = "{0[ps]} | grep {1} | grep -v grep | awk '{{print $2}}'".format(
__grains__, sig)
return __salt__['cmd.run'](cmd).strip()
def enable(name):
'''
Enable the named service to start at boot
CLI Example::
salt '*' service.enable <service name>
'''
cmd = 'rc-update add {0} default'.format(name)
return not __salt__['cmd.retcode'](cmd)
def disable(name):
'''
Disable the named service to start at boot
CLI Example::
salt '*' service.disable <service name>
'''
cmd = 'rc-update delete {0} default'.format(name)
return not __salt__['cmd.retcode'](cmd)
def enabled(name):
'''
Return True if the named servioce is enabled, false otherwise
CLI Example::
salt '*' service.enabled <service name>
'''
if name in get_enabled():
return True
return False
def disabled(name):
'''
Return True if the named servioce is enabled, false otherwise
CLI Example::
salt '*' service.enabled <service name>
'''
if name in get_disabled():
return True
return False

View File

@ -24,6 +24,7 @@ def __virtual__():
'RedHat', 'RedHat',
'CentOS', 'CentOS',
'Fedora', 'Fedora',
'Gentoo',
] ]
if __grains__['os'] in disable: if __grains__['os'] in disable:
return False return False