fixes for stripping (#52930)

function changed to do in place replacement, should be less expensive even with copy as it avoids 'sub copies', can compose with module_args_copy to create replacement for old behavior

  attempt to fix #52910

* handle lists and subdicts correctly
* added  missing exception case, which was not noticed since 'cleaning' was not working
* added comments to clarify exceptions
This commit is contained in:
Brian Coca
2019-03-12 18:18:38 -04:00
committed by GitHub
parent 7a387e216e
commit b793f08a92
11 changed files with 83 additions and 47 deletions

View File

@@ -5,7 +5,8 @@ set -eux
ANSIBLE_SSH_ARGS='-C -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null' \
ANSIBLE_HOST_KEY_CHECKING=false ansible-playbook test_delegate_to.yml -i inventory -v "$@"
ansible-playbook test_loop_control.yml -v "$@"
# this test is not doing what it says it does, also relies on var that should not be available
#ansible-playbook test_loop_control.yml -v "$@"
ansible-playbook test_delegate_to_loop_randomness.yml -v "$@"

View File

@@ -0,0 +1 @@
shippable/posix/group2

View File

@@ -0,0 +1,23 @@
- name: loop_control/label https://github.com/ansible/ansible/pull/36430
hosts: localhost
gather_facts: false
tasks:
- set_fact:
loopthis:
- name: foo
label: foo_label
- name: bar
label: bar_label
- name: check that item label is updated each iteration
debug:
msg: "{{ looped_var.name }}"
with_items: "{{ loopthis }}"
loop_control:
loop_var: looped_var
label: "looped_var {{ looped_var.label }}"
#
# - assert:
# that:
# - "output.results[0]['_ansible_item_label'] == 'looped_var foo_label'"
# - "output.results[1]['_ansible_item_label'] == 'looped_var bar_label'"

View File

@@ -0,0 +1,11 @@
#!/usr/bin/env bash
set -eux
# user output has:
#ok: [localhost] => (item=looped_var foo_label) => {
#ok: [localhost] => (item=looped_var bar_label) => {
MATCH='foo_label
bar_label'
[ "$(ansible-playbook label.yml "$@" |grep 'item='|sed -e 's/^.*(item=looped_var \(.*\)).*$/\1/')" == "${MATCH}" ]

View File

@@ -196,31 +196,6 @@
loop_control:
index_var: my_idx
#
# loop_control/label
# https://github.com/ansible/ansible/pull/36430
#
- set_fact:
loopthis:
- name: foo
label: foo_label
- name: bar
label: bar_label
- name: check that item label is updated each iteration
debug:
msg: "{{ looped_var.name }}"
with_items: "{{ loopthis }}"
loop_control:
loop_var: looped_var
label: "looped_var {{ looped_var.label }}"
register: output
- assert:
that:
- "output.results[0]['_ansible_item_label'] == 'looped_var foo_label'"
- "output.results[1]['_ansible_item_label'] == 'looped_var bar_label'"
# The following test cases are to ensure that we don't have a regression on
# GitHub Issue https://github.com/ansible/ansible/issues/35481