From 77ab7afc3d61ddd936b73a53bb580bfa9fb22308 Mon Sep 17 00:00:00 2001 From: Martin Krizek Date: Tue, 27 Feb 2024 15:22:56 +0100 Subject: [PATCH] dnf: obey the keepcache setting (#82735) Fixes #81954 --- 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 2cad9bfb4d3..28877986cc2 100644 --- a/lib/ansible/modules/dnf.py +++ b/lib/ansible/modules/dnf.py @@ -1438,8 +1438,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 362ad367e25..4110d4b80c2 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