Skip to content
Permalink
Browse files

make all conditionals lists

this brings them to equivalence with when:
fixes #13905
  • Loading branch information...
bcoca committed Mar 6, 2016
1 parent a5b0b96 commit 500fc50a4848a280feaa994f69ed366b9713dd6a
Showing with 14 additions and 10 deletions.
  1. +11 −7 lib/ansible/executor/task_executor.py
  2. +3 −3 lib/ansible/playbook/task.py
@@ -447,19 +447,23 @@ def _execute(self, variables=None):

# helper methods for use below in evaluating changed/failed_when
def _evaluate_changed_when_result(result):
if self._task.changed_when is not None:
if self._task.changed_when:
cond = Conditional(loader=self._loader)
cond.when = [ self._task.changed_when ]
cond.when = self._task.changed_when
result['changed'] = cond.evaluate_conditional(templar, vars_copy)
else:
result['changed'] = False

def _evaluate_failed_when_result(result):
if self._task.failed_when is not None:
if self._task.failed_when:
cond = Conditional(loader=self._loader)
cond.when = [ self._task.failed_when ]
cond.when = self._task.failed_when
failed_when_result = cond.evaluate_conditional(templar, vars_copy)
result['failed_when_result'] = result['failed'] = failed_when_result
return failed_when_result
return False
else:
failed_when_result = False
result['failed'] = False
return failed_when_result

if 'ansible_facts' in result:
vars_copy.update(result['ansible_facts'])
@@ -477,7 +481,7 @@ def _evaluate_failed_when_result(result):

if attempt < retries - 1:
cond = Conditional(loader=self._loader)
cond.when = [ self._task.until ]
cond.when = self._task.until
if cond.evaluate_conditional(templar, vars_copy):
break
else:
@@ -69,11 +69,11 @@ class Task(Base, Conditional, Taggable, Become):

_any_errors_fatal = FieldAttribute(isa='bool')
_async = FieldAttribute(isa='int', default=0)
_changed_when = FieldAttribute(isa='string')
_changed_when = FieldAttribute(isa='list', default=[])
_delay = FieldAttribute(isa='int', default=5)
_delegate_to = FieldAttribute(isa='string')
_delegate_facts = FieldAttribute(isa='bool', default=False)
_failed_when = FieldAttribute(isa='string')
_failed_when = FieldAttribute(isa='list', default=[])
_first_available_file = FieldAttribute(isa='list')
_loop = FieldAttribute(isa='string', private=True)
_loop_args = FieldAttribute(isa='list', private=True)
@@ -82,7 +82,7 @@ class Task(Base, Conditional, Taggable, Become):
_poll = FieldAttribute(isa='int')
_register = FieldAttribute(isa='string')
_retries = FieldAttribute(isa='int', default=3)
_until = FieldAttribute(isa='string')
_until = FieldAttribute(isa='list', default=[])

def __init__(self, block=None, role=None, task_include=None):
''' constructors a task, without the Task.load classmethod, it will be pretty blank '''

0 comments on commit 500fc50

Please sign in to comment.
You can’t perform that action at this time.