summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Krizek <martin.krizek@gmail.com>2020-09-27 09:51:14 +0200
committerGitHub <noreply@github.com>2020-09-27 02:51:14 -0500
commita63baa329095cd0850ad9c2fadc365186439017f (patch)
tree0394a2e79952cf383d7e3cbc467a2f25b97c8922
parent3072e439098360749a532da0350ae8c9807529d1 (diff)
downloadansible-a63baa329095cd0850ad9c2fadc365186439017f.tar.gz
Provide more information in AnsibleUndefinedVariable (#71666) (#71877)
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 abdd62f28b..5994a06050 100755
--- a/test/integration/targets/template/runme.sh
+++ b/test/integration/targets/template/runme.sh
@@ -19,3 +19,6 @@ ansible-playbook corner_cases.yml -v "$@"
# Test for #57351
ansible-playbook filter_plugins.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'