Fixes #49362 module dnf: install python3-dnf preferably over python2-dnf. (#49402)

* Create python3and2

Adding tests to see if dnf still works when python-2 and python-3 are installed.

* Update main.yml

Include the tests that run on python 2 and python 3, based on the package manager.

* Update dnf.py

Use python3-dnf by default, otherwise python2-dnf.

* Rename python3and2 to python3and2.yml

Rename.
This commit is contained in:
Robert de Bock 2018-12-04 22:43:45 +01:00 committed by ansibot
parent 345b6cdec8
commit 3247eec97a
3 changed files with 51 additions and 3 deletions

View file

@ -464,10 +464,10 @@ class DnfModule(YumDnf):
def _ensure_dnf(self):
if not HAS_DNF:
if PY2:
package = 'python2-dnf'
else:
if not PY2:
package = 'python3-dnf'
else:
package = 'python2-dnf'
if self.module.check_mode:
self.module.fail_json(

View file

@ -43,3 +43,7 @@
when:
- ansible_distribution == 'Fedora' and ansible_distribution_major_version|int >= 29
- ansible_distribution == 'RedHat' and ansible_distribution_major_version|int >= 8
- include: 'python3and2.yml'
when:
- ansible_pkg_mgr == 'dnf'

View file

@ -0,0 +1,44 @@
# INSTALLPYTHON3AND2
# The module `dnf` installs python3-dnf on python3 systems and python2-dnf
# on python2 systems. Fedora 30 and newer have python3 and limited
# support for python2, for example python2-dnf is missing.
# This test proves that python3 and python2 can be installed and the module
# `dnf` works.
- name: install python2
dnf:
name: python2
state: present
- name: use python2
set_fact:
ansible_python_interpreter: /usr/bin/python
- name: install a sample package
dnf:
name: screen
state: present
- name: clean up sample package
dnf:
name: screen
state: absent
- name: install python3
dnf:
name: python3
state: present
- name: use python3
set_fact:
ansible_python_interpreter: /usr/bin/python3
- name: install a sample package
dnf:
name: screen
state: present
- name: clean up sample package
dnf:
name: screen
state: absent