diff options
author | Toshio Kuratomi <a.badger@gmail.com> | 2018-02-21 08:25:56 -0800 |
---|---|---|
committer | Toshio Kuratomi <a.badger@gmail.com> | 2018-02-21 11:03:55 -0800 |
commit | 7f9fdbbb30647c4482b56b17381c16c37008bf8b (patch) | |
tree | 3d497681df018eb34ae3b614a1a6dd3dee0620d0 | |
parent | 741b941f332d037a32bb70427865eeddc888ee0d (diff) | |
download | ansible-7f9fdbbb30647c4482b56b17381c16c37008bf8b.tar.gz |
Revert "remove query/q (#36315)"
This reverts commit b47d2e07e15a8a15307f146e0c12e70e5e4ca0cd.
query is a feature for 2.5. We're not reverting it now.
(cherry picked from commit 03a6d726330b29816f67b6d4f620a0bf0f89575f)
-rw-r--r-- | lib/ansible/template/__init__.py | 8 | ||||
-rw-r--r-- | test/integration/targets/lookups/tasks/main.yml | 2 | ||||
-rw-r--r-- | test/integration/targets/loops/tasks/main.yml | 48 |
3 files changed, 56 insertions, 2 deletions
diff --git a/lib/ansible/template/__init__.py b/lib/ansible/template/__init__.py index c91eb0ccb7..4cd9ee8b3f 100644 --- a/lib/ansible/template/__init__.py +++ b/lib/ansible/template/__init__.py @@ -604,6 +604,11 @@ class Templar: def _fail_lookup(self, name, *args, **kwargs): raise AnsibleError("The lookup `%s` was found, however lookups were disabled from templating" % name) + def _query_lookup(self, name, *args, **kwargs): + ''' wrapper for lookup, force wantlist true''' + kwargs['wantlist'] = True + return self._lookup(name, *args, **kwargs) + def _lookup(self, name, *args, **kwargs): instance = self._lookup_loader.get(name.lower(), loader=self._loader, templar=self) @@ -694,9 +699,10 @@ class Templar: return data if disable_lookups: - t.globals['lookup'] = self._fail_lookup + t.globals['query'] = t.globals['q'] = t.globals['lookup'] = self._fail_lookup else: t.globals['lookup'] = self._lookup + t.globals['query'] = t.globals['q'] = self._query_lookup t.globals['finalize'] = self._finalize diff --git a/test/integration/targets/lookups/tasks/main.yml b/test/integration/targets/lookups/tasks/main.yml index 567f7dfcf9..f6a83392d0 100644 --- a/test/integration/targets/lookups/tasks/main.yml +++ b/test/integration/targets/lookups/tasks/main.yml @@ -299,7 +299,7 @@ - name: Test that we can give a list of values to var and receive a list of values back set_fact: - var_host_info: '{{ lookup("vars", "ansible_host", "ansible_user", wantlist=True) }}' + var_host_info: '{{ query("vars", "ansible_host", "ansible_user") }}' - assert: that: diff --git a/test/integration/targets/loops/tasks/main.yml b/test/integration/targets/loops/tasks/main.yml index 30571d5f5c..72dc1af1e3 100644 --- a/test/integration/targets/loops/tasks/main.yml +++ b/test/integration/targets/loops/tasks/main.yml @@ -103,6 +103,54 @@ - 'results6["results"][0]["ping"] == "Hello World"' - 'results6["results"][1]["ping"] == "Olá Mundo"' +- name: Test that loop works with a list via the query lookup + ping: + data: '{{ item }}' + loop: '{{ query("list", "Hello World", "Olá Mundo") }}' + register: results7 + +- name: Assert that we ran the module twice with the correct strings + assert: + that: + - 'results7["results"][0]["ping"] == "Hello World"' + - 'results7["results"][1]["ping"] == "Olá Mundo"' + +- name: Test that loop works with a list in a variable via the query lookup + ping: + data: '{{ item }}' + loop: '{{ q("list", *phrases) }}' + register: results8 + +- name: Assert that we ran the module twice with the correct strings + assert: + that: + - 'results8["results"][0]["ping"] == "Hello World"' + - 'results8["results"][1]["ping"] == "Olá Mundo"' + +- name: Test that loop works with a list and keyword args + ping: + data: '{{ item }}' + loop: '{{ q("file", "data1.txt", "data2.txt", lstrip=True) }}' + register: results9 + +- name: Assert that we ran the module twice with the correct strings + assert: + that: + - 'results9["results"][0]["ping"] == "Hello World"' + - 'results9["results"][1]["ping"] == "Olá Mundo"' + +- name: Test that loop works with a list in variable and keyword args + ping: + data: '{{ item }}' + loop: '{{ q("file", lstrip=True, *filenames) }}' + register: results10 + +- name: Assert that we ran the module twice with the correct strings + assert: + that: + - 'results10["results"][0]["ping"] == "Hello World"' + - 'results10["results"][1]["ping"] == "Olá Mundo"' + # # loop_control/index_var # |