blob: 2b2ac94e57ae10563f5b5a31cf86ae7f7967c3c0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
- shell: '{{ ansible_python.executable }} -c "import tempfile; print(tempfile.mkstemp()[1])"'
register: tempfilepath
- set_fact:
until_tempfile_path: "{{ tempfilepath.stdout }}"
- name: loop with default retries
shell: echo "run" >> {{ until_tempfile_path }} && wc -w < {{ until_tempfile_path }} | tr -d ' '
register: runcount
until: runcount.stdout | int == 3
delay: 0.01
- assert:
that: runcount.stdout | int == 3
- file: path="{{ until_tempfile_path }}" state=absent
- name: loop with specified max retries
shell: echo "run" >> {{ until_tempfile_path }}
until: 1==0
retries: 5
delay: 0.01
ignore_errors: true
- name: validate output
shell: wc -l < {{ until_tempfile_path }}
register: runcount
- assert:
that: runcount.stdout | int == 6 # initial + 5 retries
- file:
path: "{{ until_tempfile_path }}"
state: absent
- name: Test failed_when impacting until
shell: 'true'
register: failed_when_until
failed_when: True
until: failed_when_until is successful
retries: 3
delay: 0.5
ignore_errors: True
- assert:
that:
- failed_when_until.attempts == 3
- name: Test changed_when impacting until
shell: 'true'
register: changed_when_until
changed_when: False
until: changed_when_until is changed
retries: 3
delay: 0.5
ignore_errors: True
- assert:
that:
- changed_when_until.attempts == 3
# This task shouldn't fail, previously .attempts was not available to changed_when/failed_when
# and would cause the conditional to fail due to ``'dict object' has no attribute 'attempts'``
# https://github.com/ansible/ansible/issues/34139
- name: Test access to attempts in changed_when/failed_when
shell: 'true'
register: changed_when_attempts
until: 1 == 0
retries: 5
delay: 0.5
failed_when: changed_when_attempts.attempts > 6
# Test until on module that doesn't return failed, but does return rc
- name: create counter file
copy:
dest: "{{ output_dir }}/until_counter"
content: 3
- shell_no_failed:
cmd: |
COUNTER=$(cat "{{ output_dir }}/until_counter"); NEW=$(expr $COUNTER - 1); echo $NEW > "{{ output_dir }}/until_counter"; exit $COUNTER
register: counter
delay: 0.5
until: counter.rc == 0
|