Work in progress: bitbucket support
This commit is contained in:
parent
c480fb2105
commit
5cc91ed202
11 changed files with 352 additions and 259 deletions
|
@ -13,7 +13,7 @@ from endpoints.api import (RepositoryParamResource, nickname, resource, require_
|
|||
from endpoints.api.build import (build_status_view, trigger_view, RepositoryBuildStatus,
|
||||
get_trigger_config)
|
||||
from endpoints.common import start_build
|
||||
from endpoints.trigger import (BuildTrigger as BuildTriggerBase, TriggerDeactivationException,
|
||||
from endpoints.trigger import (BuildTriggerHandler, TriggerDeactivationException,
|
||||
TriggerActivationException, EmptyRepositoryException,
|
||||
RepositoryReadException, TriggerStartException)
|
||||
from data import model
|
||||
|
@ -71,18 +71,17 @@ class BuildTrigger(RepositoryParamResource):
|
|||
except model.InvalidBuildTriggerException:
|
||||
raise NotFound()
|
||||
|
||||
handler = BuildTriggerBase.get_trigger_for_service(trigger.service.name)
|
||||
config_dict = get_trigger_config(trigger)
|
||||
if handler.is_active(config_dict):
|
||||
handler = BuildTriggerHandler.get_handler(trigger)
|
||||
if handler.is_active():
|
||||
try:
|
||||
handler.deactivate(trigger.auth_token, config_dict)
|
||||
handler.deactivate()
|
||||
except TriggerDeactivationException as ex:
|
||||
# We are just going to eat this error
|
||||
logger.warning('Trigger deactivation problem: %s', ex)
|
||||
|
||||
log_action('delete_repo_trigger', namespace,
|
||||
{'repo': repository, 'trigger_id': trigger_uuid,
|
||||
'service': trigger.service.name, 'config': config_dict},
|
||||
'service': trigger.service.name},
|
||||
repo=model.get_repository(namespace, repository))
|
||||
|
||||
trigger.delete_instance(recursive=True)
|
||||
|
@ -117,13 +116,13 @@ class BuildTriggerSubdirs(RepositoryParamResource):
|
|||
except model.InvalidBuildTriggerException:
|
||||
raise NotFound()
|
||||
|
||||
handler = BuildTriggerBase.get_trigger_for_service(trigger.service.name)
|
||||
user_permission = UserAdminPermission(trigger.connected_user.username)
|
||||
if user_permission.can():
|
||||
new_config_dict = request.get_json()
|
||||
handler = BuildTriggerHandler.get_handler(trigger, new_config_dict)
|
||||
|
||||
try:
|
||||
subdirs = handler.list_build_subdirs(trigger.auth_token, new_config_dict)
|
||||
subdirs = handler.list_build_subdirs()
|
||||
return {
|
||||
'subdir': subdirs,
|
||||
'status': 'success'
|
||||
|
@ -178,9 +177,8 @@ class BuildTriggerActivate(RepositoryParamResource):
|
|||
except model.InvalidBuildTriggerException:
|
||||
raise NotFound()
|
||||
|
||||
handler = BuildTriggerBase.get_trigger_for_service(trigger.service.name)
|
||||
existing_config_dict = get_trigger_config(trigger)
|
||||
if handler.is_active(existing_config_dict):
|
||||
handler = BuildTriggerHandler.get_handler(trigger)
|
||||
if handler.is_active():
|
||||
raise InvalidRequest('Trigger config is not sufficient for activation.')
|
||||
|
||||
user_permission = UserAdminPermission(trigger.connected_user.username)
|
||||
|
@ -217,8 +215,8 @@ class BuildTriggerActivate(RepositoryParamResource):
|
|||
'$token', write_token.code,
|
||||
app.config['SERVER_HOSTNAME'], path)
|
||||
|
||||
final_config, private_config = handler.activate(trigger.uuid, authed_url,
|
||||
trigger.auth_token, new_config_dict)
|
||||
handler = BuildTriggerHandler.get_handler(trigger, new_config_dict)
|
||||
final_config, private_config = handler.activate(authed_url)
|
||||
|
||||
if 'private_key' in private_config:
|
||||
trigger.private_key = private_config['private_key']
|
||||
|
@ -279,12 +277,12 @@ class BuildTriggerAnalyze(RepositoryParamResource):
|
|||
except model.InvalidBuildTriggerException:
|
||||
raise NotFound()
|
||||
|
||||
handler = BuildTriggerBase.get_trigger_for_service(trigger.service.name)
|
||||
new_config_dict = request.get_json()['config']
|
||||
handler = BuildTriggerHandler.get_handler(trigger, new_config_dict)
|
||||
|
||||
try:
|
||||
# Load the contents of the Dockerfile.
|
||||
contents = handler.load_dockerfile_contents(trigger.auth_token, new_config_dict)
|
||||
contents = handler.load_dockerfile_contents()
|
||||
if not contents:
|
||||
return {
|
||||
'status': 'error',
|
||||
|
@ -370,7 +368,7 @@ class BuildTriggerAnalyze(RepositoryParamResource):
|
|||
'is_public': found_repository.visibility.name == 'public',
|
||||
'robots': read_robots,
|
||||
'status': 'analyzed',
|
||||
'dockerfile_url': handler.dockerfile_url(trigger.auth_token, new_config_dict)
|
||||
'dockerfile_url': handler.dockerfile_url()
|
||||
}
|
||||
|
||||
except RepositoryReadException as rre:
|
||||
|
@ -420,14 +418,13 @@ class ActivateBuildTrigger(RepositoryParamResource):
|
|||
except model.InvalidBuildTriggerException:
|
||||
raise NotFound()
|
||||
|
||||
handler = BuildTriggerBase.get_trigger_for_service(trigger.service.name)
|
||||
config_dict = get_trigger_config(trigger)
|
||||
if not handler.is_active(config_dict):
|
||||
handler = BuildTriggerHandler.get_handler(trigger)
|
||||
if not handler.is_active():
|
||||
raise InvalidRequest('Trigger is not active.')
|
||||
|
||||
try:
|
||||
run_parameters = request.get_json()
|
||||
specs = handler.manual_start(trigger, run_parameters=run_parameters)
|
||||
specs = handler.manual_start(run_parameters=run_parameters)
|
||||
dockerfile_id, tags, name, subdir, metadata = specs
|
||||
|
||||
repo = model.get_repository(namespace, repository)
|
||||
|
@ -481,11 +478,11 @@ class BuildTriggerFieldValues(RepositoryParamResource):
|
|||
except model.InvalidBuildTriggerException:
|
||||
raise NotFound()
|
||||
|
||||
config = request.get_json() or json.loads(trigger.config)
|
||||
config = request.get_json() or None
|
||||
user_permission = UserAdminPermission(trigger.connected_user.username)
|
||||
if user_permission.can():
|
||||
trigger_handler = BuildTriggerBase.get_trigger_for_service(trigger.service.name)
|
||||
values = trigger_handler.list_field_values(trigger.auth_token, config, field_name)
|
||||
handler = BuildTriggerHandler.get_handler(trigger, config)
|
||||
values = handler.list_field_values(field_name)
|
||||
|
||||
if values is None:
|
||||
raise NotFound()
|
||||
|
@ -514,10 +511,13 @@ class BuildTriggerSources(RepositoryParamResource):
|
|||
|
||||
user_permission = UserAdminPermission(trigger.connected_user.username)
|
||||
if user_permission.can():
|
||||
trigger_handler = BuildTriggerBase.get_trigger_for_service(trigger.service.name)
|
||||
handler = BuildTriggerHandler.get_handler(trigger)
|
||||
|
||||
return {
|
||||
'sources': trigger_handler.list_build_sources(trigger.auth_token)
|
||||
}
|
||||
try:
|
||||
return {
|
||||
'sources': handler.list_build_sources()
|
||||
}
|
||||
except RepositoryReadException as rre:
|
||||
raise InvalidRequest(rre.message)
|
||||
else:
|
||||
raise Unauthorized()
|
||||
|
|
Reference in a new issue