Skip to content

Commit

Permalink
[PR #6522/bd6cec21 backport][stable-7] respawn copr module when dnf i…
Browse files Browse the repository at this point in the history
…s missing (#6591)

respawn copr module when dnf is missing (#6522)

* respawn copr module when dnf is missing

Fixes: https://bugzilla.redhat.com/2203513

* don't guard common.respawn module_util import

(cherry picked from commit bd6cec2)

Co-authored-by: Maxwell G <[email protected]>
  • Loading branch information
patchback[bot] and gotmax23 authored May 29, 2023
1 parent 91bfdbd commit b49aeab
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 6 deletions.
4 changes: 4 additions & 0 deletions changelogs/fragments/6522-copr-respawn.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
minor_changes:
- "copr - respawn module to use the system python interpreter when the ``dnf`` python module is not available in ``ansible_python_interpreter``
(https://github.com/ansible-collections/community.general/pull/6522)."
16 changes: 16 additions & 0 deletions plugins/modules/copr.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,13 +97,28 @@
DNF_IMP_ERR = traceback.format_exc()
HAS_DNF_PACKAGES = False

from ansible.module_utils.common import respawn
from ansible.module_utils.six.moves.urllib.error import HTTPError
from ansible.module_utils.basic import missing_required_lib
from ansible.module_utils import distro # pylint: disable=import-error
from ansible.module_utils.basic import AnsibleModule # pylint: disable=import-error
from ansible.module_utils.urls import open_url # pylint: disable=import-error


def _respawn_dnf():
if respawn.has_respawned():
return
system_interpreters = (
"/usr/libexec/platform-python",
"/usr/bin/python3",
"/usr/bin/python2",
"/usr/bin/python",
)
interpreter = respawn.probe_interpreters_for_module(system_interpreters, "dnf")
if interpreter:
respawn.respawn_module(interpreter)


class CoprModule(object):
"""The class represents a copr module.
Expand Down Expand Up @@ -460,6 +475,7 @@ def run_module():
params = module.params

if not HAS_DNF_PACKAGES:
_respawn_dnf()
module.fail_json(msg=missing_required_lib("dnf"), exception=DNF_IMP_ERR)

CoprModule.ansible_module = module
Expand Down
6 changes: 0 additions & 6 deletions tests/integration/targets/copr/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,6 @@
ansible_distribution == 'Fedora'
or (ansible_os_family == 'RedHat' and ansible_distribution != 'Fedora'
and ansible_distribution_major_version | int >= 8)
# The copr module imports dnf which is only available for the system Python
# interpreter.
- >
not (ansible_distribution == 'CentOS' and
ansible_distribution_major_version | int == 8 and not
ansible_python_version.startswith('3.6'))
block:
- debug: var=copr_chroot
- name: enable copr project
Expand Down

0 comments on commit b49aeab

Please sign in to comment.