win_updates fix when win_updates is run with async (#41756)

This commit is contained in:
Jordan Borean 2018-06-21 07:52:24 +10:00 committed by Matt Davis
parent 8bd245a6a2
commit 11bd3fd318
3 changed files with 40 additions and 1 deletions

View file

@ -0,0 +1,2 @@
bugfixes:
- win_updates - Fixed issue where running win_updates on async fails without any error

View file

@ -213,7 +213,7 @@ class ActionModule(ActionBase):
# so we just return the result as is
# https://github.com/ansible/ansible/issues/38232
failed = result.get('failed', False)
if "updates" not in result.keys() or failed:
if ("updates" not in result.keys() and self._task.async_val == 0) or failed:
result['failed'] = True
return result

View file

@ -118,3 +118,40 @@ class TestWinUpdatesActionPlugin(object):
assert actual['become'] == e_b
assert actual['become_method'] == e_bmethod
assert actual['become_user'] == e_buser
def test_module_exec_async_result(self, monkeypatch):
return_val = {
"ansible_async_watchdog_pid": 7584,
"ansible_job_id": "545519115287.9620",
"changed": True,
"finished": 0,
"results_file": r"C:\.ansible_async\545519115287.9620",
"started": 1
}
mock_execute = MagicMock(return_value=return_val)
monkeypatch.setattr(ActionModule, '_execute_module', mock_execute)
task = MagicMock(Task)
task.args = {}
task.async_val = 10
connection = MagicMock()
connection.module_implementation_preferences = ('.ps1', '.exe', '')
play_context = MagicMock()
play_context.check_mode = False
play_context.become = True
play_context.become_method = 'runas'
play_context.become_user = 'SYSTEM'
plugin = ActionModule(task, connection, play_context, loader=None,
templar=None, shared_loader_obj=None)
actual = plugin.run(None, {})
assert actual.get('failed') is None
assert actual['ansible_async_watchdog_pid'] == 7584
assert actual['ansible_job_id'] == "545519115287.9620"
assert actual['changed'] is True
assert actual['finished'] == 0
assert actual['results_file'] == r"C:\.ansible_async\545519115287.9620"
assert actual['started'] == 1