From 3fbd61c0d5ccc7c35320a3770b687797a97a693e Mon Sep 17 00:00:00 2001 From: "James E. Blair" Date: Fri, 18 Jun 2021 15:07:18 -0700 Subject: [PATCH] Add item UUID to MQTT reporter Since the MQTT reporter can be used to emit start or enqueue events, it may be useful to match enqueue and dequeue events. That could be done with tenant+pipeline+change+patchset, but we also have a UUID for queue items, so to make it simpler for MQTT consumers, let's expose that. Change-Id: Iff88bcfd73e00f292e0cc947f548582a276a7975 --- doc/source/reference/drivers/mqtt.rst | 6 ++++++ tests/unit/test_connection.py | 1 + zuul/driver/mqtt/mqttreporter.py | 1 + 3 files changed, 8 insertions(+) diff --git a/doc/source/reference/drivers/mqtt.rst b/doc/source/reference/drivers/mqtt.rst index be8fe67738..fe427cd79c 100644 --- a/doc/source/reference/drivers/mqtt.rst +++ b/doc/source/reference/drivers/mqtt.rst @@ -13,6 +13,12 @@ An MQTT report uses this schema: .. attr:: + .. attr:: uuid + + The item UUID. Each item enqueued into a Zuul pipeline is + assigned a UUID which remains the same even as Zuul's + speculative execution algorithm re-orders pipeline contents. + .. attr:: action The reporter action name, e.g.: 'start', 'success', 'failure', diff --git a/tests/unit/test_connection.py b/tests/unit/test_connection.py index 8c1c554ad5..262266b230 100644 --- a/tests/unit/test_connection.py +++ b/tests/unit/test_connection.py @@ -652,6 +652,7 @@ class TestMQTTConnection(ZuulTestCase): self.assertIn('enqueue_time', mqtt_payload) self.assertIn('trigger_time', mqtt_payload) self.assertIn('zuul_event_id', mqtt_payload) + self.assertIn('uuid', mqtt_payload) self.assertEquals(dependent_test_job['dependencies'], ['test']) def test_mqtt_invalid_topic(self): diff --git a/zuul/driver/mqtt/mqttreporter.py b/zuul/driver/mqtt/mqttreporter.py index 3376f18666..a533893374 100644 --- a/zuul/driver/mqtt/mqttreporter.py +++ b/zuul/driver/mqtt/mqttreporter.py @@ -48,6 +48,7 @@ class MQTTReporter(BaseReporter): item, with_jobs=False), 'trigger_time': item.event.timestamp, 'enqueue_time': item.enqueue_time, + 'uuid': item.uuid, 'buildset': { 'uuid': item.current_build_set.uuid, 'result': item.current_build_set.result,