From f2284a00988d7b10cc243a3aa6d9d3c43017d3a2 Mon Sep 17 00:00:00 2001 From: Matthew Jones Date: Tue, 22 Mar 2016 12:27:23 -0400 Subject: [PATCH] Handle runner items from ansible v2 Also denote whether the trailing runner_on_ was a loop event --- .../commands/run_callback_receiver.py | 2 +- awx/plugins/callback/job_event_callback.py | 23 +++++++++++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/awx/main/management/commands/run_callback_receiver.py b/awx/main/management/commands/run_callback_receiver.py index cccf07b4db..6ba078241f 100644 --- a/awx/main/management/commands/run_callback_receiver.py +++ b/awx/main/management/commands/run_callback_receiver.py @@ -134,7 +134,7 @@ class CallbackReceiver(object): 'playbook_on_import_for_host', 'playbook_on_not_import_for_host'): parent = job_parent_events.get('playbook_on_play_start', None) - elif message['event'].startswith('runner_on_'): + elif message['event'].startswith('runner_on_') or message['event'].startswith('runner_item_on_'): list_parents = [] list_parents.append(job_parent_events.get('playbook_on_setup', None)) list_parents.append(job_parent_events.get('playbook_on_task_start', None)) diff --git a/awx/plugins/callback/job_event_callback.py b/awx/plugins/callback/job_event_callback.py index 430ae4c80d..e55c91e4a6 100644 --- a/awx/plugins/callback/job_event_callback.py +++ b/awx/plugins/callback/job_event_callback.py @@ -175,7 +175,6 @@ class BaseCallbackModule(object): self._init_connection() if self.context is None: self._start_connection() - self.socket.send_json(msg) self.socket.recv() return @@ -224,16 +223,19 @@ class BaseCallbackModule(object): ignore_errors=ignore_errors) def v2_runner_on_failed(self, result, ignore_errors=False): + event_is_loop = result._task.loop if hasattr(result._task, 'loop') else None self._log_event('runner_on_failed', host=result._host.name, res=result._result, task=result._task, - ignore_errors=ignore_errors) + ignore_errors=ignore_errors, event_loop=event_is_loop) def runner_on_ok(self, host, res): self._log_event('runner_on_ok', host=host, res=res) def v2_runner_on_ok(self, result): + event_is_loop = result._task.loop if hasattr(result._task, 'loop') else None self._log_event('runner_on_ok', host=result._host.name, - task=result._task, res=result._result) + task=result._task, res=result._result, + event_loop=event_is_loop) def runner_on_error(self, host, msg): self._log_event('runner_on_error', host=host, msg=msg) @@ -245,8 +247,9 @@ class BaseCallbackModule(object): self._log_event('runner_on_skipped', host=host, item=item) def v2_runner_on_skipped(self, result): + event_is_loop = result._task.loop if hasattr(result._task, 'loop') else None self._log_event('runner_on_skipped', host=result._host.name, - task=result._task) + task=result._task, event_loop=event_is_loop) def runner_on_unreachable(self, host, res): self._log_event('runner_on_unreachable', host=host, res=res) @@ -280,6 +283,18 @@ class BaseCallbackModule(object): self._log_event('runner_on_file_diff', host=result._host.name, task=result._task, diff=diff) + def v2_runner_item_on_ok(self, result): + self._log_event('runner_item_on_ok', res=result._result, host=result._host.name, + task=result._task) + + def v2_runner_item_on_failed(self, result): + self._log_event('runner_item_on_failed', res=result._result, host=result._host.name, + task=result._task) + + def v2_runner_item_on_skipped(self, result): + self._log_event('runner_item_on_skipped', res=result._result, host=result._host.name, + task=result._task) + @staticmethod def terminate_ssh_control_masters(): # Determine if control persist is being used and if any open sockets