1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

dig: Fix evaluation of boolean parameters (#5129)

* Add lookup_dig tests

* Fix boolean evaluation

* Add changelog fragment

* Apply review changes

* Add license
This commit is contained in:
Michal Hybner 2022-08-20 14:31:15 +02:00 committed by GitHub
parent 98ea27847f
commit 3c2d7eb193
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 55 additions and 2 deletions

View file

@ -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).

View file

@ -172,6 +172,7 @@ RETURN = """
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
@ -321,9 +322,9 @@ class LookupModule(LookupBase):
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

View file

@ -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

View file

@ -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

View file

@ -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