summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Coca <bcoca@ansible.com>2015-02-11 21:05:25 -0500
committerBrian Coca <bcoca@ansible.com>2015-02-11 21:05:25 -0500
commitb82055f021b351c37723c3b10b6bf066942296cd (patch)
tree859f97c6e5ed11da53a6e873fb8a73620487e9f5
parent02af66d2329a132a7aec3b2ce7bd955d413053bd (diff)
parent9ac5ed26213b5bdb821433096bc9d566eaea51c5 (diff)
downloadansible-modules-core-b82055f021b351c37723c3b10b6bf066942296cd.tar.gz
Merge pull request #648 from bcoca/service_fix_update-rc.d
simplified update-rc.d enable/disable handling,
-rw-r--r--system/service.py57
1 files changed, 25 insertions, 32 deletions
diff --git a/system/service.py b/system/service.py
index e1bd250a..e9751c10 100644
--- a/system/service.py
+++ b/system/service.py
@@ -105,6 +105,7 @@ import shlex
import select
import time
import string
+import glob
# The distutils module is not shipped with SUNWPython on Solaris.
# It's in the SUNWPython-devel package which also contains development files
@@ -739,44 +740,36 @@ class LinuxService(Service):
# update-rc.d style
#
if self.enable_cmd.endswith("update-rc.d"):
- if self.enable:
- action = 'enable'
- else:
- action = 'disable'
- if self.enable:
- # make sure the init.d symlinks are created
- # otherwise enable might not work
- (rc, out, err) = self.execute_command("%s %s defaults" \
- % (self.enable_cmd, self.name))
+ enabled = False
+ slinks = glob.glob('/etc/rc?.d/S??' + self.name)
+ if slinks:
+ enabled = True
+
+ if self.enable != enabled:
+ self.changed = True
+
+ if self.enable:
+ action = 'enable'
+ klinks = glob.glob('/etc/rc?.d/K??' + self.name)
+ if not klinks:
+ (rc, out, err) = self.execute_command("%s %s defaults" % (self.enable_cmd, self.name))
+ if rc != 0:
+ if err:
+ self.module.fail_json(msg=err)
+ else:
+ self.module.fail_json(msg=out) % (self.enable_cmd, self.name, action)
+ else:
+ action = 'disable'
+
+ (rc, out, err) = self.execute_command("%s %s %s" % (self.enable_cmd, self.name, action))
if rc != 0:
if err:
self.module.fail_json(msg=err)
else:
- self.module.fail_json(msg=out)
+ self.module.fail_json(msg=out) % (self.enable_cmd, self.name, action)
- (rc, out, err) = self.execute_command("%s -n %s %s" \
- % (self.enable_cmd, self.name, action))
- self.changed = False
- for line in out.splitlines():
- if line.startswith('rename'):
- self.changed = True
- break
- elif self.enable and 'do not exist' in line:
- self.changed = True
- break
- elif not self.enable and 'already exist' in line:
- self.changed = True
- break
-
- # Debian compatibility
- for line in err.splitlines():
- if self.enable and 'no runlevel symlinks to modify' in line:
- self.changed = True
- break
-
- if not self.changed:
- return
+ return
#
# If we've gotten to the end, the service needs to be updated