fix order of dnf api operations so transactions don't fail (#50038)

* fix order of dnf api operations so transactions don't fail

Previously dnf.base.fill_sack() was called before
dnf.base.update_cache() which apparently breaks dnf transaction
logic as per https://bugzilla.redhat.com/show_bug.cgi?id=1658694

Fixes #49060

Signed-off-by: Adam Miller <admiller@redhat.com>

* add changelog and test case

Signed-off-by: Adam Miller <admiller@redhat.com>
(cherry picked from commit ca084889c7)
This commit is contained in:
Adam Miller 2019-01-02 16:50:06 -06:00 committed by Toshio Kuratomi
parent aeb9b9d37f
commit 853d464ed1
3 changed files with 13 additions and 2 deletions

View file

@ -0,0 +1,3 @@
---
bugfixes:
- "dnf - fix update_cache combined with install operation to not cause dnf transaction failure"

View file

@ -579,6 +579,15 @@ class DnfModule(YumDnf):
except AttributeError:
pass # older versions of dnf didn't require this and don't have these methods
try:
if self.update_cache:
try:
base.update_cache()
except dnf.exceptions.RepoError as e:
self.module.fail_json(
msg="{0}".format(to_text(e)),
results=[],
rc=1
)
base.fill_sack(load_system_repo='auto')
except dnf.exceptions.RepoError as e:
self.module.fail_json(
@ -592,8 +601,6 @@ class DnfModule(YumDnf):
if self.security:
key = {'advisory_type__eq': 'security'}
base._update_security_filters = [base.sack.query().filter(**key)]
if self.update_cache:
base.update_cache()
return base
def list_items(self, command):

View file

@ -50,6 +50,7 @@
dnf:
name: sos
state: present
update_cache: True
register: dnf_result
- name: check sos with rpm