From 1fdeef511c274a75bf5184f6d6dcac95773fce28 Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Wed, 19 Apr 2017 11:35:25 -0400 Subject: [PATCH] finer grained failed/skipped on async for actions fixes #23729 (cherry picked from commit 3965689328a97471afd21a3cdeabdd7c56d83a42) --- lib/ansible/plugins/action/__init__.py | 8 ++++---- lib/ansible/plugins/action/add_host.py | 2 +- lib/ansible/plugins/action/assemble.py | 2 +- lib/ansible/plugins/action/copy.py | 2 +- lib/ansible/plugins/action/package.py | 2 +- lib/ansible/plugins/action/service.py | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/ansible/plugins/action/__init__.py b/lib/ansible/plugins/action/__init__.py index bd66d52ca02..4782b0bb7dd 100644 --- a/lib/ansible/plugins/action/__init__.py +++ b/lib/ansible/plugins/action/__init__.py @@ -90,17 +90,17 @@ class ActionBase(with_metaclass(ABCMeta, object)): * Module parameters. These are stored in self._task.args """ - result = {'skipped': True} + result = {} if self._task.async and not self._supports_async: result['msg'] = 'async is not supported for this task.' + result['failed'] = True elif self._play_context.check_mode and not self._supports_check_mode: result['msg'] = 'check mode is not supported for this task.' + result['skipped'] = True elif self._task.async and self._play_context.check_mode: result['msg'] = 'check mode and async cannot be used on same task.' - else: - # we run! - del result['skipped'] + result['failed'] = True return result diff --git a/lib/ansible/plugins/action/add_host.py b/lib/ansible/plugins/action/add_host.py index b253c22865e..6531d5b3205 100644 --- a/lib/ansible/plugins/action/add_host.py +++ b/lib/ansible/plugins/action/add_host.py @@ -46,7 +46,7 @@ class ActionModule(ActionBase): result = super(ActionModule, self).run(tmp, task_vars) - if result.get('skipped', False): + if result.get('skipped', False) or result.get('failed', False): return result # Parse out any hostname:port patterns diff --git a/lib/ansible/plugins/action/assemble.py b/lib/ansible/plugins/action/assemble.py index 1121bb937fa..9000db9f585 100644 --- a/lib/ansible/plugins/action/assemble.py +++ b/lib/ansible/plugins/action/assemble.py @@ -84,7 +84,7 @@ class ActionModule(ActionBase): result = super(ActionModule, self).run(tmp, task_vars) - if result.get('skipped', False): + if result.get('skipped', False) or result.get('failed', False): return result if task_vars is None: diff --git a/lib/ansible/plugins/action/copy.py b/lib/ansible/plugins/action/copy.py index 3395ec39f81..02cd2d55cde 100644 --- a/lib/ansible/plugins/action/copy.py +++ b/lib/ansible/plugins/action/copy.py @@ -40,7 +40,7 @@ class ActionModule(ActionBase): result = super(ActionModule, self).run(tmp, task_vars) - if result.get('skipped'): + if result.get('skipped', False) or result.get('failed', False): return result source = self._task.args.get('src', None) diff --git a/lib/ansible/plugins/action/package.py b/lib/ansible/plugins/action/package.py index d3062866d4a..6a69bbceb99 100644 --- a/lib/ansible/plugins/action/package.py +++ b/lib/ansible/plugins/action/package.py @@ -38,7 +38,7 @@ class ActionModule(ActionBase): result = super(ActionModule, self).run(tmp, task_vars) - if result.get('skipped', False): + if result.get('skipped', False) or result.get('failed', False): return result module = self._task.args.get('use', 'auto') diff --git a/lib/ansible/plugins/action/service.py b/lib/ansible/plugins/action/service.py index dd521e1b672..7e2921ff2ad 100644 --- a/lib/ansible/plugins/action/service.py +++ b/lib/ansible/plugins/action/service.py @@ -37,7 +37,7 @@ class ActionModule(ActionBase): result = super(ActionModule, self).run(tmp, task_vars) - if result.get('skipped', False): + if result.get('skipped', False) or result.get('failed', False): return result module = self._task.args.get('use', 'auto').lower()