mirror of
https://github.com/ansible/awx.git
synced 2026-05-07 01:17:37 -02:30
removed JobEventSerializer additions, consolidated migrations, swapped job_events and jobs channel updates
This commit is contained in:
@@ -2476,8 +2476,6 @@ class JobEventSerializer(BaseSerializer):
|
|||||||
try:
|
try:
|
||||||
d['job']['job_template_id'] = obj.job.job_template.id
|
d['job']['job_template_id'] = obj.job.job_template.id
|
||||||
d['job']['job_template_name'] = obj.job.job_template.name
|
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):
|
except (KeyError, AttributeError):
|
||||||
pass
|
pass
|
||||||
return d
|
return d
|
||||||
|
|||||||
@@ -15,6 +15,11 @@ class Migration(migrations.Migration):
|
|||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
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(
|
migrations.CreateModel(
|
||||||
name='WorkflowJob',
|
name='WorkflowJob',
|
||||||
fields=[
|
fields=[
|
||||||
@@ -34,7 +39,7 @@ class Migration(migrations.Migration):
|
|||||||
('modified', models.DateTimeField(default=None, editable=False)),
|
('modified', models.DateTimeField(default=None, editable=False)),
|
||||||
('always_nodes', models.ManyToManyField(related_name='workflowjobnodes_always', to='main.WorkflowJobNode', blank=True)),
|
('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)),
|
('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)),
|
('success_nodes', models.ManyToManyField(related_name='workflowjobnodes_success', to='main.WorkflowJobNode', blank=True)),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
|
|||||||
@@ -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'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
@@ -792,7 +792,7 @@ 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 {}
|
return {'workflow_job_id': self.workflow_job_id}
|
||||||
|
|
||||||
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)
|
||||||
@@ -800,6 +800,11 @@ class UnifiedJob(PolymorphicModel, PasswordFieldsModel, CommonModelNameNotUnique
|
|||||||
status_data['group_name'] = 'jobs'
|
status_data['group_name'] = 'jobs'
|
||||||
emit_channel_notification('jobs-status_changed', status_data)
|
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):
|
def notification_data(self):
|
||||||
return dict(id=self.id,
|
return dict(id=self.id,
|
||||||
name=self.name,
|
name=self.name,
|
||||||
|
|||||||
@@ -45,10 +45,6 @@ def emit_job_event_detail(sender, **kwargs):
|
|||||||
event_serialized["group_name"] = "job_events"
|
event_serialized["group_name"] = "job_events"
|
||||||
emit_channel_notification('job_events-' + str(instance.job.id), event_serialized)
|
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):
|
def emit_ad_hoc_command_event_detail(sender, **kwargs):
|
||||||
instance = kwargs['instance']
|
instance = kwargs['instance']
|
||||||
|
|||||||
@@ -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']
|
|
||||||
Reference in New Issue
Block a user