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:
parent
98ea27847f
commit
3c2d7eb193
5 changed files with 55 additions and 2 deletions
2
changelogs/fragments/5129-dig-boolean-params-fix.yml
Normal file
2
changelogs/fragments/5129-dig-boolean-params-fix.yml
Normal 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).
|
|
@ -172,6 +172,7 @@ RETURN = """
|
||||||
from ansible.errors import AnsibleError
|
from ansible.errors import AnsibleError
|
||||||
from ansible.plugins.lookup import LookupBase
|
from ansible.plugins.lookup import LookupBase
|
||||||
from ansible.module_utils.common.text.converters import to_native
|
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
|
from ansible.utils.display import Display
|
||||||
import socket
|
import socket
|
||||||
|
|
||||||
|
@ -321,9 +322,9 @@ class LookupModule(LookupBase):
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise AnsibleError("dns lookup illegal CLASS: %s" % to_native(e))
|
raise AnsibleError("dns lookup illegal CLASS: %s" % to_native(e))
|
||||||
elif opt == 'retry_servfail':
|
elif opt == 'retry_servfail':
|
||||||
myres.retry_servfail = bool(arg)
|
myres.retry_servfail = boolean(arg)
|
||||||
elif opt == 'fail_on_error':
|
elif opt == 'fail_on_error':
|
||||||
fail_on_error = bool(arg)
|
fail_on_error = boolean(arg)
|
||||||
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|
6
tests/integration/targets/lookup_dig/aliases
Normal file
6
tests/integration/targets/lookup_dig/aliases
Normal 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
|
7
tests/integration/targets/lookup_dig/meta/main.yml
Normal file
7
tests/integration/targets/lookup_dig/meta/main.yml
Normal 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
|
37
tests/integration/targets/lookup_dig/tasks/main.yml
Normal file
37
tests/integration/targets/lookup_dig/tasks/main.yml
Normal 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
|
Loading…
Reference in a new issue