Make websocket events more informative

* Make sure we always populate workflow information when relevant to
  job status changes.
* Include detail about workflow job node
This commit is contained in:
Matthew Jones 2016-11-22 09:31:17 -05:00
parent 197f39ea70
commit 5df4096660
3 changed files with 17 additions and 5 deletions

View File

@ -1230,9 +1230,10 @@ class InventoryUpdate(UnifiedJob, InventorySourceOptions, JobNotificationMixin):
return 'DEFAULT_INVENTORY_UPDATE_TIMEOUT'
def websocket_emit_data(self):
websocket_data = super(InventoryUpdate, self).websocket_emit_data()
if self.inventory_source.group is not None:
return dict(group_id=self.inventory_source.group.id)
return {}
websocket_data.update(dict(group_id=self.inventory_source.group.id))
return websocket_data
def save(self, *args, **kwargs):
update_fields = kwargs.get('update_fields', [])

View File

@ -435,7 +435,9 @@ class ProjectUpdate(UnifiedJob, ProjectOptions, JobNotificationMixin):
return False
def websocket_emit_data(self):
return dict(project_id=self.project.id)
websocket_data = super(ProjectUpdate, self).websocket_emit_data()
websocket_data.update(dict(project_id=self.project.id))
return websocket_data
@property
def task_impact(self):

View File

@ -784,6 +784,12 @@ class UnifiedJob(PolymorphicModel, PasswordFieldsModel, CommonModelNameNotUnique
return self.unified_job_node.workflow_job.pk
return None
@property
def workflow_node_id(self):
if self.spawned_by_workflow:
return self.unified_job_node.pk
return None
@property
def celery_task(self):
try:
@ -808,7 +814,11 @@ class UnifiedJob(PolymorphicModel, PasswordFieldsModel, CommonModelNameNotUnique
def websocket_emit_data(self):
''' Return extra data that should be included when submitting data to the browser over the websocket connection '''
return {'workflow_job_id': self.workflow_job_id}
websocket_data = dict()
if self.spawned_by_workflow:
websocket_data.update(dict(workflow_job_id=self.workflow_job_id,
workflow_node_id=self.workflow_node_id))
return websocket_data
def websocket_emit_status(self, status):
status_data = dict(unified_job_id=self.id, status=status)
@ -820,7 +830,6 @@ class UnifiedJob(PolymorphicModel, PasswordFieldsModel, CommonModelNameNotUnique
status_data['group_name'] = "workflow_events"
emit_channel_notification('workflow_events-' + str(self.workflow_job_id), status_data)
def notification_data(self):
return dict(id=self.id,
name=self.name,