Adding a method of cancelling a build based on etcd message.

This commit is contained in:
Charlton Austin 2016-10-25 12:50:58 -04:00
parent 6f815907a4
commit 2147005d2c
2 changed files with 38 additions and 4 deletions

View file

@ -161,11 +161,22 @@ def create_cancel_build_in_queue(build, build_queue):
if build.phase != BUILD_PHASE.WAITING or not build.queue_id:
return False
return build_queue.cancel(build.queue_id)
cancelled = build_queue.cancel(build.queue_id)
if cancelled:
# Delete the build row.
build.delete_instance()
return cancelled
return cancel_build
def create_cancel_build_in_manager(build):
""" A function to cancel the build before it starts to push """
def cancel_build():
return False
return cancel_build
def cancel_repository_build(build, build_queue):
""" This tries to cancel the build returns true if request is successful false if it can't be cancelled """
with db_transaction():
@ -176,11 +187,10 @@ def cancel_repository_build(build, build_queue):
except RepositoryBuild.DoesNotExist:
return False
cancel_builds = [create_cancel_build_in_queue(build, build_queue), ]
cancel_builds = [create_cancel_build_in_queue(build, build_queue),
create_cancel_build_in_manager(build), ]
for cancelled in cancel_builds:
if cancelled():
# Delete the build row.
build.delete_instance()
return True
return False