diff --git a/salt/modules/gentoo_service.py b/salt/modules/gentoo_service.py new file mode 100644 index 0000000000..869e110abc --- /dev/null +++ b/salt/modules/gentoo_service.py @@ -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 + ''' + 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 + ''' + 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 + ''' + 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 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 + ''' + 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 + ''' + 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 + ''' + 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 + ''' + if name in get_disabled(): + return True + return False diff --git a/salt/modules/service.py b/salt/modules/service.py index ae394f2155..0239469783 100644 --- a/salt/modules/service.py +++ b/salt/modules/service.py @@ -24,6 +24,7 @@ def __virtual__(): 'RedHat', 'CentOS', 'Fedora', + 'Gentoo', ] if __grains__['os'] in disable: return False