From e582a69e9c5a04debdd4889b05b9a6e5e216344b Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Thu, 2 Nov 2017 18:11:31 -0400 Subject: [PATCH] show specific undefined var errors on -v in debug (#32206) * show specific undefined var errors on -v in debug allows users to get more specific information about undefined errors as they might be looking at a complex data structure and need to find the specific leaf that has the issue * now tests works at all verbosity levels * updated to unicode objects --- lib/ansible/plugins/action/debug.py | 10 +++++----- .../roles/test_var_blending/tasks/main.yml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/ansible/plugins/action/debug.py b/lib/ansible/plugins/action/debug.py index 2280b65615..06337e564c 100644 --- a/lib/ansible/plugins/action/debug.py +++ b/lib/ansible/plugins/action/debug.py @@ -43,10 +43,8 @@ class ActionModule(ActionBase): result = super(ActionModule, self).run(tmp, task_vars) - verbosity = 0 # get task verbosity - if 'verbosity' in self._task.args: - verbosity = int(self._task.args['verbosity']) + verbosity = int(self._task.args.get('verbosity', 0)) if verbosity <= self._display.verbosity: if 'msg' in self._task.args: @@ -61,8 +59,10 @@ class ActionModule(ActionBase): raise AnsibleUndefinedVariable # If var name is same as result, try to template it results = self._templar.template("{{" + results + "}}", convert_bare=True, fail_on_undefined=True) - except AnsibleUndefinedVariable: - results = "VARIABLE IS NOT DEFINED!" + except AnsibleUndefinedVariable as e: + results = u"VARIABLE IS NOT DEFINED!" + if self._display.verbosity > 0: + results += u": %s" % to_text(e) if isinstance(self._task.args['var'], (list, dict)): # If var is a list or dict, use the type as key to display diff --git a/test/integration/targets/var_blending/roles/test_var_blending/tasks/main.yml b/test/integration/targets/var_blending/roles/test_var_blending/tasks/main.yml index e18c480a75..33c66d9b9f 100644 --- a/test/integration/targets/var_blending/roles/test_var_blending/tasks/main.yml +++ b/test/integration/targets/var_blending/roles/test_var_blending/tasks/main.yml @@ -44,7 +44,7 @@ - assert: that: - - var_undefined.undefined_variable == 'VARIABLE IS NOT DEFINED!' + - "'VARIABLE IS NOT DEFINED!' in var_undefined.undefined_variable" - same_value_as_var_name.same_value_as_var_name_var == 'same_value_as_var_name_var' - name: cleanup temporary template output