mirror of
https://github.com/ansible/awx.git
synced 2026-02-16 18:50:04 -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:
@@ -215,9 +215,6 @@ class AdHocCommand(UnifiedJob, JobNotificationMixin):
|
|||||||
self.name = Truncator(u': '.join(filter(None, (self.module_name, self.module_args)))).chars(512)
|
self.name = Truncator(u': '.join(filter(None, (self.module_name, self.module_args)))).chars(512)
|
||||||
if 'name' not in update_fields:
|
if 'name' not in update_fields:
|
||||||
update_fields.append('name')
|
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)
|
super(AdHocCommand, self).save(*args, **kwargs)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|||||||
@@ -464,11 +464,20 @@ class ExecutionEnvironmentMixin(models.Model):
|
|||||||
|
|
||||||
def resolve_execution_environment(self):
|
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:
|
if self.execution_environment is not None:
|
||||||
return self.execution_environment
|
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
|
return self.project.default_environment
|
||||||
if getattr(self, 'organization', None) and self.organization.default_environment is not None:
|
if getattr(self, 'organization', None) and self.organization.default_environment is not None:
|
||||||
return self.organization.default_environment
|
return self.organization.default_environment
|
||||||
|
|||||||
@@ -366,8 +366,6 @@ class UnifiedJobTemplate(PolymorphicModel, CommonModelNameNotUnique, ExecutionEn
|
|||||||
for fd, val in eager_fields.items():
|
for fd, val in eager_fields.items():
|
||||||
setattr(unified_job, fd, val)
|
setattr(unified_job, fd, val)
|
||||||
|
|
||||||
unified_job.execution_environment = self.resolve_execution_environment()
|
|
||||||
|
|
||||||
# NOTE: slice workflow jobs _get_parent_field_name method
|
# NOTE: slice workflow jobs _get_parent_field_name method
|
||||||
# is not correct until this is set
|
# is not correct until this is set
|
||||||
if not parent_field_name:
|
if not parent_field_name:
|
||||||
|
|||||||
@@ -3059,8 +3059,8 @@ class AWXReceptorJob:
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def pod_definition(self):
|
def pod_definition(self):
|
||||||
if self.task:
|
if self.task and self.task.instance.execution_environment:
|
||||||
ee = self.task.instance.resolve_execution_environment()
|
ee = self.task.instance.execution_environment
|
||||||
else:
|
else:
|
||||||
ee = get_default_execution_environment()
|
ee = get_default_execution_environment()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user