From 44b897d74c03ee937995b36edce7fcbeaa82aff2 Mon Sep 17 00:00:00 2001 From: "James E. Blair" Date: Fri, 6 Sep 2019 08:14:47 -0700 Subject: [PATCH] Record handler tasks in json job output There's a separate callback method for handler tasks. This is what we do in the text stream callback plugin; we should do the same in the json output. Change-Id: I48273ec182032f198b8886be95b0cba5c6f4843e --- .../job-output/git/common-config/playbooks/job-output.yaml | 4 ++++ tests/unit/test_v3.py | 4 ++++ zuul/ansible/base/callback/zuul_json.py | 3 +++ 3 files changed, 11 insertions(+) diff --git a/tests/fixtures/config/job-output/git/common-config/playbooks/job-output.yaml b/tests/fixtures/config/job-output/git/common-config/playbooks/job-output.yaml index 7e604c31c8..f0b5a98ed2 100644 --- a/tests/fixtures/config/job-output/git/common-config/playbooks/job-output.yaml +++ b/tests/fixtures/config/job-output/git/common-config/playbooks/job-output.yaml @@ -1,6 +1,10 @@ - hosts: all + handlers: + - name: handler + shell: echo "This is a handler" tasks: - shell: echo "Standard output test {{ zuul.executor.src_root }}" + notify: handler - shell: echo "This should be skipped" when: false - fail: diff --git a/tests/unit/test_v3.py b/tests/unit/test_v3.py index 94e29d90d2..9636c90e9e 100644 --- a/tests/unit/test_v3.py +++ b/tests/unit/test_v3.py @@ -4926,6 +4926,10 @@ class TestJobOutput(AnsibleZuulTestCase): ['hosts']['localhost']['skipped']) self.assertTrue(j[0]['plays'][0]['tasks'][2] ['hosts']['localhost']['failed']) + self.assertEqual( + "This is a handler", + j[0]['plays'][0]['tasks'][3] + ['hosts']['localhost']['stdout']) self.log.info(self._get_file(self.history[0], 'work/logs/job-output.txt')) diff --git a/zuul/ansible/base/callback/zuul_json.py b/zuul/ansible/base/callback/zuul_json.py index c07c68f78b..4ed2d01b4c 100644 --- a/zuul/ansible/base/callback/zuul_json.py +++ b/zuul/ansible/base/callback/zuul_json.py @@ -128,6 +128,9 @@ class CallbackModule(CallbackBase): def v2_playbook_on_task_start(self, task, is_conditional): self.results[-1]['tasks'].append(self._new_task(task)) + def v2_playbook_on_handler_task_start(self, task): + self.v2_playbook_on_task_start(task, False) + def v2_runner_on_ok(self, result, **kwargs): host = result._host action = result._task.action