mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Add from_yaml_all to support multi document yaml strings (#43037)
* Support multi-doc yaml in the from_yaml filter * Most automatic method of handling multidoc * Only use safe_load_all * Implement separate filter * Update plugin docs and changelog
This commit is contained in:
parent
19dc267e4c
commit
d27de6acd9
3 changed files with 28 additions and 0 deletions
5
changelogs/fragments/from_yaml_all_filter_plugin.yaml
Normal file
5
changelogs/fragments/from_yaml_all_filter_plugin.yaml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
minor_changes:
|
||||
- Added the from_yaml_all filter to parse multi-document yaml strings.
|
||||
Refer to the appropriate entry which as been added to user_guide
|
||||
playbooks_filters.rst document.
|
|
@ -47,6 +47,22 @@ for example::
|
|||
- set_fact:
|
||||
myvar: "{{ result.stdout | from_json }}"
|
||||
|
||||
|
||||
.. versionadded:: 2.7
|
||||
|
||||
To parse multi-document yaml strings, the ``from_yaml_all`` filter is provided.
|
||||
The ``from_yaml_all`` filter will return a generator of parsed yaml documents.
|
||||
|
||||
for example::
|
||||
|
||||
tasks:
|
||||
- shell: cat /some/path/to/multidoc-file.yaml
|
||||
register: result
|
||||
- debug:
|
||||
msg: '{{ item }}'
|
||||
loop: '{{ result.stdout | from_yaml_all | list }}'
|
||||
|
||||
|
||||
.. _forcing_variables_to_be_defined:
|
||||
|
||||
Forcing Variables To Be Defined
|
||||
|
|
|
@ -210,6 +210,12 @@ def from_yaml(data):
|
|||
return data
|
||||
|
||||
|
||||
def from_yaml_all(data):
|
||||
if isinstance(data, string_types):
|
||||
return yaml.safe_load_all(data)
|
||||
return data
|
||||
|
||||
|
||||
@environmentfilter
|
||||
def rand(environment, end, start=None, step=None, seed=None):
|
||||
if seed is None:
|
||||
|
@ -600,6 +606,7 @@ class FilterModule(object):
|
|||
'to_yaml': to_yaml,
|
||||
'to_nice_yaml': to_nice_yaml,
|
||||
'from_yaml': from_yaml,
|
||||
'from_yaml_all': from_yaml_all,
|
||||
|
||||
# path
|
||||
'basename': partial(unicode_wrap, os.path.basename),
|
||||
|
|
Loading…
Reference in a new issue