diff options
author | Kai <kai.scorpio@gmail.com> | 2017-04-25 00:53:12 +0100 |
---|---|---|
committer | Brian Coca <bcoca@users.noreply.github.com> | 2017-04-24 19:53:12 -0400 |
commit | cb13aea88b2511806ed28ef08ca447751a14c792 (patch) | |
tree | 11cdfe27524f1d6545a9a99a70b358d2f75a85f1 | |
parent | d021d8f16b4b816bf4b0e24a793ec5b8c9185d11 (diff) | |
download | ansible-cb13aea88b2511806ed28ef08ca447751a14c792.tar.gz |
Fix systemd in chroot (#23904)
* Fix systemd in chroot
The 'request ignored' message is in stderr, not stdout.
* Check both stdout and stderr for systemd message
Some versions of systemd report to stderr, others to stdout. Also check
whether output could be a valid normal response to avoid false positives.
-rw-r--r-- | lib/ansible/modules/system/systemd.py | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/ansible/modules/system/systemd.py b/lib/ansible/modules/system/systemd.py index 4a7c07cb68..ccd35508a9 100644 --- a/lib/ansible/modules/system/systemd.py +++ b/lib/ansible/modules/system/systemd.py @@ -256,6 +256,9 @@ from ansible.module_utils._text import to_native def is_running_service(service_status): return service_status['ActiveState'] in set(['active', 'activating']) +def request_was_ignored(out): + return '=' not in out and 'ignoring request' in out + # =========================================== # Main control flow @@ -307,7 +310,7 @@ def main(): # check service data, cannot error out on rc as it changes across versions, assume not found (rc, out, err) = module.run_command("%s show '%s'" % (systemctl, unit)) - if out.find('ignoring request') != -1: + if request_was_ignored(out) or request_was_ignored(err): # fallback list-unit-files as show does not work on some systems (chroot) # not used as primary as it skips some services (like those using init.d) and requires .service/etc notation (rc, out, err) = module.run_command("%s list-unit-files '%s'" % (systemctl, unit)) |