Add hostname to TriggerEvent
TriggerEvents are going to need to store information to fully-qualify
projects. Yet, most of their use is within the context of a driver, so
make sure that we can easily access both the fully-qualifed and
unqualified project name.
Change-Id: I06c6fbe361c23b0d6fb3dda3344fc58339bafefb
Story: 2000953
diff --git a/zuul/driver/gerrit/gerritconnection.py b/zuul/driver/gerrit/gerritconnection.py
index 3113184..f266f2a 100644
--- a/zuul/driver/gerrit/gerritconnection.py
+++ b/zuul/driver/gerrit/gerritconnection.py
@@ -76,6 +76,7 @@
event.type = data.get('type')
event.trigger_name = 'gerrit'
change = data.get('change')
+ event.project_hostname = self.connection.canonical_hostname
if change:
event.project_name = change.get('project')
event.branch = change.get('branch')
diff --git a/zuul/driver/timer/__init__.py b/zuul/driver/timer/__init__.py
index 3ce0b8d..7ad8756 100644
--- a/zuul/driver/timer/__init__.py
+++ b/zuul/driver/timer/__init__.py
@@ -80,6 +80,8 @@
event.type = 'timer'
event.timespec = timespec
event.forced_pipeline = pipeline_name
+ # TODOv3(jeblair): add project hostname in future change
+ event.project_hostname = ''
event.project_name = project_name
self.log.debug("Adding event %s" % event)
self.sched.addEvent(event)
diff --git a/zuul/driver/zuul/__init__.py b/zuul/driver/zuul/__init__.py
index 47ccec0..8c9d795 100644
--- a/zuul/driver/zuul/__init__.py
+++ b/zuul/driver/zuul/__init__.py
@@ -76,6 +76,7 @@
event = TriggerEvent()
event.type = PROJECT_CHANGE_MERGED
event.trigger_name = self.name
+ event.project_hostname = change.project.canonical_hostname
event.project_name = change.project.name
event.change_number = change.number
event.branch = change.branch
@@ -97,6 +98,7 @@
event.type = PARENT_CHANGE_ENQUEUED
event.trigger_name = self.name
event.pipeline_name = pipeline.name
+ event.project_hostname = change.project.canonical_hostname
event.project_name = change.project.name
event.change_number = change.number
event.branch = change.branch
diff --git a/zuul/model.py b/zuul/model.py
index 64d1593..77c5990 100644
--- a/zuul/model.py
+++ b/zuul/model.py
@@ -1813,6 +1813,7 @@
self.type = None
# For management events (eg: enqueue / promote)
self.tenant_name = None
+ self.project_hostname = None
self.project_name = None
self.trigger_name = None
# Representation of the user account that performed the event.
@@ -1837,6 +1838,10 @@
# an admin command, etc):
self.forced_pipeline = None
+ @property
+ def canonical_project_name(self):
+ return self.project_hostname + '/' + self.project_name
+
def __repr__(self):
ret = '<TriggerEvent %s %s' % (self.type, self.project_name)
diff --git a/zuul/rpclistener.py b/zuul/rpclistener.py
index 0fb557c..e7e7dae 100644
--- a/zuul/rpclistener.py
+++ b/zuul/rpclistener.py
@@ -98,9 +98,10 @@
if tenant:
event.tenant_name = args['tenant']
- project = tenant.layout.project_configs.get(args['project'])
+ (trusted, project) = tenant.getProject(args['project'])
if project:
- event.project_name = args['project']
+ event.project_hostname = project.canonical_hostname
+ event.project_name = project.name
else:
errors += 'Invalid project: %s\n' % (args['project'],)