mirror of
https://github.com/ansible/awx.git
synced 2026-05-20 15:27:47 -02:30
Merge pull request #4111 from jangsutsr/4086_provide_linkage_from_spawned_job_to_wfj
Provide linkage from spawned job to wfj
This commit is contained in:
@@ -599,8 +599,22 @@ class UnifiedJobSerializer(BaseSerializer):
|
|||||||
res['stdout'] = reverse('api:job_stdout', args=(obj.pk,))
|
res['stdout'] = reverse('api:job_stdout', args=(obj.pk,))
|
||||||
elif isinstance(obj, AdHocCommand):
|
elif isinstance(obj, AdHocCommand):
|
||||||
res['stdout'] = reverse('api:ad_hoc_command_stdout', args=(obj.pk,))
|
res['stdout'] = reverse('api:ad_hoc_command_stdout', args=(obj.pk,))
|
||||||
|
if obj.workflow_job_id:
|
||||||
|
res['source_workflow_job'] = reverse('api:workflow_job_detail', args=(obj.workflow_job_id,))
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
def get_summary_fields(self, obj):
|
||||||
|
summary_fields = super(UnifiedJobSerializer, self).get_summary_fields(obj)
|
||||||
|
if obj.spawned_by_workflow:
|
||||||
|
summary_fields['source_workflow_job'] = {}
|
||||||
|
summary_obj = obj.unified_job_node.workflow_job
|
||||||
|
for field in SUMMARIZABLE_FK_FIELDS['job']:
|
||||||
|
val = getattr(summary_obj, field, None)
|
||||||
|
if val is not None:
|
||||||
|
summary_fields['source_workflow_job'][field] = val
|
||||||
|
|
||||||
|
return summary_fields
|
||||||
|
|
||||||
def to_representation(self, obj):
|
def to_representation(self, obj):
|
||||||
serializer_class = None
|
serializer_class = None
|
||||||
if type(self) is UnifiedJobSerializer:
|
if type(self) is UnifiedJobSerializer:
|
||||||
|
|||||||
@@ -1865,6 +1865,7 @@ class UnifiedJobAccess(BaseAccess):
|
|||||||
qs = qs.select_related(
|
qs = qs.select_related(
|
||||||
'created_by',
|
'created_by',
|
||||||
'modified_by',
|
'modified_by',
|
||||||
|
'unified_job_node__workflow_job',
|
||||||
)
|
)
|
||||||
qs = qs.prefetch_related(
|
qs = qs.prefetch_related(
|
||||||
'unified_job_template',
|
'unified_job_template',
|
||||||
|
|||||||
@@ -520,7 +520,6 @@ class UnifiedJob(PolymorphicModel, PasswordFieldsModel, CommonModelNameNotUnique
|
|||||||
related_name='%(class)s_labels'
|
related_name='%(class)s_labels'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
real_instance = self.get_real_instance()
|
real_instance = self.get_real_instance()
|
||||||
if real_instance != self:
|
if real_instance != self:
|
||||||
|
|||||||
@@ -371,4 +371,3 @@ class TaskManager():
|
|||||||
# Operations whose queries rely on modifications made during the atomic scheduling session
|
# Operations whose queries rely on modifications made during the atomic scheduling session
|
||||||
for wfj in WorkflowJob.objects.filter(id__in=finished_wfjs):
|
for wfj in WorkflowJob.objects.filter(id__in=finished_wfjs):
|
||||||
_send_notification_templates(wfj, 'succeeded' if wfj.status == 'successful' else 'failed')
|
_send_notification_templates(wfj, 'succeeded' if wfj.status == 'successful' else 'failed')
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,8 @@ def project_update(mocker):
|
|||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def job(mocker, job_template, project_update):
|
def job(mocker, job_template, project_update):
|
||||||
return mocker.MagicMock(pk=5, job_template=job_template, project_update=project_update)
|
return mocker.MagicMock(pk=5, job_template=job_template, project_update=project_update,
|
||||||
|
workflow_job_id=None)
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
|||||||
Reference in New Issue
Block a user