summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToshio Kuratomi <a.badger@gmail.com>2018-02-21 08:25:56 -0800
committerToshio Kuratomi <a.badger@gmail.com>2018-02-21 11:03:55 -0800
commit7f9fdbbb30647c4482b56b17381c16c37008bf8b (patch)
tree3d497681df018eb34ae3b614a1a6dd3dee0620d0
parent741b941f332d037a32bb70427865eeddc888ee0d (diff)
downloadansible-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__.py8
-rw-r--r--test/integration/targets/lookups/tasks/main.yml2
-rw-r--r--test/integration/targets/loops/tasks/main.yml48
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
#