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' return 'DEFAULT_INVENTORY_UPDATE_TIMEOUT'
def websocket_emit_data(self): def websocket_emit_data(self):
websocket_data = super(InventoryUpdate, self).websocket_emit_data()
if self.inventory_source.group is not None: if self.inventory_source.group is not None:
return dict(group_id=self.inventory_source.group.id) websocket_data.update(dict(group_id=self.inventory_source.group.id))
return {} return websocket_data
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
update_fields = kwargs.get('update_fields', []) update_fields = kwargs.get('update_fields', [])

View File

@@ -435,7 +435,9 @@ class ProjectUpdate(UnifiedJob, ProjectOptions, JobNotificationMixin):
return False return False
def websocket_emit_data(self): 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 @property
def task_impact(self): def task_impact(self):

View File

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