Skip to content

Commit

Permalink
dnf - fix conf_file loading (#50515)
Browse files Browse the repository at this point in the history
  • Loading branch information
jborean93 authored and ansibot committed Jan 3, 2019
1 parent d21ed42 commit 63e454a
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 46 deletions.
2 changes: 2 additions & 0 deletions changelogs/fragments/dnf-conf-file.yaml
@@ -0,0 +1,2 @@
bugfixes:
- dnf - fix issue where ``conf_file`` was not being loaded properly
22 changes: 11 additions & 11 deletions lib/ansible/modules/packaging/os/dnf.py
Expand Up @@ -497,6 +497,17 @@ def _configure_base(self, base, conf_file, disable_gpg_check, installroot='/'):

conf = base.conf

# Change the configuration file path if provided, this must be done before conf.read() is called
if conf_file:
# Fail if we can't read the configuration file.
if not os.access(conf_file, os.R_OK):
self.module.fail_json(
msg="cannot read configuration file", conf_file=conf_file,
results=[],
)
else:
conf.config_file_path = conf_file

# Read the configuration file
conf.read()

Expand Down Expand Up @@ -545,17 +556,6 @@ def _configure_base(self, base, conf_file, disable_gpg_check, installroot='/'):
if self.download_only:
conf.downloadonly = True

# Change the configuration file path if provided
if conf_file:
# Fail if we can't read the configuration file.
if not os.access(conf_file, os.R_OK):
self.module.fail_json(
msg="cannot read configuration file", conf_file=conf_file,
results=[],
)
else:
conf.config_file_path = conf_file

# Default in dnf upstream is true
conf.clean_requirements_on_remove = self.autoremove

Expand Down
69 changes: 34 additions & 35 deletions test/integration/targets/dnf/tasks/dnf.yml
Expand Up @@ -627,41 +627,40 @@
that:
- "rpm_lsof_result is failed"

- name: exclude lsof
lineinfile:
dest: /etc/dnf/dnf.conf
regexp: (^exclude=)(.)*
line: "exclude=lsof*"
state: present

# begin test case where disable_excludes is supported
- name: Try install lsof without disable_excludes
dnf: name=lsof state=latest
register: dnf_lsof_result
ignore_errors: True

- name: verify lsof did not install because it is in exclude list
assert:
that:
- "dnf_lsof_result is failed"

- name: install lsof with disable_excludes
dnf: name=lsof state=latest disable_excludes=all
register: dnf_lsof_result_using_excludes

- name: verify lsof did install using disable_excludes=all
assert:
that:
- "dnf_lsof_result_using_excludes is success"
- "dnf_lsof_result_using_excludes is changed"
- "dnf_lsof_result_using_excludes is not failed"

- name: remove exclude lsof (cleanup dnf.conf)
lineinfile:
dest: /etc/dnf/dnf.conf
regexp: (^exclude=lsof*)
line: "exclude="
state: present
- name: create conf file that excludes lsof
copy:
content: |
[main]
exclude=lsof*
dest: '{{ output_dir }}/test-dnf.conf'
register: test_dnf_copy

- block:
# begin test case where disable_excludes is supported
- name: Try install lsof without disable_excludes
dnf: name=lsof state=latest conf_file={{ test_dnf_copy.dest }}
register: dnf_lsof_result
ignore_errors: True

- name: verify lsof did not install because it is in exclude list
assert:
that:
- "dnf_lsof_result is failed"

- name: install lsof with disable_excludes
dnf: name=lsof state=latest disable_excludes=all conf_file={{ test_dnf_copy.dest }}
register: dnf_lsof_result_using_excludes

- name: verify lsof did install using disable_excludes=all
assert:
that:
- "dnf_lsof_result_using_excludes is success"
- "dnf_lsof_result_using_excludes is changed"
- "dnf_lsof_result_using_excludes is not failed"
always:
- name: remove exclude lsof conf file
file:
path: '{{ output_dir }}/test-dnf.conf'
state: absent

# end test case where disable_excludes is supported

0 comments on commit 63e454a

Please sign in to comment.