summaryrefslogtreecommitdiff
path: root/lib/ansible
diff options
context:
space:
mode:
authorBrian Coca <brian.coca+git@gmail.com>2016-03-06 10:47:15 -0500
committerBrian Coca <brian.coca+git@gmail.com>2016-03-09 09:33:59 -0500
commit7067bb32b8eb0a6dc53c0278b8452594744a6f13 (patch)
tree73ca0666603bace5714e28ab5c70c55d464debc0 /lib/ansible
parenta52a5612170a9f7e63d244e42f011d4537c654d3 (diff)
downloadansible-7067bb32b8eb0a6dc53c0278b8452594744a6f13.tar.gz
make all conditionals lists
this brings them to equivalence with when: fixes #13905
Diffstat (limited to 'lib/ansible')
-rw-r--r--lib/ansible/executor/task_executor.py18
-rw-r--r--lib/ansible/playbook/task.py6
2 files changed, 14 insertions, 10 deletions
diff --git a/lib/ansible/executor/task_executor.py b/lib/ansible/executor/task_executor.py
index a0881cc222..1ed03ed2b2 100644
--- a/lib/ansible/executor/task_executor.py
+++ b/lib/ansible/executor/task_executor.py
@@ -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:
diff --git a/lib/ansible/playbook/task.py b/lib/ansible/playbook/task.py
index c97e81e964..8ee440386b 100644
--- a/lib/ansible/playbook/task.py
+++ b/lib/ansible/playbook/task.py
@@ -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 '''