feature(superuser panel): ability to view logs
users would like the ability to view build logs in the superuser panel [None]
This commit is contained in:
parent
d8e08fd5df
commit
dae93dce78
10 changed files with 224 additions and 27 deletions
|
@ -359,6 +359,29 @@ class RepositoryBuildStatus(RepositoryParamResource):
|
|||
return build_status_view(build)
|
||||
|
||||
|
||||
def get_logs_or_log_url(build):
|
||||
# If the logs have been archived, just return a URL of the completed archive
|
||||
if build.logs_archived:
|
||||
return {
|
||||
'logs_url': log_archive.get_file_url(build.uuid, requires_cors=True)
|
||||
}
|
||||
start = int(request.args.get('start', 0))
|
||||
|
||||
try:
|
||||
count, logs = build_logs.get_log_entries(build.uuid, start)
|
||||
except BuildStatusRetrievalError:
|
||||
count, logs = (0, [])
|
||||
|
||||
response_obj = {}
|
||||
response_obj.update({
|
||||
'start': start,
|
||||
'total': count,
|
||||
'logs': [log for log in logs],
|
||||
})
|
||||
|
||||
return response_obj
|
||||
|
||||
|
||||
@resource('/v1/repository/<apirepopath:repository>/build/<build_uuid>/logs')
|
||||
@path_param('repository', 'The full path of the repository. e.g. namespace/name')
|
||||
@path_param('build_uuid', 'The UUID of the build')
|
||||
|
@ -368,33 +391,12 @@ class RepositoryBuildLogs(RepositoryParamResource):
|
|||
@nickname('getRepoBuildLogs')
|
||||
def get(self, namespace, repository, build_uuid):
|
||||
""" Return the build logs for the build specified by the build uuid. """
|
||||
response_obj = {}
|
||||
|
||||
build = model.build.get_repository_build(build_uuid)
|
||||
if (not build or build.repository.name != repository or
|
||||
build.repository.namespace_user.username != namespace):
|
||||
raise NotFound()
|
||||
|
||||
# If the logs have been archived, just return a URL of the completed archive
|
||||
if build.logs_archived:
|
||||
return {
|
||||
'logs_url': log_archive.get_file_url(build.uuid, requires_cors=True)
|
||||
}
|
||||
|
||||
start = int(request.args.get('start', 0))
|
||||
|
||||
try:
|
||||
count, logs = build_logs.get_log_entries(build.uuid, start)
|
||||
except BuildStatusRetrievalError:
|
||||
count, logs = (0, [])
|
||||
|
||||
response_obj.update({
|
||||
'start': start,
|
||||
'total': count,
|
||||
'logs': [log for log in logs],
|
||||
})
|
||||
|
||||
return response_obj
|
||||
return get_logs_or_log_url(build)
|
||||
|
||||
|
||||
@resource('/v1/filedrop/')
|
||||
|
|
Reference in a new issue