Add 'build' method to API
This returns info about a specific build (by uuid). This can be used for a page with info about the build as well as links to logs and artifacts about the build. It may eventually replace direct links to logs in reports. Change-Id: Ifba13ebb58ef535838cea8e7adb2e9760ea798cf
This commit is contained in:
parent
24bf769145
commit
518643a4db
|
@ -499,5 +499,12 @@ class TestBuildInfo(ZuulDBTestCase, BaseTestWeb):
|
|||
builds = self.get_url("api/tenant/tenant-one/builds").json()
|
||||
self.assertEqual(len(builds), 6)
|
||||
|
||||
uuid = builds[0]['uuid']
|
||||
build = self.get_url("api/tenant/tenant-one/build/%s" % uuid).json()
|
||||
self.assertEqual(build['job_name'], builds[0]['job_name'])
|
||||
|
||||
resp = self.get_url("api/tenant/tenant-one/build/1234")
|
||||
self.assertEqual(404, resp.status_code)
|
||||
|
||||
resp = self.get_url("api/tenant/non-tenant/builds")
|
||||
self.assertEqual(404, resp.status_code)
|
||||
|
|
|
@ -321,8 +321,6 @@ class ZuulWebAPI(object):
|
|||
branch=None, patchset=None, ref=None, newrev=None,
|
||||
uuid=None, job_name=None, voting=None, node_name=None,
|
||||
result=None, limit=50, skip=0):
|
||||
sql_driver = self.zuulweb.connections.drivers['sql']
|
||||
|
||||
# Ask the scheduler which sql connection to use for this tenant
|
||||
job = self.rpc.submitJob('zuul:tenant_sql_connection',
|
||||
{'tenant': tenant})
|
||||
|
@ -355,6 +353,34 @@ class ZuulWebAPI(object):
|
|||
resp.headers['Access-Control-Allow-Origin'] = '*'
|
||||
return data
|
||||
|
||||
@cherrypy.expose
|
||||
@cherrypy.tools.save_params()
|
||||
@cherrypy.tools.json_out(content_type='application/json; charset=utf-8')
|
||||
def build(self, tenant, uuid):
|
||||
# Ask the scheduler which sql connection to use for this tenant
|
||||
job = self.rpc.submitJob('zuul:tenant_sql_connection',
|
||||
{'tenant': tenant})
|
||||
connection_name = json.loads(job.data[0])
|
||||
|
||||
if not connection_name:
|
||||
raise cherrypy.HTTPError(404, 'Tenant %s does not exist.' % tenant)
|
||||
|
||||
connection = self.zuulweb.connections.connections[connection_name]
|
||||
|
||||
args = {
|
||||
'buildset_filters': {'tenant': [tenant]},
|
||||
'build_filters': {'uuid': [uuid]},
|
||||
'limit': 1,
|
||||
'skip': 0,
|
||||
}
|
||||
data = connection.get_builds(args)
|
||||
if not data:
|
||||
raise cherrypy.HTTPError(404, "Build not found")
|
||||
data = data[0]
|
||||
resp = cherrypy.response
|
||||
resp.headers['Access-Control-Allow-Origin'] = '*'
|
||||
return data
|
||||
|
||||
@cherrypy.expose
|
||||
@cherrypy.tools.save_params()
|
||||
@cherrypy.tools.websocket(handler_cls=LogStreamHandler)
|
||||
|
@ -492,6 +518,8 @@ class ZuulWeb(object):
|
|||
controller=api, action='console_stream')
|
||||
route_map.connect('api', '/api/tenant/{tenant}/builds',
|
||||
controller=api, action='builds')
|
||||
route_map.connect('api', '/api/tenant/{tenant}/build/{uuid}',
|
||||
controller=api, action='build')
|
||||
route_map.connect('api', '/api/tenant/{tenant}/config-errors',
|
||||
controller=api, action='config_errors')
|
||||
|
||||
|
|
Loading…
Reference in New Issue