Skip to content

Commit

Permalink
Do not cache the loop item label so that it will update with each item
Browse files Browse the repository at this point in the history
Add integration test for ansible#36430 (ansible#36432)

(cherry picked from commit d1f7693)
(cherry picked from commit 9fced4f)
  • Loading branch information
nitzmahone committed Feb 22, 2018
1 parent f8d8d84 commit 9d58b38
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/ansible/executor/task_executor.py
Expand Up @@ -332,7 +332,7 @@ def _run_loop(self, items):
res['_ansible_ignore_errors'] = task_fields.get('ignore_errors')

if label is not None:
res['_ansible_item_label'] = templar.template(label)
res['_ansible_item_label'] = templar.template(label, cache=False)

self._rslt_q.put(
TaskResult(
Expand Down
26 changes: 26 additions & 0 deletions test/integration/targets/loops/tasks/main.yml
Expand Up @@ -176,3 +176,29 @@
with_sequence: start=0 count=3
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'"

0 comments on commit 9d58b38

Please sign in to comment.