Merge "Avoid 500 on /project with no project configs"
This commit is contained in:
@@ -987,6 +987,33 @@ class TestWeb(BaseTestWeb):
|
||||
}]
|
||||
}, data)
|
||||
|
||||
def test_web_project_get_no_config(self):
|
||||
# can we fetch project details for projects with no project stanza
|
||||
self.commitConfigUpdate(
|
||||
'common-config',
|
||||
'layouts/empty-check.yaml')
|
||||
self.scheds.execute(lambda app: app.sched.reconfigure(app.config))
|
||||
self.waitUntilSettled()
|
||||
|
||||
layout_scheduler = self.scheds.first.sched.local_layout_state.get(
|
||||
'tenant-one')
|
||||
for _ in iterate_timeout(10, "local layout of zuul-web to be updated"):
|
||||
layout_web = self.web.web.local_layout_state.get('tenant-one')
|
||||
if layout_web == layout_scheduler:
|
||||
break
|
||||
|
||||
data = self.get_url(
|
||||
'api/tenant/tenant-one/project/org/project1').json()
|
||||
self.assertEqual(
|
||||
{
|
||||
'canonical_name': 'review.example.com/org/project1',
|
||||
'configs': [],
|
||||
'metadata': {},
|
||||
'connection_name': 'gerrit',
|
||||
'name': 'org/project1'
|
||||
},
|
||||
data)
|
||||
|
||||
def test_web_keys(self):
|
||||
with open(os.path.join(FIXTURE_DIR, 'public.pem'), 'rb') as f:
|
||||
public_pem = f.read()
|
||||
|
||||
@@ -1918,7 +1918,12 @@ class ZuulWebAPI(object):
|
||||
|
||||
result = project.toDict()
|
||||
result['configs'] = []
|
||||
md = tenant.layout.getProjectMetadata(project.canonical_name).toDict()
|
||||
result['metadata'] = {}
|
||||
md = tenant.layout.getProjectMetadata(project.canonical_name)
|
||||
if md is None:
|
||||
# No actual configuration of the project in this tenant
|
||||
return result
|
||||
md = md.toDict()
|
||||
md['merge_mode'] = model.get_merge_mode_name(md['merge_mode'])
|
||||
result['metadata'] = md
|
||||
configs = tenant.layout.getAllProjectConfigs(project.canonical_name)
|
||||
|
||||
Reference in New Issue
Block a user