summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2022-10-04 10:37:12 +0000
committerGerrit Code Review <review@openstack.org>2022-10-04 10:37:12 +0000
commitb0e9046dd71cb8f68e284a73200be53505039359 (patch)
tree2dfb6376a48fcbf6fbccad3c372b7e56d5e2a7af
parent6865255bcbdc391dc4aae8a572c765a9545b44bd (diff)
parent3db58dbe33f09971c174cc04c0a1338e26b001d0 (diff)
downloadzuul-b0e9046dd71cb8f68e284a73200be53505039359.tar.gz
Merge "Trace Zuul trigger events"
-rw-r--r--zuul/driver/zuul/__init__.py43
-rw-r--r--zuul/manager/__init__.py8
2 files changed, 35 insertions, 16 deletions
diff --git a/zuul/driver/zuul/__init__.py b/zuul/driver/zuul/__init__.py
index 9a9c45da9..6dd6ff1b9 100644
--- a/zuul/driver/zuul/__init__.py
+++ b/zuul/driver/zuul/__init__.py
@@ -16,6 +16,8 @@ import logging
import time
from uuid import uuid4
+from opentelemetry import trace
+
from zuul.driver import Driver, TriggerInterface
from zuul.driver.zuul.zuulmodel import ZuulTriggerEvent
from zuul.driver.zuul import zuulmodel
@@ -29,6 +31,7 @@ PROJECT_CHANGE_MERGED = 'project-change-merged'
class ZuulDriver(Driver, TriggerInterface):
name = 'zuul'
log = logging.getLogger("zuul.ZuulTrigger")
+ tracer = trace.get_tracer("zuul")
def __init__(self):
self.parent_change_enqueued_events = {}
@@ -54,12 +57,19 @@ class ZuulDriver(Driver, TriggerInterface):
def onChangeMerged(self, tenant, change, source):
# Called each time zuul merges a change
if self.project_change_merged_events.get(tenant.name):
- try:
- self._createProjectChangeMergedEvents(change, source)
- except Exception:
- self.log.exception(
- "Unable to create project-change-merged events for "
- "%s" % (change,))
+ span = trace.get_current_span()
+ link_attributes = {"rel": "ChangeMerged"}
+ link = trace.Link(span.get_span_context(),
+ attributes=link_attributes)
+ attributes = {"event_type": PROJECT_CHANGE_MERGED}
+ with self.tracer.start_as_current_span(
+ "ZuulEvent", links=[link], attributes=attributes):
+ try:
+ self._createProjectChangeMergedEvents(change, source)
+ except Exception:
+ self.log.exception(
+ "Unable to create project-change-merged events for "
+ "%s" % (change,))
def onChangeEnqueued(self, tenant, change, pipeline, event):
log = get_annotated_logger(self.log, event)
@@ -69,13 +79,20 @@ class ZuulDriver(Driver, TriggerInterface):
(tenant.name, pipeline.name))
log.debug("onChangeEnqueued %s", tenant_events)
if tenant_events:
- try:
- self._createParentChangeEnqueuedEvents(
- change, pipeline, tenant, event)
- except Exception:
- log.exception(
- "Unable to create parent-change-enqueued events for "
- "%s in %s" % (change, pipeline))
+ span = trace.get_current_span()
+ link_attributes = {"rel": "ChangeEnqueued"}
+ link = trace.Link(span.get_span_context(),
+ attributes=link_attributes)
+ attributes = {"event_type": PARENT_CHANGE_ENQUEUED}
+ with self.tracer.start_as_current_span(
+ "ZuulEvent", links=[link], attributes=attributes):
+ try:
+ self._createParentChangeEnqueuedEvents(
+ change, pipeline, tenant, event)
+ except Exception:
+ log.exception(
+ "Unable to create parent-change-enqueued events for "
+ "%s in %s" % (change, pipeline))
def _createProjectChangeMergedEvents(self, change, source):
changes = source.getProjectOpenChanges(
diff --git a/zuul/manager/__init__.py b/zuul/manager/__init__.py
index aad112af8..d70b12885 100644
--- a/zuul/manager/__init__.py
+++ b/zuul/manager/__init__.py
@@ -623,8 +623,9 @@ class PipelineManager(metaclass=ABCMeta):
zuul_driver = self.sched.connections.drivers['zuul']
tenant = self.pipeline.tenant
- zuul_driver.onChangeEnqueued(
- tenant, item.change, self.pipeline, event)
+ with trace.use_span(tracing.restoreSpan(item.span_info)):
+ zuul_driver.onChangeEnqueued(
+ tenant, item.change, self.pipeline, event)
self.dequeueSupercededItems(item)
return True
@@ -2036,7 +2037,8 @@ class PipelineManager(metaclass=ABCMeta):
zuul_driver = self.sched.connections.drivers['zuul']
tenant = self.pipeline.tenant
- zuul_driver.onChangeMerged(tenant, item.change, source)
+ with trace.use_span(tracing.restoreSpan(item.span_info)):
+ zuul_driver.onChangeMerged(tenant, item.change, source)
elif action:
self.reportNormalBuildsetEnd(item.current_build_set,
action, final=True)