1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2026-03-22 05:09:12 +00:00

Specification of transformations solely as string

Signed-off-by: Fiehe Christoph  <c.fiehe@eurodata.de>
This commit is contained in:
Fiehe Christoph 2026-03-04 23:40:38 +01:00
parent 31fb8793d7
commit 34052a2de8
2 changed files with 6 additions and 26 deletions

View file

@ -115,22 +115,11 @@ options:
list_transformations:
description:
- List transformations applied to list types. The definition order corresponds to the order in which these transformations are applied.
- Elements can be a dict with the keys mentioned below or a string naming the transformation to apply.
type: list
elements: raw
suboptions:
name:
description:
- Name of the list transformation.
required: true
type: str
choices:
flatten: Flatten lists, converting nested lists into single lists.
dedup: Remove duplicates from lists.
options:
description:
- Options as key value pairs. V(flatten) and V(dedup) do not support any additional options.
type: dict
elements: str
choices:
- flatten
- dedup
default: []
version_added: 12.5.0
"""
@ -356,16 +345,7 @@ class LookupModule(LookupBase):
builder.with_type_strategy(dict, DictMergeStrategies.from_name(self._dict_merge))
for transformation in self._list_transformations:
if isinstance(transformation, str):
builder.with_transformation(list, ListTransformations.from_name(transformation))
elif isinstance(transformation, dict):
name = transformation["name"]
options = transformation.get("options", {})
builder.with_transformation(list, ListTransformations.from_name(name, **options))
else:
raise AnsibleError(
f"Transformations must be specified through values of type 'str' or 'dict', but a value of type '{type(transformation)}' was given."
)
builder.with_transformation(list, ListTransformations.from_name(transformation))
merger = builder.build()

View file

@ -732,7 +732,7 @@ class TestMergeVariablesLookup(unittest.TestCase):
@patch.object(
AnsiblePlugin,
"get_option",
side_effect=[None, "ignore", "suffix", None, "deep", "append", "replace", "replace", [{"name": "dedup"}]],
side_effect=[None, "ignore", "suffix", None, "deep", "append", "replace", "replace", ["dedup"]],
)
@patch.object(
Templar, "template", side_effect=[deepcopy(merge_hash_data["low_prio"]), deepcopy(merge_hash_data["high_prio"])]