Fix bug by using cancel_flag.

This commit is contained in:
Aaron Tan 2016-11-02 17:36:23 -04:00
parent 3778914aa9
commit 3c0d60075c
3 changed files with 7 additions and 6 deletions

View File

@ -72,6 +72,7 @@ from awx.api.serializers import * # noqa
from awx.api.metadata import RoleMetadata
from awx.main.consumers import emit_channel_notification
from awx.main.models.unified_jobs import ACTIVE_STATES
#from awx.main.scheduler.tasks import run_job_complete
logger = logging.getLogger('awx.api.views')
@ -2873,6 +2874,8 @@ class WorkflowJobCancel(RetrieveAPIView):
obj = self.get_object()
if obj.can_cancel:
obj.cancel()
#TODO: Figure out whether an immediate schedule is needed.
#run_job_complete.delay(obj.id)
return Response(status=status.HTTP_202_ACCEPTED)
else:
return self.http_method_not_allowed(request, *args, **kwargs)

View File

@ -423,8 +423,3 @@ class WorkflowJob(UnifiedJob, WorkflowJobOptions, JobNotificationMixin, Workflow
'''
def start_celery_task(self, opts, error_callback, success_callback):
return None
def cancel(self):
if self.can_cancel:
self.status = 'canceled'
self.save(update_fields=['status'])

View File

@ -130,8 +130,11 @@ class TaskManager():
def process_finished_workflow_jobs(self, workflow_jobs):
for workflow_job in workflow_jobs:
dag = WorkflowDAG(workflow_job)
if workflow_job.status == 'canceled':
if workflow_job.cancel_flag:
workflow_job.status = 'canceled'
workflow_job.save()
dag.bfs_nodes_to_cancel()
connection.on_commit(lambda: workflow_job.websocket_emit_status(workflow_job.status))
elif dag.is_workflow_done():
if workflow_job._has_failed():
workflow_job.status = 'failed'