Merge pull request #917 from ryanpetrello/more-stdout-event-polish

more stdout event polish
This commit is contained in:
Ryan Petrello 2018-01-04 14:54:46 -05:00 committed by GitHub
commit 4707b5e020
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 26 deletions

View File

@ -43,44 +43,35 @@ def get_current_user_or_none():
return u
def emit_job_event_detail(sender, **kwargs):
def emit_event_detail(serializer, relation, **kwargs):
instance = kwargs['instance']
created = kwargs['created']
if created:
event_serialized = JobEventWebSocketSerializer(instance).data
consumers.emit_channel_notification('job_events-' + str(instance.job.id), event_serialized)
event_serializer = serializer(instance)
consumers.emit_channel_notification(
'-'.join([event_serializer.get_group_name(instance), str(getattr(instance, relation))]),
event_serializer.data
)
def emit_job_event_detail(sender, **kwargs):
emit_event_detail(JobEventWebSocketSerializer, 'job_id', **kwargs)
def emit_ad_hoc_command_event_detail(sender, **kwargs):
instance = kwargs['instance']
created = kwargs['created']
if created:
event_serialized = AdHocCommandEventWebSocketSerializer(instance).data
consumers.emit_channel_notification('ad_hoc_command_events-' + str(instance.ad_hoc_command_id), event_serialized)
emit_event_detail(AdHocCommandEventWebSocketSerializer, 'ad_hoc_command_id', **kwargs)
def emit_project_update_event_detail(sender, **kwargs):
instance = kwargs['instance']
created = kwargs['created']
if created:
event_serialized = ProjectUpdateEventWebSocketSerializer(instance).data
consumers.emit_channel_notification('project_update_events-' + str(instance.project_update_id), event_serialized)
emit_event_detail(ProjectUpdateEventWebSocketSerializer, 'project_update_id', **kwargs)
def emit_inventory_update_event_detail(sender, **kwargs):
instance = kwargs['instance']
created = kwargs['created']
if created:
event_serialized = InventoryUpdateEventWebSocketSerializer(instance).data
consumers.emit_channel_notification('inventory_update_events-' + str(instance.inventory_update_id), event_serialized)
emit_event_detail(InventoryUpdateEventWebSocketSerializer, 'inventory_update_id', **kwargs)
def emit_system_job_event_detail(sender, **kwargs):
instance = kwargs['instance']
created = kwargs['created']
if created:
event_serialized = SystemJobEventWebSocketSerializer(instance).data
consumers.emit_channel_notification('system_job_events-' + str(instance.system_job_id), event_serialized)
emit_event_detail(SystemJobEventWebSocketSerializer, 'system_job_id', **kwargs)
def emit_update_inventory_computed_fields(sender, **kwargs):

View File

@ -16,19 +16,22 @@ event group and event type which we later use in our wire protocol to control me
You can connect to the Tower channels implementation using any standard websocket library but pointing it to `/websocket`. You must
provide a valid Auth Token in the request URL.
Once you''ve connected you are not subscribed to any event groups. You subscribe by sending a json request that looks like the following:
Once you've connected, you are not subscribed to any event groups. You subscribe by sending a json request that looks like the following:
'groups': {
'jobs': ['status_changed', 'summary'],
'schedules': ['changed'],
'ad_hoc_command_events': [ids...],
'job_events': [ids...],
'workflow_events': [ids...]
'workflow_events': [ids...],
'project_update_events': [ids...],
'inventory_update_events': [ids...],
'system_job_events': [ids...],
'control': ['limit_reached'],
}
These map to the event group and event type you are interested in. Sending in a new groups dictionary will clear all of your previously
subscribed groups before subscribing to the newly requested ones. This is intentional makes the single page navigation much easier since
subscribed groups before subscribing to the newly requested ones. This is intentional, and makes the single page navigation much easier since
you only need to care about current subscriptions.
## Deployment