From bdf45d1fbc2101dde567a03c0c3954b64dbef767 Mon Sep 17 00:00:00 2001 From: Matt Martz Date: Wed, 10 Apr 2024 14:07:38 -0500 Subject: [PATCH] [stable-2.16] dnf: obey the keepcache setting (#82735) (#82964) Fixes #81954 (cherry picked from commit 77ab7af) Co-authored-by: Martin Krizek --- changelogs/fragments/81954-dnf-keepcache.yml | 2 ++ lib/ansible/modules/dnf.py | 6 ++++-- test/integration/targets/dnf/tasks/dnf.yml | 11 +++++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 changelogs/fragments/81954-dnf-keepcache.yml diff --git a/changelogs/fragments/81954-dnf-keepcache.yml b/changelogs/fragments/81954-dnf-keepcache.yml new file mode 100644 index 00000000000..e661ff0cc2a --- /dev/null +++ b/changelogs/fragments/81954-dnf-keepcache.yml @@ -0,0 +1,2 @@ +bugfixes: + - "dnf - fix an issue when cached RPMs were left in the cache directory even when the keepcache setting was unset (https://github.com/ansible/ansible/issues/81954)" diff --git a/lib/ansible/modules/dnf.py b/lib/ansible/modules/dnf.py index 7f5afc3908e..50d0ca6e273 100644 --- a/lib/ansible/modules/dnf.py +++ b/lib/ansible/modules/dnf.py @@ -1441,8 +1441,10 @@ class DnfModule(YumDnf): if self.with_modules: self.module_base = dnf.module.module_base.ModuleBase(self.base) - - self.ensure() + try: + self.ensure() + finally: + self.base.close() def main(): diff --git a/test/integration/targets/dnf/tasks/dnf.yml b/test/integration/targets/dnf/tasks/dnf.yml index 9845f3db1f7..c5f01739dbb 100644 --- a/test/integration/targets/dnf/tasks/dnf.yml +++ b/test/integration/targets/dnf/tasks/dnf.yml @@ -67,6 +67,17 @@ update_cache: True register: dnf_result +- find: + paths: /var/cache/dnf + patterns: "*.rpm" + recurse: true + register: r + +- name: verify that RPM cache is cleared after installation as keepcache is off by default + assert: + that: + - r.matched == 0 + - name: check sos with rpm shell: rpm -q sos failed_when: False