diff --git a/awx/main/management/commands/run_task_system.py b/awx/main/management/commands/run_task_system.py index 1b2c776b3c..3a88fb4124 100644 --- a/awx/main/management/commands/run_task_system.py +++ b/awx/main/management/commands/run_task_system.py @@ -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) diff --git a/awx/main/models/unified_jobs.py b/awx/main/models/unified_jobs.py index 58143eb48a..d8ba7e5e6c 100644 --- a/awx/main/models/unified_jobs.py +++ b/awx/main/models/unified_jobs.py @@ -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 diff --git a/awx/main/tasks.py b/awx/main/tasks.py index 5dd9096464..f7fbd5c92e 100644 --- a/awx/main/tasks.py +++ b/awx/main/tasks.py @@ -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):