Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dnf - fix conf_file loading #50515

Merged
merged 1 commit into from Jan 3, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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