diff options
author | Brian Coca <bcoca@ansible.com> | 2015-02-11 21:05:25 -0500 |
---|---|---|
committer | Brian Coca <bcoca@ansible.com> | 2015-02-11 21:05:25 -0500 |
commit | b82055f021b351c37723c3b10b6bf066942296cd (patch) | |
tree | 859f97c6e5ed11da53a6e873fb8a73620487e9f5 | |
parent | 02af66d2329a132a7aec3b2ce7bd955d413053bd (diff) | |
parent | 9ac5ed26213b5bdb821433096bc9d566eaea51c5 (diff) | |
download | ansible-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.py | 57 |
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 |