From 96f1bd82c0b5dbbca0cd8390b7ed06352fa67c19 Mon Sep 17 00:00:00 2001 From: Toshio Kuratomi Date: Tue, 2 Feb 2016 10:39:19 -0800 Subject: [PATCH] Allow dnf to remove dependent packages of a package that is being removed Fixes #1517 --- lib/ansible/modules/extras/packaging/os/dnf.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/ansible/modules/extras/packaging/os/dnf.py b/lib/ansible/modules/extras/packaging/os/dnf.py index 96097e4afe7..2dd63c525ea 100644 --- a/lib/ansible/modules/extras/packaging/os/dnf.py +++ b/lib/ansible/modules/extras/packaging/os/dnf.py @@ -241,6 +241,7 @@ def _mark_package_install(module, base, pkg_spec): def ensure(module, base, state, names): + allow_erasing = False if names == ['*'] and state == 'latest': base.upgrade_all() else: @@ -287,6 +288,7 @@ def ensure(module, base, state, names): _mark_package_install(module, base, pkg_spec) else: + # state == absent if filenames: module.fail_json( msg="Cannot remove paths -- please specify package name.") @@ -298,8 +300,11 @@ def ensure(module, base, state, names): for pkg_spec in pkg_specs: if installed.filter(name=pkg_spec): base.remove(pkg_spec) + # Like the dnf CLI we want to allow recursive removal of dependent + # packages + allow_erasing = True - if not base.resolve(): + if not base.resolve(allow_erasing=allow_erasing): module.exit_json(msg="Nothing to do") else: if module.check_mode: