diff --git a/changelogs/fragments/2936-pacman-fix_changed_status_when_ignorepkg_has_been_defined.yml b/changelogs/fragments/2936-pacman-fix_changed_status_when_ignorepkg_has_been_defined.yml new file mode 100644 index 0000000000..815ffa4aee --- /dev/null +++ b/changelogs/fragments/2936-pacman-fix_changed_status_when_ignorepkg_has_been_defined.yml @@ -0,0 +1,3 @@ +--- +bugfixes: + - pacman - fix changed status when ignorepkg has been defined (https://github.com/ansible-collections/community.general/issues/1758). diff --git a/plugins/modules/packaging/os/pacman.py b/plugins/modules/packaging/os/pacman.py index 372d13cd49..ea138fa614 100644 --- a/plugins/modules/packaging/os/pacman.py +++ b/plugins/modules/packaging/os/pacman.py @@ -254,16 +254,23 @@ def upgrade(module, pacman_path): # e.g., "ansible 2.7.1-1 -> 2.7.2-1" regex = re.compile(r'([\w+\-.@]+) (\S+-\S+) -> (\S+-\S+)') for p in data: - m = regex.search(p) - packages.append(m.group(1)) - if module._diff: - diff['before'] += "%s-%s\n" % (m.group(1), m.group(2)) - diff['after'] += "%s-%s\n" % (m.group(1), m.group(3)) + if '[ignored]' not in p: + m = regex.search(p) + packages.append(m.group(1)) + if module._diff: + diff['before'] += "%s-%s\n" % (m.group(1), m.group(2)) + diff['after'] += "%s-%s\n" % (m.group(1), m.group(3)) if module.check_mode: - module.exit_json(changed=True, msg="%s package(s) would be upgraded" % (len(data)), packages=packages, diff=diff) + if packages: + module.exit_json(changed=True, msg="%s package(s) would be upgraded" % (len(data)), packages=packages, diff=diff) + else: + module.exit_json(changed=False, msg='Nothing to upgrade', packages=packages) rc, stdout, stderr = module.run_command(cmdupgrade, check_rc=False) if rc == 0: - module.exit_json(changed=True, msg='System upgraded', packages=packages, diff=diff) + if packages: + module.exit_json(changed=True, msg='System upgraded', packages=packages, diff=diff) + else: + module.exit_json(changed=False, msg='Nothing to upgrade', packages=packages) else: module.fail_json(msg="Could not upgrade") else: