Merge "Avoid 500 on /project with no project configs"
This commit is contained in:
@@ -987,6 +987,33 @@ class TestWeb(BaseTestWeb):
|
|||||||
}]
|
}]
|
||||||
}, data)
|
}, 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):
|
def test_web_keys(self):
|
||||||
with open(os.path.join(FIXTURE_DIR, 'public.pem'), 'rb') as f:
|
with open(os.path.join(FIXTURE_DIR, 'public.pem'), 'rb') as f:
|
||||||
public_pem = f.read()
|
public_pem = f.read()
|
||||||
|
|||||||
@@ -1918,7 +1918,12 @@ class ZuulWebAPI(object):
|
|||||||
|
|
||||||
result = project.toDict()
|
result = project.toDict()
|
||||||
result['configs'] = []
|
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'])
|
md['merge_mode'] = model.get_merge_mode_name(md['merge_mode'])
|
||||||
result['metadata'] = md
|
result['metadata'] = md
|
||||||
configs = tenant.layout.getAllProjectConfigs(project.canonical_name)
|
configs = tenant.layout.getAllProjectConfigs(project.canonical_name)
|
||||||
|
|||||||
Reference in New Issue
Block a user