mirror of
https://github.com/ansible/awx.git
synced 2026-01-11 18:09:57 -03:30
Include the EE set on a workflow template in the resolver hierarchy
This step comes immediately after checking the actual job/template for an explicitly set EE. Note that now, because of how jobs are spawned off of workflow nodes, the call to .resolve_execution_environment() no longer happens in .create_unified_job(). The job instance within .create_unified_job() doesn't yet have access to the node that it will be attached to, making it impossible to use this information in the resolver if called there.
This commit is contained in:
parent
4e129d3d04
commit
d3cc439fa8
@ -215,9 +215,6 @@ class AdHocCommand(UnifiedJob, JobNotificationMixin):
|
||||
self.name = Truncator(u': '.join(filter(None, (self.module_name, self.module_args)))).chars(512)
|
||||
if 'name' not in update_fields:
|
||||
update_fields.append('name')
|
||||
if not self.execution_environment_id:
|
||||
self.execution_environment = self.resolve_execution_environment()
|
||||
update_fields.append('execution_environment')
|
||||
super(AdHocCommand, self).save(*args, **kwargs)
|
||||
|
||||
@property
|
||||
|
||||
@ -464,11 +464,20 @@ class ExecutionEnvironmentMixin(models.Model):
|
||||
|
||||
def resolve_execution_environment(self):
|
||||
"""
|
||||
Return the execution environment that should be used when creating a new job.
|
||||
Return the execution environment that should be used when executing a job.
|
||||
"""
|
||||
if self.execution_environment is not None:
|
||||
return self.execution_environment
|
||||
if getattr(self, 'project_id', None) and self.project.default_environment is not None:
|
||||
template = getattr(self, 'unified_job_template', None)
|
||||
if template is not None and template.execution_environment is not None:
|
||||
return template.execution_environment
|
||||
wf_node = getattr(self, 'unified_job_node', None)
|
||||
while wf_node is not None:
|
||||
wf_template = wf_node.workflow_job.workflow_job_template
|
||||
if wf_template.execution_environment is not None:
|
||||
return wf_template.execution_environment
|
||||
wf_node = getattr(wf_node.workflow_job, 'unified_job_node', None)
|
||||
if getattr(self, 'project', None) and self.project.default_environment is not None:
|
||||
return self.project.default_environment
|
||||
if getattr(self, 'organization', None) and self.organization.default_environment is not None:
|
||||
return self.organization.default_environment
|
||||
|
||||
@ -366,8 +366,6 @@ class UnifiedJobTemplate(PolymorphicModel, CommonModelNameNotUnique, ExecutionEn
|
||||
for fd, val in eager_fields.items():
|
||||
setattr(unified_job, fd, val)
|
||||
|
||||
unified_job.execution_environment = self.resolve_execution_environment()
|
||||
|
||||
# NOTE: slice workflow jobs _get_parent_field_name method
|
||||
# is not correct until this is set
|
||||
if not parent_field_name:
|
||||
|
||||
@ -3059,8 +3059,8 @@ class AWXReceptorJob:
|
||||
|
||||
@property
|
||||
def pod_definition(self):
|
||||
if self.task:
|
||||
ee = self.task.instance.resolve_execution_environment()
|
||||
if self.task and self.task.instance.execution_environment:
|
||||
ee = self.task.instance.execution_environment
|
||||
else:
|
||||
ee = get_default_execution_environment()
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user