Merge pull request #14833 from bcoca/when_lists

make all conditionals lists
This commit is contained in:
Brian Coca 2016-03-09 13:20:31 -05:00
commit cf250d4f89
2 changed files with 14 additions and 10 deletions

View file

@ -452,19 +452,23 @@ class TaskExecutor:
# 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'])
@ -482,7 +486,7 @@ class TaskExecutor:
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:

View file

@ -70,11 +70,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)
@ -83,7 +83,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 '''