84 lines
2.4 KiB
Python
84 lines
2.4 KiB
Python
class WorkerError(object):
|
|
""" Helper class which represents errors raised by a build worker. """
|
|
def __init__(self, error_code, base_message=None):
|
|
self._error_code = error_code
|
|
self._base_message = base_message
|
|
|
|
self._error_handlers = {
|
|
'io.quay.builder.buildpackissue': {
|
|
'message': 'Could not load build package',
|
|
'is_internal': True
|
|
},
|
|
|
|
'io.quay.builder.cannotextractbuildpack': {
|
|
'message': 'Could not extract the contents of the build package'
|
|
},
|
|
|
|
'io.quay.builder.cannotpullforcache': {
|
|
'message': 'Could not pull cached image',
|
|
'is_internal': True
|
|
},
|
|
|
|
'io.quay.builder.cannotpullbaseimage': {
|
|
'message': 'Could not pull base image',
|
|
'show_base_error': True
|
|
},
|
|
|
|
'io.quay.builder.internalerror': {
|
|
'message': 'An internal error occurred while building. Please submit a ticket.'
|
|
},
|
|
|
|
'io.quay.builder.buildrunerror': {
|
|
'message': 'Could not start the build process',
|
|
'is_internal': True
|
|
},
|
|
|
|
'io.quay.builder.builderror': {
|
|
'message': 'A build step failed',
|
|
'show_base_error': True
|
|
},
|
|
|
|
'io.quay.builder.tagissue': {
|
|
'message': 'Could not tag built image',
|
|
'is_internal': True
|
|
},
|
|
|
|
'io.quay.builder.pushissue': {
|
|
'message': 'Could not push built image',
|
|
'show_base_error': True,
|
|
'is_internal': True
|
|
},
|
|
|
|
'io.quay.builder.dockerconnecterror': {
|
|
'message': 'Could not connect to Docker daemon',
|
|
'is_internal': True
|
|
},
|
|
|
|
'io.quay.builder.missingorinvalidargument': {
|
|
'message': 'Missing required arguments for builder',
|
|
'is_internal': True
|
|
}
|
|
}
|
|
|
|
def is_internal_error(self):
|
|
handler = self._error_handlers.get(self._error_code)
|
|
return handler.get('is_internal', False) if handler else True
|
|
|
|
def public_message(self):
|
|
handler = self._error_handlers.get(self._error_code)
|
|
if not handler:
|
|
return 'An unknown error occurred'
|
|
|
|
message = handler['message']
|
|
if handler.get('show_base_error', False) and self._base_message:
|
|
message = message + ': ' + self._base_message
|
|
|
|
return message
|
|
|
|
def extra_data(self):
|
|
if self._base_message:
|
|
return {
|
|
'base_error': self._base_message
|
|
}
|
|
|
|
return {}
|