summaryrefslogtreecommitdiff
path: root/lib/ansible/playbook/conditional.py
diff options
context:
space:
mode:
authorJames Cammarata <jimi@sngx.net>2015-06-27 15:37:10 -0400
committerJames Cammarata <jimi@sngx.net>2015-06-27 15:37:10 -0400
commit8ef28253e35457a254d526ef8cbc1a8387d7d9ba (patch)
tree9ee3052b02275f7c3074a1a27018850058d94b4d /lib/ansible/playbook/conditional.py
parent0eb1c880ddac9547560040311739b5ca8291a642 (diff)
downloadansible-8ef28253e35457a254d526ef8cbc1a8387d7d9ba.tar.gz
Properly catch and report conditional test failures
Diffstat (limited to 'lib/ansible/playbook/conditional.py')
-rw-r--r--lib/ansible/playbook/conditional.py13
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/ansible/playbook/conditional.py b/lib/ansible/playbook/conditional.py
index ff00a01de2..0cc0719515 100644
--- a/lib/ansible/playbook/conditional.py
+++ b/lib/ansible/playbook/conditional.py
@@ -19,6 +19,8 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
+from jinja2.exceptions import UndefinedError
+
from ansible.errors import *
from ansible.playbook.attribute import FieldAttribute
from ansible.template import Templar
@@ -53,9 +55,14 @@ class Conditional:
False if any of them evaluate as such.
'''
- for conditional in self.when:
- if not self._check_conditional(conditional, templar, all_vars):
- return False
+ try:
+ for conditional in self.when:
+ if not self._check_conditional(conditional, templar, all_vars):
+ return False
+ except UndefinedError, e:
+ raise AnsibleError("The conditional check '%s' failed due to an undefined variable. The error was: %s" % (conditional, e), obj=self.get_ds())
+ except Exception, e:
+ raise AnsibleError("The conditional check '%s' failed. The error was: %s" % (conditional, e), obj=self.get_ds())
return True