systemd - supports new systemctl output message for chroot (#71197) (#71329)

The message generated by systemctl has been updated in 9321e23c40, which requires a corresponding change in the systemd module.

In addition, this fixes the module when the SYSTEMD_OFFLINE environment variable is set.

(cherry picked from commit a1a50bb3cd)
pull/71527/head
Lorenzo Castelli 4 years ago committed by GitHub
parent 8b269dbcce
commit 4a5aac0ac1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,3 @@
bugfixes:
- systemd - fixed chroot usage on new versions of systemd, that broke because of upstream changes in systemctl output
- systemd - made the systemd module work correctly when the SYSTEMD_OFFLINE environment variable is set

@ -279,7 +279,7 @@ def is_deactivating_service(service_status):
def request_was_ignored(out): def request_was_ignored(out):
return '=' not in out and 'ignoring request' in out return '=' not in out and ('ignoring request' in out or 'ignoring command' in out)
def parse_systemctl_show(lines): def parse_systemctl_show(lines):
@ -537,8 +537,8 @@ def main():
if rc != 0: if rc != 0:
module.fail_json(msg="Unable to %s service %s: %s" % (action, unit, err)) module.fail_json(msg="Unable to %s service %s: %s" % (action, unit, err))
# check for chroot # check for chroot
elif is_chroot(module): elif is_chroot(module) or os.environ.get('SYSTEMD_OFFLINE') == '1':
module.warn("Target is a chroot. This can lead to false positives or prevent the init system tools from working.") module.warn("Target is a chroot or systemd is offline. This can lead to false positives or prevent the init system tools from working.")
else: else:
# this should not happen? # this should not happen?
module.fail_json(msg="Service is in unknown state", status=result['status']) module.fail_json(msg="Service is in unknown state", status=result['status'])

@ -47,4 +47,10 @@
- 'not systemd_test0.changed' - 'not systemd_test0.changed'
- 'systemd_test0.state == "started"' - 'systemd_test0.state == "started"'
- name: check that the module works even when systemd is offline (eg in chroot)
systemd:
name: "{{ running_names.stdout_lines|random }}"
state: started
environment:
SYSTEMD_OFFLINE: 1
when: 'systemctl_check.rc == 0' when: 'systemctl_check.rc == 0'

Loading…
Cancel
Save