summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Krizek <martin.krizek@gmail.com>2020-09-28 07:34:38 +0200
committerGitHub <noreply@github.com>2020-09-28 00:34:38 -0500
commit4df129c6ae3c5f33fccd7e70ccb629610af60dfb (patch)
treebb494801b146f57f17569387d9d6ebae8264e81e
parentc4e3552c8d08f4c563b28c1d8c27de3742919030 (diff)
downloadansible-4df129c6ae3c5f33fccd7e70ccb629610af60dfb.tar.gz
Provide more information in AnsibleUndefinedVariable (#71666) (#71876)
* Provide more information in AnsibleUndefinedVariable Fixes #55152 (cherry picked from commit 00b22ab55ea1b514053ca8a9ba3928bc210ea3aa)
-rw-r--r--changelogs/fragments/55152-add-more-info-to-AnsibleUndefinedVariable.yml2
-rw-r--r--lib/ansible/template/vars.py4
-rwxr-xr-xtest/integration/targets/template/runme.sh3
-rw-r--r--test/integration/targets/template/undefined_var_info.yml15
4 files changed, 22 insertions, 2 deletions
diff --git a/changelogs/fragments/55152-add-more-info-to-AnsibleUndefinedVariable.yml b/changelogs/fragments/55152-add-more-info-to-AnsibleUndefinedVariable.yml
new file mode 100644
index 0000000000..a229848bcb
--- /dev/null
+++ b/changelogs/fragments/55152-add-more-info-to-AnsibleUndefinedVariable.yml
@@ -0,0 +1,2 @@
+bugfixes:
+ - Provide more information in AnsibleUndefinedVariable (https://github.com/ansible/ansible/issues/55152)
diff --git a/lib/ansible/template/vars.py b/lib/ansible/template/vars.py
index 164cf1a1ab..464deecf80 100644
--- a/lib/ansible/template/vars.py
+++ b/lib/ansible/template/vars.py
@@ -104,8 +104,8 @@ class AnsibleJ2Vars(Mapping):
value = None
try:
value = self._templar.template(variable)
- except AnsibleUndefinedVariable:
- raise
+ except AnsibleUndefinedVariable as e:
+ raise AnsibleUndefinedVariable("%s: %s" % (to_native(variable), e.message))
except Exception as e:
msg = getattr(e, 'message', None) or to_native(e)
raise AnsibleError("An unhandled exception occurred while templating '%s'. "
diff --git a/test/integration/targets/template/runme.sh b/test/integration/targets/template/runme.sh
index 61511ac82f..8e21352d29 100755
--- a/test/integration/targets/template/runme.sh
+++ b/test/integration/targets/template/runme.sh
@@ -22,3 +22,6 @@ ansible-playbook filter_plugins.yml -v "$@"
# https://github.com/ansible/ansible/issues/68699
ansible-playbook unused_vars_include.yml -v "$@"
+
+# https://github.com/ansible/ansible/issues/55152
+ansible-playbook undefined_var_info.yml -v "$@"
diff --git a/test/integration/targets/template/undefined_var_info.yml b/test/integration/targets/template/undefined_var_info.yml
new file mode 100644
index 0000000000..b96a58db14
--- /dev/null
+++ b/test/integration/targets/template/undefined_var_info.yml
@@ -0,0 +1,15 @@
+- hosts: localhost
+ gather_facts: no
+ vars:
+ foo: []
+ bar: "{{ foo[0] }}"
+ tasks:
+ - debug:
+ msg: "{{ bar }}"
+ register: result
+ ignore_errors: yes
+
+ - assert:
+ that:
+ - '"foo[0]" in result.msg'
+ - '"object has no element 0" in result.msg'