Make sure we actually emit the status during status change websocket events

This commit is contained in:
Matthew Jones 2014-04-21 14:56:35 -04:00
parent 444430ed5b
commit c0f821cdbf
3 changed files with 6 additions and 6 deletions

View File

@ -175,7 +175,7 @@ def rebuild_graph(message):
task.status = 'failed'
task.job_explanation += "Task was marked as running in Tower but was not present in Celery so it has been marked as failed"
task.save()
emit_websocket_notification('/socket.io/jobs', 'status_changed', dict(unified_job_id=task.id))
emit_websocket_notification('/socket.io/jobs', 'status_changed', dict(unified_job_id=task.id, status='failed'))
running_tasks.pop(running_tasks.index(task))
print("Task %s appears orphaned... marking as failed" % task)

View File

@ -583,7 +583,7 @@ class UnifiedJob(PolymorphicModel, PasswordFieldsModel, CommonModelNameNotUnique
if not all(opts.values()):
return False
self.update_fields(start_args=json.dumps(kwargs), status='pending')
emit_websocket_notification('/socket.io/jobs', 'status_changed', dict(unified_job_id=self.id))
emit_websocket_notification('/socket.io/jobs', 'status_changed', dict(unified_job_id=self.id, status='pending'))
task_type = get_type_for_model(self)
# notify_task_runner.delay(dict(task_type=task_type, id=self.id, metadata=kwargs))
return True
@ -623,7 +623,7 @@ class UnifiedJob(PolymorphicModel, PasswordFieldsModel, CommonModelNameNotUnique
instance.job_explanation = 'Forced cancel'
update_fields.append('job_explanation')
instance.save(update_fields=update_fields)
emit_websocket_notification('/socket.io/jobs', 'status_changed', dict(unified_job_id=instance.id))
emit_websocket_notification('/socket.io/jobs', 'status_changed', dict(unified_job_id=instance.id, status='canceled'))
except: # FIXME: Log this exception!
if settings.DEBUG:
raise
@ -633,7 +633,7 @@ class UnifiedJob(PolymorphicModel, PasswordFieldsModel, CommonModelNameNotUnique
if not self.cancel_flag:
self.cancel_flag = True
self.save(update_fields=['cancel_flag'])
emit_websocket_notification('/socket.io/jobs', 'status_changed', dict(unified_job_id=self.id))
emit_websocket_notification('/socket.io/jobs', 'status_changed', dict(unified_job_id=self.id, status='canceled'))
if settings.BROKER_URL.startswith('amqp://'):
self._force_cancel()
return self.cancel_flag

View File

@ -84,7 +84,7 @@ def tower_periodic_scheduler(self):
new_unified_job.status = 'failed'
new_unified_job.job_explanation = "Scheduled job could not start because it was not in the right state or required manual credentials"
new_unified_job.save(update_fields=['job_status', 'job_explanation'])
emit_websocket_notification('/socket.io/jobs', 'status_changed', dict(unified_job_id=new_unified_job.id))
emit_websocket_notification('/socket.io/jobs', 'status_changed', dict(unified_job_id=new_unified_job.id, status='failed'))
@task()
def notify_task_runner(metadata_dict):
@ -124,7 +124,7 @@ def handle_work_error(self, task_id, subtasks=None):
instance.job_explanation = "Previous Task Failed: %s for %s with celery task id: %s" % \
(first_task_type, first_task_name, task_id)
instance.save()
emit_websocket_notification('/socket.io/jobs', 'status_changed', dict(unified_job_id=instance.id))
emit_websocket_notification('/socket.io/jobs', 'status_changed', dict(unified_job_id=instance.id, status='failed'))
class BaseTask(Task):