Skip to content

Commit

Permalink
dig: Fix evaluation of boolean parameters (#5129)
Browse files Browse the repository at this point in the history
* Add lookup_dig tests

* Fix boolean evaluation

* Add changelog fragment

* Apply review changes

* Add license
  • Loading branch information
mu1f407 committed Aug 20, 2022
1 parent 98ea278 commit 3c2d7eb
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 2 deletions.
2 changes: 2 additions & 0 deletions changelogs/fragments/5129-dig-boolean-params-fix.yml
@@ -0,0 +1,2 @@
bugfixes:
- dig lookup plugin - fix evaluation of falsy values for boolean parameters ``fail_on_error`` and ``retry_servfail`` (https://github.com/ansible-collections/community.general/pull/5129).
5 changes: 3 additions & 2 deletions plugins/lookup/dig.py
Expand Up @@ -172,6 +172,7 @@
from ansible.errors import AnsibleError
from ansible.plugins.lookup import LookupBase
from ansible.module_utils.common.text.converters import to_native
from ansible.module_utils.parsing.convert_bool import boolean
from ansible.utils.display import Display
import socket

Expand Down Expand Up @@ -321,9 +322,9 @@ def run(self, terms, variables=None, **kwargs):
except Exception as e:
raise AnsibleError("dns lookup illegal CLASS: %s" % to_native(e))
elif opt == 'retry_servfail':
myres.retry_servfail = bool(arg)
myres.retry_servfail = boolean(arg)
elif opt == 'fail_on_error':
fail_on_error = bool(arg)
fail_on_error = boolean(arg)

continue

Expand Down
6 changes: 6 additions & 0 deletions tests/integration/targets/lookup_dig/aliases
@@ -0,0 +1,6 @@
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later

shippable/posix/group1
skip/python2.6 # lookups are controller only, and we no longer support Python 2.6 on the controller
7 changes: 7 additions & 0 deletions tests/integration/targets/lookup_dig/meta/main.yml
@@ -0,0 +1,7 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later

dependencies:
- setup_remote_constraints
37 changes: 37 additions & 0 deletions tests/integration/targets/lookup_dig/tasks/main.yml
@@ -0,0 +1,37 @@
---
####################################################################
# WARNING: These are designed specifically for Ansible tests #
# and should not be used as examples of how to write Ansible roles #
####################################################################

# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later

- name: Install dnspython library
pip:
name: dnspython
state: present
extra_args: "-c {{ remote_constraints }}"

- name: Test dig lookup with existing domain
set_fact:
dig_existing: "{{ lookup('community.general.dig', 'github.com.') }}"

- name: Test dig lookup with non-existing domain and fail_on_error=no
set_fact:
dig_nonexisting_fail_no: "{{ lookup('community.general.dig', 'non-existing.domain.', 'fail_on_error=no') }}"

- name: Verify that NXDOMAIN was returned
assert:
that: dig_nonexisting_fail_no == 'NXDOMAIN'

- name: Test dig lookup with non-existing domain and fail_on_error=yes
set_fact:
dig_nonexisting_fail_yes: "{{ lookup('community.general.dig', 'non-existing.domain.', 'fail_on_error=yes') }}"
ignore_errors: yes
register: dig_nonexisting_fail_yes_result

- name: Verify that the task failed
assert:
that: dig_nonexisting_fail_yes_result is failed

0 comments on commit 3c2d7eb

Please sign in to comment.