Support external cross-project dependencies in ui
When a cross project dependency includes a change from a project
that is not known to zuul, the zuul ui stops updating and the following
stack trace is seen in the zuul logs on every ui update.
2015-06-12 12:42:50,079 ERROR zuul.WebApp: Exception formatting status:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/zuul/webapp.py", line 104, in app
self.cache = self.scheduler.formatStatusJSON()
File "/usr/local/lib/python2.7/dist-packages/zuul/scheduler.py", line 974, in formatStatusJSON
pipelines.append(pipeline.formatStatusJSON())
File "/usr/local/lib/python2.7/dist-packages/zuul/model.py", line 276, in formatStatusJSON
j_changes.append(e.formatJSON())
File "/usr/local/lib/python2.7/dist-packages/zuul/model.py", line 738, in formatJSON
ret['project'] = changeish.project.name
AttributeError: 'NoneType' object has no attribute 'name'
Quick fix to stop the bleeding is to mark the project as "unknown".
An alternative is to simply leave it blank.
A more permanent fix is still needed (e.g. look up name of project).
Change-Id: I97299ed2089ad005afaf7494168f4ee74f799e82
diff --git a/zuul/model.py b/zuul/model.py
index 4d402ff..4b907c3 100644
--- a/zuul/model.py
+++ b/zuul/model.py
@@ -735,7 +735,13 @@
ret['items_behind'] = [i.change._id() for i in self.items_behind]
ret['failing_reasons'] = self.current_build_set.failing_reasons
ret['zuul_ref'] = self.current_build_set.ref
- ret['project'] = changeish.project.name
+ if changeish.project:
+ ret['project'] = changeish.project.name
+ else:
+ # For cross-project dependencies with the depends-on
+ # project not known to zuul, the project is None
+ # Set it to a static value
+ ret['project'] = "Unknown Project"
ret['enqueue_time'] = int(self.enqueue_time * 1000)
ret['jobs'] = []
if hasattr(changeish, 'owner'):