summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Coca <bcoca@ansible.com>2015-02-16 18:52:38 -0500
committerBrian Coca <bcoca@ansible.com>2015-02-16 18:52:38 -0500
commit1bca815d371bcd5877497db99794bfae9d0b4bf8 (patch)
tree99b86ace7e186cae80dae73cd34d49efb89fd109
parent818767b1d46694ca14df0c883382a2a33990e853 (diff)
parent17c7d9c5d5c8c880f59a9a0009d795ca7ff19225 (diff)
downloadansible-modules-core-1bca815d371bcd5877497db99794bfae9d0b4bf8.tar.gz
Merge pull request #95 from Gamevy/use-insserv
Use insserv where available
-rw-r--r--system/service.py40
1 files changed, 39 insertions, 1 deletions
diff --git a/system/service.py b/system/service.py
index 5780fa5a..c712c43c 100644
--- a/system/service.py
+++ b/system/service.py
@@ -393,7 +393,7 @@ class LinuxService(Service):
def get_service_tools(self):
paths = [ '/sbin', '/usr/sbin', '/bin', '/usr/bin' ]
- binaries = [ 'service', 'chkconfig', 'update-rc.d', 'rc-service', 'rc-update', 'initctl', 'systemctl', 'start', 'stop', 'restart' ]
+ binaries = [ 'service', 'chkconfig', 'update-rc.d', 'rc-service', 'rc-update', 'initctl', 'systemctl', 'start', 'stop', 'restart', 'insserv' ]
initpaths = [ '/etc/init.d' ]
location = dict()
@@ -461,6 +461,9 @@ class LinuxService(Service):
if location.get('update-rc.d', False):
# and uses update-rc.d
self.enable_cmd = location['update-rc.d']
+ elif location.get('insserv', None):
+ # and uses insserv
+ self.enable_cmd = location['insserv']
elif location.get('chkconfig', False):
# and uses chkconfig
self.enable_cmd = location['chkconfig']
@@ -777,6 +780,41 @@ class LinuxService(Service):
return
#
+ # insserv (Debian 7)
+ #
+ if self.enable_cmd.endswith("insserv"):
+ if self.enable:
+ (rc, out, err) = self.execute_command("%s -n %s" % (self.enable_cmd, self.name))
+ else:
+ (rc, out, err) = self.execute_command("%s -nr %s" % (self.enable_cmd, self.name))
+
+ self.changed = False
+ for line in err.splitlines():
+ if self.enable and line.find('enable service') != -1:
+ self.changed = True
+ break
+ if not self.enable and line.find('remove service') != -1:
+ self.changed = True
+ break
+
+ if self.module.check_mode:
+ self.module.exit_json(changed=self.changed)
+
+ if not self.changed:
+ return
+
+ if self.enable:
+ (rc, out, err) = self.execute_command("%s %s" % (self.enable_cmd, self.name))
+ if (rc != 0) or (err != ''):
+ self.module.fail_json(msg=("Failed to install service. rc: %s, out: %s, err: %s" % (rc, out, err)))
+ return (rc, out, err)
+ else:
+ (rc, out, err) = self.execute_command("%s -r %s" % (self.enable_cmd, self.name))
+ if (rc != 0) or (err != ''):
+ self.module.fail_json(msg=("Failed to remove service. rc: %s, out: %s, err: %s" % (rc, out, err)))
+ return (rc, out, err)
+
+ #
# If we've gotten to the end, the service needs to be updated
#
self.changed = True