mirror of https://github.com/ansible/ansible.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
256 lines
5.9 KiB
YAML
256 lines
5.9 KiB
YAML
11 years ago
|
# test code for iterating with lookup plugins
|
||
|
# (c) 2014, James Tanner <tanner.jc@gmail.com>
|
||
|
|
||
|
# This file is part of Ansible
|
||
|
#
|
||
|
# Ansible is free software: you can redistribute it and/or modify
|
||
|
# it under the terms of the GNU General Public License as published by
|
||
|
# the Free Software Foundation, either version 3 of the License, or
|
||
|
# (at your option) any later version.
|
||
|
#
|
||
|
# Ansible is distributed in the hope that it will be useful,
|
||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
# GNU General Public License for more details.
|
||
|
#
|
||
|
# You should have received a copy of the GNU General Public License
|
||
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||
|
|
||
|
# WITH_ITEMS
|
||
|
|
||
|
- name: test with_items
|
||
11 years ago
|
set_fact: "{{ item }}=moo"
|
||
11 years ago
|
with_items:
|
||
|
- 'foo'
|
||
|
- 'bar'
|
||
|
|
||
|
- debug: var=foo
|
||
|
- debug: var=bar
|
||
|
|
||
|
- name: verify with_items results
|
||
|
assert:
|
||
|
that:
|
||
|
- "foo == 'moo'"
|
||
|
- "bar == 'moo'"
|
||
|
|
||
|
# WITH_NESTED
|
||
|
|
||
|
- name: test with_nested
|
||
11 years ago
|
set_fact: "{{ item.0 + item.1 }}=x"
|
||
11 years ago
|
with_nested:
|
||
|
- [ 'a', 'b' ]
|
||
10 years ago
|
- [ 'c', 'd' ]
|
||
11 years ago
|
|
||
|
- debug: var=ac
|
||
|
- debug: var=ad
|
||
|
- debug: var=bc
|
||
|
- debug: var=bd
|
||
|
|
||
|
- name: verify with_nested results
|
||
|
assert:
|
||
|
that:
|
||
|
- "ac == 'x'"
|
||
|
- "ad == 'x'"
|
||
|
- "bc == 'x'"
|
||
|
- "bd == 'x'"
|
||
|
|
||
|
# WITH_SEQUENCE
|
||
|
|
||
|
- name: test with_sequence
|
||
11 years ago
|
set_fact: "{{ 'x' + item }}={{ item }}"
|
||
11 years ago
|
with_sequence: start=0 end=3
|
||
|
|
||
10 years ago
|
- name: test with_sequence backwards
|
||
|
set_fact: "{{ 'y' + item }}={{ item }}"
|
||
|
with_sequence: start=3 end=0 stride=-1
|
||
|
|
||
11 years ago
|
- name: verify with_sequence
|
||
|
assert:
|
||
|
that:
|
||
|
- "x0 == '0'"
|
||
|
- "x1 == '1'"
|
||
|
- "x2 == '2'"
|
||
|
- "x3 == '3'"
|
||
10 years ago
|
- "y3 == '3'"
|
||
|
- "y2 == '2'"
|
||
|
- "y1 == '1'"
|
||
|
- "y0 == '0'"
|
||
|
|
||
|
- name: test with_sequence not failing on count == 0
|
||
|
debug: msg='previously failed with backward counting error'
|
||
|
with_sequence: count=0
|
||
|
register: count_of_zero
|
||
|
|
||
9 years ago
|
- name: test with_sequence does 1 when start == end
|
||
|
debug: msg='should run once'
|
||
|
with_sequence: start=1 end=1
|
||
|
register: start_equal_end
|
||
|
|
||
10 years ago
|
- name: test with_sequence count 1
|
||
|
set_fact: "{{ 'x' + item }}={{ item }}"
|
||
|
with_sequence: count=1
|
||
|
register: count_of_one
|
||
|
|
||
10 years ago
|
- assert:
|
||
|
that:
|
||
9 years ago
|
- not start_equal_end| skipped
|
||
10 years ago
|
- count_of_zero | skipped
|
||
10 years ago
|
- not count_of_one | skipped
|
||
11 years ago
|
|
||
|
# WITH_RANDOM_CHOICE
|
||
|
|
||
|
- name: test with_random_choice
|
||
11 years ago
|
set_fact: "random={{ item }}"
|
||
11 years ago
|
with_random_choice:
|
||
|
- "foo"
|
||
9 years ago
|
- "bar"
|
||
11 years ago
|
|
||
|
- name: verify with_random_choice
|
||
|
assert:
|
||
|
that:
|
||
|
- "random in ['foo', 'bar']"
|
||
|
|
||
|
# WITH_SUBELEMENTS
|
||
|
|
||
|
- name: test with_subelements
|
||
11 years ago
|
set_fact: "{{ '_'+ item.0.id + item.1 }}={{ item.1 }}"
|
||
11 years ago
|
with_subelements:
|
||
8 years ago
|
- "{{element_data}}"
|
||
11 years ago
|
- the_list
|
||
|
|
||
|
- name: verify with_subelements results
|
||
|
assert:
|
||
|
that:
|
||
|
- "_xf == 'f'"
|
||
|
- "_xd == 'd'"
|
||
|
- "_ye == 'e'"
|
||
|
- "_yf == 'f'"
|
||
|
|
||
10 years ago
|
- name: test with_subelements in subkeys
|
||
|
set_fact: "{{ '_'+ item.0.id + item.1 }}={{ item.1 }}"
|
||
|
with_subelements:
|
||
8 years ago
|
- "{{element_data}}"
|
||
10 years ago
|
- the.sub.key.list
|
||
|
|
||
|
- name: verify with_subelements in subkeys results
|
||
|
assert:
|
||
|
that:
|
||
|
- "_xq == 'q'"
|
||
|
- "_xr == 'r'"
|
||
|
- "_yi == 'i'"
|
||
|
- "_yo == 'o'"
|
||
|
|
||
|
- name: test with_subelements with missing key or subkey
|
||
|
set_fact: "{{ '_'+ item.0.id + item.1 }}={{ item.1 }}"
|
||
|
with_subelements:
|
||
8 years ago
|
- "{{element_data_missing}}"
|
||
10 years ago
|
- the.sub.key.list
|
||
|
- skip_missing: yes
|
||
|
register: _subelements_missing_subkeys
|
||
|
|
||
10 years ago
|
- debug: var=_subelements_missing_subkeys
|
||
10 years ago
|
- debug: var=_subelements_missing_subkeys.results|length
|
||
|
- name: verify with_subelements in subkeys results
|
||
|
assert:
|
||
|
that:
|
||
|
- _subelements_missing_subkeys.skipped is not defined
|
||
|
- _subelements_missing_subkeys.results|length == 2
|
||
|
- "_xk == 'k'"
|
||
|
- "_xl == 'l'"
|
||
|
|
||
|
|
||
11 years ago
|
# WITH_TOGETHER
|
||
|
|
||
|
- name: test with_together
|
||
|
#shell: echo {{ item }}
|
||
11 years ago
|
set_fact: "{{ item.0 }}={{ item.1 }}"
|
||
11 years ago
|
with_together:
|
||
|
- [ 'a', 'b', 'c', 'd' ]
|
||
|
- [ '1', '2', '3', '4' ]
|
||
|
|
||
|
- name: verify with_together results
|
||
|
assert:
|
||
|
that:
|
||
|
- "a == '1'"
|
||
|
- "b == '2'"
|
||
|
- "c == '3'"
|
||
|
- "d == '4'"
|
||
|
|
||
|
# WITH_FIRST_FOUND
|
||
|
|
||
|
- name: create file for test
|
||
|
shell: echo "foo" > {{ output_dir }}/foo1
|
||
|
|
||
|
- name: create file for test
|
||
|
shell: echo "bar" > {{ output_dir }}/bar1
|
||
|
|
||
|
- name: test with_first_found
|
||
|
#shell: echo {{ item }}
|
||
11 years ago
|
set_fact: "first_found={{ item }}"
|
||
11 years ago
|
with_first_found:
|
||
|
- "{{ output_dir + '/does_not_exist' }}"
|
||
|
- "{{ output_dir + '/foo1' }}"
|
||
|
- "{{ output_dir + '/bar1' }}"
|
||
|
|
||
|
- name: set expected
|
||
|
set_fact: first_expected="{{ output_dir | expanduser + '/foo1' }}"
|
||
|
|
||
|
- name: set unexpected
|
||
|
set_fact: first_unexpected="{{ output_dir | expanduser + '/bar1' }}"
|
||
|
|
||
|
- name: verify with_first_found results
|
||
|
assert:
|
||
|
that:
|
||
|
- "first_found == first_expected"
|
||
|
- "first_found != first_unexpected"
|
||
|
|
||
|
# WITH_LINES
|
||
|
|
||
|
- name: test with_lines
|
||
|
#shell: echo "{{ item }}"
|
||
11 years ago
|
set_fact: "{{ item }}=set"
|
||
11 years ago
|
with_lines: for i in $(seq 1 5); do echo "l$i" ; done;
|
||
|
|
||
|
- name: verify with_lines results
|
||
|
assert:
|
||
|
that:
|
||
|
- "l1 == 'set'"
|
||
|
- "l2 == 'set'"
|
||
|
- "l3 == 'set'"
|
||
|
- "l4 == 'set'"
|
||
|
- "l5 == 'set'"
|
||
|
|
||
|
# WITH_INDEX
|
||
|
- name: create unindexed list
|
||
|
shell: for i in $(seq 1 5); do echo "x" ; done;
|
||
|
register: list_data
|
||
|
|
||
|
- name: create indexed list
|
||
11 years ago
|
set_fact: "{{ item[1] + item[0]|string }}=set"
|
||
8 years ago
|
with_indexed_items: "{{list_data.stdout_lines}}"
|
||
11 years ago
|
|
||
|
- name: verify with_indexed_items result
|
||
|
assert:
|
||
|
that:
|
||
|
- "x0 == 'set'"
|
||
|
- "x1 == 'set'"
|
||
|
- "x2 == 'set'"
|
||
|
- "x3 == 'set'"
|
||
|
- "x4 == 'set'"
|
||
|
|
||
|
# WITH_FLATTENED
|
||
|
|
||
|
- name: test with_flattened
|
||
11 years ago
|
set_fact: "{{ item }}=flattened"
|
||
11 years ago
|
with_flattened:
|
||
|
- [ 'a__' ]
|
||
|
- [ 'b__', ['c__', 'd__'] ]
|
||
|
|
||
|
- name: verify with_flattened results
|
||
|
assert:
|
||
|
that:
|
||
|
- "a__ == 'flattened'"
|
||
|
- "b__ == 'flattened'"
|
||
|
- "c__ == 'flattened'"
|
||
|
- "d__ == 'flattened'"
|