From cd084f5c60897cb77ca7792095c894d47efc9eab Mon Sep 17 00:00:00 2001 From: Wayne Witzel III Date: Thu, 17 Nov 2016 17:03:41 -0500 Subject: [PATCH] removed JobEventSerializer additions, consolidated migrations, swapped job_events and jobs channel updates --- awx/api/serializers.py | 2 -- .../migrations/0034_v310_add_workflows.py | 7 ++++- .../migrations/0051_v310_workflow_channels.py | 25 ----------------- awx/main/models/unified_jobs.py | 7 ++++- awx/main/signals.py | 4 --- .../serializers/test_job_event_serializers.py | 28 ------------------- 6 files changed, 12 insertions(+), 61 deletions(-) delete mode 100644 awx/main/migrations/0051_v310_workflow_channels.py delete mode 100644 awx/main/tests/unit/api/serializers/test_job_event_serializers.py diff --git a/awx/api/serializers.py b/awx/api/serializers.py index 2c5d4257bb..4fea827ec0 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -2476,8 +2476,6 @@ class JobEventSerializer(BaseSerializer): try: d['job']['job_template_id'] = obj.job.job_template.id d['job']['job_template_name'] = obj.job.job_template.name - d['job']['spawned_by_workflow'] = obj.job.spawned_by_workflow - d['job']['workflow_job_id'] = obj.job.workflow_job_id except (KeyError, AttributeError): pass return d diff --git a/awx/main/migrations/0034_v310_add_workflows.py b/awx/main/migrations/0034_v310_add_workflows.py index c80a4ecc88..4dfb84177a 100644 --- a/awx/main/migrations/0034_v310_add_workflows.py +++ b/awx/main/migrations/0034_v310_add_workflows.py @@ -15,6 +15,11 @@ class Migration(migrations.Migration): ] operations = [ + migrations.AlterField( + model_name='unifiedjob', + name='launch_type', + field=models.CharField(default=b'manual', max_length=20, editable=False, choices=[(b'manual', 'Manual'), (b'relaunch', 'Relaunch'), (b'callback', 'Callback'), (b'scheduled', 'Scheduled'), (b'dependency', 'Dependency'), (b'workflow', 'Workflow')]), + ), migrations.CreateModel( name='WorkflowJob', fields=[ @@ -34,7 +39,7 @@ class Migration(migrations.Migration): ('modified', models.DateTimeField(default=None, editable=False)), ('always_nodes', models.ManyToManyField(related_name='workflowjobnodes_always', to='main.WorkflowJobNode', blank=True)), ('failure_nodes', models.ManyToManyField(related_name='workflowjobnodes_failure', to='main.WorkflowJobNode', blank=True)), - ('job', models.ForeignKey(related_name='unified_job_nodes', on_delete=django.db.models.deletion.SET_NULL, default=None, blank=True, to='main.UnifiedJob', null=True)), + ('job', models.OneToOneField(related_name='unified_job_node', on_delete=django.db.models.deletion.SET_NULL, default=None, blank=True, to='main.UnifiedJob', null=True)), ('success_nodes', models.ManyToManyField(related_name='workflowjobnodes_success', to='main.WorkflowJobNode', blank=True)), ], options={ diff --git a/awx/main/migrations/0051_v310_workflow_channels.py b/awx/main/migrations/0051_v310_workflow_channels.py deleted file mode 100644 index 4406abe08f..0000000000 --- a/awx/main/migrations/0051_v310_workflow_channels.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('main', '0050_v310_JSONField_changes'), - ] - - operations = [ - migrations.AlterField( - model_name='unifiedjob', - name='launch_type', - field=models.CharField(default=b'manual', max_length=20, editable=False, choices=[(b'manual', 'Manual'), (b'relaunch', 'Relaunch'), (b'callback', 'Callback'), (b'scheduled', 'Scheduled'), (b'dependency', 'Dependency'), (b'workflow', 'Workflow')]), - ), - migrations.AlterField( - model_name='workflowjobnode', - name='job', - field=models.OneToOneField(related_name='unified_job_node', null=True, on_delete=django.db.models.deletion.SET_NULL, default=None, blank=True, to='main.UnifiedJob'), - ), - ] diff --git a/awx/main/models/unified_jobs.py b/awx/main/models/unified_jobs.py index 2a5c6dd93f..5054270bfb 100644 --- a/awx/main/models/unified_jobs.py +++ b/awx/main/models/unified_jobs.py @@ -792,7 +792,7 @@ 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 {} + return {'workflow_job_id': self.workflow_job_id} def websocket_emit_status(self, status): status_data = dict(unified_job_id=self.id, status=status) @@ -800,6 +800,11 @@ class UnifiedJob(PolymorphicModel, PasswordFieldsModel, CommonModelNameNotUnique status_data['group_name'] = 'jobs' emit_channel_notification('jobs-status_changed', status_data) + if self.spawned_by_workflow: + event_serialized['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, diff --git a/awx/main/signals.py b/awx/main/signals.py index d0e84c904c..ceda8899b1 100644 --- a/awx/main/signals.py +++ b/awx/main/signals.py @@ -45,10 +45,6 @@ def emit_job_event_detail(sender, **kwargs): event_serialized["group_name"] = "job_events" emit_channel_notification('job_events-' + str(instance.job.id), event_serialized) - if instance.job.spawned_by_workflow: - event_serialized['group_name'] = "workflow_events" - emit_channel_notification('workflow_events-' + str(instance.job.workflow_job_id), event_serialized) - def emit_ad_hoc_command_event_detail(sender, **kwargs): instance = kwargs['instance'] diff --git a/awx/main/tests/unit/api/serializers/test_job_event_serializers.py b/awx/main/tests/unit/api/serializers/test_job_event_serializers.py deleted file mode 100644 index a9c7ee7f08..0000000000 --- a/awx/main/tests/unit/api/serializers/test_job_event_serializers.py +++ /dev/null @@ -1,28 +0,0 @@ -import pytest -import mock - -from awx.api.serializers import JobEventSerializer -from awx.main.models import ( - Job, - JobTemplate, - JobEvent, -) - - -@pytest.fixture -def job_event(mocker): - job_event = mocker.MagicMock(spec=JobEvent) - - job = Job(id=1, name="job-1") - job.job_template = JobTemplate(id=1, name="job-template-1") - job_event.job = job - - return job_event - - -def test_summary_field_workflow_exists(job_event): - with mock.patch('awx.api.serializers.BaseSerializer.get_summary_fields', lambda x,y: {'job':{}}): - serializer = JobEventSerializer(job_event) - summary_fields = serializer.get_summary_fields(job_event) - assert 'spawned_by_workflow' in summary_fields['job'] - assert 'workflow_job_id' in summary_fields['job']