Reimplement GitLab trigger handler using the V4 API library

GitLab has deprecated and removed the V3 API entirely

Fixes https://jira.coreos.com/browse/QUAY-966
This commit is contained in:
Joseph Schorr 2018-06-11 15:22:02 -04:00
parent b0489aa8b0
commit bf966545ba
9 changed files with 912 additions and 393 deletions

View file

@ -11,9 +11,7 @@ from app import app
from auth.permissions import (UserAdminPermission, AdministerOrganizationPermission,
ReadRepositoryPermission, AdministerRepositoryPermission)
from buildtrigger.basehandler import BuildTriggerHandler
from buildtrigger.triggerutil import (TriggerDeactivationException,
TriggerActivationException, EmptyRepositoryException,
RepositoryReadException, TriggerStartException)
from buildtrigger.triggerutil import TriggerException, EmptyRepositoryException
from data import model
from data.model.build import update_build_trigger
from endpoints.api import (RepositoryParamResource, nickname, resource, require_repo_admin,
@ -118,7 +116,7 @@ class BuildTrigger(RepositoryParamResource):
if handler.is_active():
try:
handler.deactivate()
except TriggerDeactivationException as ex:
except TriggerException as ex:
# We are just going to eat this error
logger.warning('Trigger deactivation problem: %s', ex)
@ -178,7 +176,7 @@ class BuildTriggerSubdirs(RepositoryParamResource):
'contextMap': {},
'dockerfile_paths': [],
}
except RepositoryReadException as exc:
except TriggerException as exc:
return {
'status': 'error',
'message': exc.message,
@ -264,7 +262,7 @@ class BuildTriggerActivate(RepositoryParamResource):
if 'private_key' in private_config:
trigger.private_key = private_config['private_key']
except TriggerActivationException as exc:
except TriggerException as exc:
write_token.delete_instance()
raise request_error(message=exc.message)
@ -332,7 +330,7 @@ class BuildTriggerAnalyze(RepositoryParamResource):
new_config_dict,
AdministerOrganizationPermission(namespace_name).can())
return trigger_analyzer.analyze_trigger()
except RepositoryReadException as rre:
except TriggerException as rre:
return {
'status': 'error',
'message': 'Could not analyze the repository: %s' % rre.message,
@ -391,7 +389,7 @@ class ActivateBuildTrigger(RepositoryParamResource):
run_parameters = request.get_json()
prepared = handler.manual_start(run_parameters=run_parameters)
build_request = start_build(repo, prepared, pull_robot_name=pull_robot_name)
except TriggerStartException as tse:
except TriggerException as tse:
raise InvalidRequest(tse.message)
except MaximumBuildsQueuedException:
abort(429, message='Maximum queued build rate exceeded.')
@ -494,7 +492,7 @@ class BuildTriggerSources(RepositoryParamResource):
return {
'sources': handler.list_build_sources_for_namespace(namespace)
}
except RepositoryReadException as rre:
except TriggerException as rre:
raise InvalidRequest(rre.message)
else:
raise Unauthorized()
@ -522,7 +520,7 @@ class BuildTriggerSourceNamespaces(RepositoryParamResource):
return {
'namespaces': handler.list_build_source_namespaces()
}
except RepositoryReadException as rre:
except TriggerException as rre:
raise InvalidRequest(rre.message)
else:
raise Unauthorized()