From 3fbd61c0d5ccc7c35320a3770b687797a97a693e Mon Sep 17 00:00:00 2001 From: "James E. Blair" Date: Fri, 18 Jun 2021 15:07:18 -0700 Subject: 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 be8fe6773..fe427cd79 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 8c1c554ad..262266b23 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 3376f1866..a53389337 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, -- cgit v1.2.1