diff --git a/lib/ansible/playbook/conditional.py b/lib/ansible/playbook/conditional.py index 0cc07195155..ae7a5f0ba4c 100644 --- a/lib/ansible/playbook/conditional.py +++ b/lib/ansible/playbook/conditional.py @@ -55,14 +55,21 @@ class Conditional: False if any of them evaluate as such. ''' + # since this is a mixin, it may not have an underlying datastructure + # associated with it, so we pull it out now in case we need it for + # error reporting below + ds = None + if hasattr(self, 'get_ds'): + ds = self.get_ds() + 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()) + raise AnsibleError("The conditional check '%s' failed due to an undefined variable. The error was: %s" % (conditional, e), obj=ds) except Exception, e: - raise AnsibleError("The conditional check '%s' failed. The error was: %s" % (conditional, e), obj=self.get_ds()) + raise AnsibleError("The conditional check '%s' failed. The error was: %s" % (conditional, e), obj=ds) return True