Pass trigger information on build status. Set up a trigger for the sample building repository. Allow to list the builds started from a trigger. Protect the callback with the proper auth for creating a trigger on a repo.

This commit is contained in:
jakedt 2014-02-19 16:08:33 -05:00
parent f60f9eb62a
commit 9e426816a5
7 changed files with 94 additions and 43 deletions

View file

@ -1299,35 +1299,38 @@ def load_token_data(code):
def get_repository_build(namespace_name, repository_name, build_uuid):
joined = RepositoryBuild.select().join(Repository)
fetched = list(joined.where(Repository.name == repository_name,
Repository.namespace == namespace_name,
RepositoryBuild.uuid == build_uuid))
try:
query = list_repository_builds(namespace_name, repository_name)
return query.where(RepositoryBuild.uuid == build_uuid).get()
if not fetched:
except RepositoryBuild.DoesNotExist:
msg = 'Unable to locate a build by id: %s' % build_uuid
raise InvalidRepositoryBuildException(msg)
return fetched[0]
def list_repository_builds(namespace_name, repository_name,
include_inactive=True):
joined = RepositoryBuild.select().join(Repository)
filtered = joined
query = (RepositoryBuild
.select(RepositoryBuild, RepositoryBuildTrigger, BuildTriggerService)
.join(Repository)
.switch(RepositoryBuild)
.join(RepositoryBuildTrigger, JOIN_LEFT_OUTER)
.join(BuildTriggerService, JOIN_LEFT_OUTER)
.where(Repository.name == repository_name,
Repository.namespace == namespace_name))
if not include_inactive:
filtered = filtered.where(RepositoryBuild.phase != 'error',
RepositoryBuild.phase != 'complete')
fetched = list(filtered.where(Repository.name == repository_name,
Repository.namespace == namespace_name))
return fetched
query = query.where(RepositoryBuild.phase != 'error',
RepositoryBuild.phase != 'complete')
return query
def create_repository_build(repo, access_token, resource_key, tag,
display_name):
display_name, trigger=None):
return RepositoryBuild.create(repository=repo, access_token=access_token,
resource_key=resource_key, tag=tag,
display_name=display_name)
display_name=display_name, trigger=trigger)
def create_webhook(repo, params_obj):
@ -1386,11 +1389,8 @@ def log_action(kind_name, user_or_organization_name, performer=None,
metadata_json=json.dumps(metadata), datetime=timestamp)
def create_build_trigger(namespace_name, repository_name, service_name,
auth_token, user):
def create_build_trigger(repo, service_name, auth_token, user):
service = BuildTriggerService.get(name=service_name)
repo = Repository.get(namespace=namespace_name, name=repository_name)
trigger = RepositoryBuildTrigger.create(repository=repo, service=service,
auth_token=auth_token,
connected_user=user)
@ -1428,3 +1428,14 @@ def list_build_triggers(namespace_name, repository_name):
def delete_build_trigger(namespace_name, repository_name, trigger_uuid):
trigger = get_build_trigger(namespace_name, repository_name, trigger_uuid)
trigger.delete_instance()
def list_trigger_builds(namespace_name, repository_name, trigger_uuid,
limit=None):
query = (list_repository_builds(namespace_name, repository_name)
.where(RepositoryBuildTrigger.uuid == trigger_uuid))
if limit:
return query.limit(limit)
else:
return query