Added ‘launched_by’ property and ‘ancestor_job’ property in UnifiedJob class

'launched_by’ property returns summary  { id,type,name,url } of object that launched the current UnifiedJob
'ancestor_job’ property returns summary { id,type,name,url } of the first workflow in case the current UnifiedJob was started by a workflow or a workflow chain
Added ‘launched_by’ field and ‘get_launched_by’ function in ‘UnifiedJobSerializer’ , to expose the ‘launched_by’ field in GET ‘api/v2/unified_job/id’ response
Added ‘ancestor_job’ field in the summary field of UnifiedJob in the GET ‘api/v2/unified_job/id’ response
This commit is contained in:
fedora
2021-02-01 11:43:50 -05:00
parent 633f5419e0
commit e7e18b854f
2 changed files with 43 additions and 0 deletions
+26
View File
@@ -1483,3 +1483,29 @@ class UnifiedJob(
else:
msg = f"{self._meta.model_name}-{self.id} {state.replace('_', ' ')}"
logger_job_lifecycle.debug(msg, extra=extra)
@property
def launched_by(self):
ancestor_job = self.ancestor_job
if ancestor_job.launch_type == "dependency":
return {'id': None, 'name': 'Generated by AWX', 'type': 'Dependency', 'url': None}
attr = {
"manual": "created_by",
"relaunch": "created_by",
"scheduled": "schedule",
"workflow": "workflow",
"webhook": "job_template",
"sync": "project",
"scm": "inventory",
}
obj = getattr(ancestor_job, attr.get(ancestor_job.launch_type, ''), None)
if obj is not None:
return {'id': obj.id, 'name': getattr(obj, 'name', None) or obj.username, 'type': get_type_for_model(obj), 'url': obj.get_absolute_url()}
return {}
@property
def ancestor_job(self):
return self.get_workflow_job().ancestor_job if self.spawned_by_workflow else self