csvfile lookup - fix giving an error when no search term is provided (#83710)

Fixes #83689
pull/78142/merge
Sloane Hertel 4 months ago committed by GitHub
parent 885e3766a8
commit 26c8a28d05
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -0,0 +1,2 @@
bugfixes:
- csvfile lookup - give an error when no search term is provided using modern config syntax (https://github.com/ansible/ansible/issues/83689).

@ -12,6 +12,7 @@ DOCUMENTATION = r"""
- The csvfile lookup reads the contents of a file in CSV (comma-separated value) format.
The lookup looks for the row where the first column matches keyname (which can be multiple words)
and returns the value in the O(col) column (default 1, which indexed from 0 means the second column in the file).
- At least one keyname is required, provided as a positional argument(s) to the lookup.
options:
col:
description: column to return (0 indexed).
@ -75,6 +76,22 @@ EXAMPLES = """
assert:
that:
- lookup('ansible.builtin.csvfile', 'Jane', file='people.csv', delimiter=',', col=0, keycol=1) == "Smith"
# Contents of debug.csv
# test1 ret1.1 ret2.1
# test2 ret1.2 ret2.2
# test3 ret1.3 ret2.3
- name: "Lookup multiple keynames in the first column (index 0), returning the values from the second column (index 1)"
debug:
msg: "{{ lookup('csvfile', 'test1', 'test2', file='debug.csv', delimiter=' ') }}"
- name: Lookup multiple keynames using old style syntax
debug:
msg: "{{ lookup('csvfile', term1, term2) }}"
vars:
term1: "test1 file=debug.csv delimiter=' '"
term2: "test2 file=debug.csv delimiter=' '"
"""
RETURN = """
@ -162,6 +179,9 @@ class LookupModule(LookupBase):
# populate options
paramvals = self.get_options()
if not terms:
raise AnsibleError('Search key is required but was not found')
for term in terms:
kv = parse_kv(term)

@ -4,6 +4,12 @@
ignore_errors: yes
register: no_keyword
- name: using modern syntax but missing keyword
set_fact:
this_will_error: "{{ lookup('csvfile', file=people.csv, delimiter=' ', col=1) }}"
ignore_errors: yes
register: modern_no_keyword
- name: extra arg in k=v syntax (deprecated)
set_fact:
this_will_error: "{{ lookup('csvfile', 'foo file=people.csv delimiter=, col=1 thisarg=doesnotexist') }}"
@ -27,6 +33,9 @@
- no_keyword is failed
- >
"Search key is required but was not found" in no_keyword.msg
- modern_no_keyword is failed
- >
"Search key is required but was not found" in modern_no_keyword.msg
- invalid_arg is failed
- invalid_arg2 is failed
- >

Loading…
Cancel
Save