mirror of
https://github.com/ansible/ansible.git
synced 2026-08-03 00:22:10 +02:00
csvfile lookup - fix giving an error when no search term is provided (#83710)
Fixes #83689
This commit is contained in:
@@ -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
|
||||
- >
|
||||
|
||||
Reference in New Issue
Block a user