From 2cb658925be9e07b042b7c75fb8e1dd62f9024f1 Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Mon, 13 Feb 2017 14:47:10 -0500 Subject: [PATCH] fixed for chrrot as ignore error still has rc=0 --- lib/ansible/modules/system/systemd.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/lib/ansible/modules/system/systemd.py b/lib/ansible/modules/system/systemd.py index 83163706492..ff79fa6acbd 100644 --- a/lib/ansible/modules/system/systemd.py +++ b/lib/ansible/modules/system/systemd.py @@ -298,7 +298,14 @@ 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 rc == 0: + if out.find('ignoring request') != -1: + # 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)) + if rc == 0: + is_systemd = True + + elif rc == 0: # load return of systemctl show into dictionary for easy access and return multival = [] if out: @@ -328,14 +335,6 @@ def main(): if is_systemd and 'LoadError' in result['status']: module.fail_json(msg="Error loading unit file '%s': %s" % (unit, result['status']['LoadError'])) - elif out.find('ignoring request') != -1: - # 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)) - if rc == 0: - is_systemd = True - - # Does service exist? found = is_systemd or is_initd if is_initd and not is_systemd: