Skip to content

Commit

Permalink
Move the resolve_execution_environment method to the mixin class
Browse files Browse the repository at this point in the history
so that it can be used with AdHocCommands as well.
  • Loading branch information
jbradberry authored and shanemcd committed Nov 23, 2020
1 parent 0259300 commit c706bca
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 20 deletions.
4 changes: 2 additions & 2 deletions awx/main/models/ad_hoc_commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -198,8 +198,8 @@ def task_impact(self):
def copy(self):
data = {}
for field in ('job_type', 'inventory_id', 'limit', 'credential_id',
'module_name', 'module_args', 'forks', 'verbosity',
'extra_vars', 'become_enabled', 'diff_mode'):
'execution_environment_id', 'module_name', 'module_args',
'forks', 'verbosity', 'extra_vars', 'become_enabled', 'diff_mode'):
data[field] = getattr(self, field)
return AdHocCommand.objects.create(**data)

Expand Down
19 changes: 19 additions & 0 deletions awx/main/models/mixins.py
Original file line number Diff line number Diff line change
Expand Up @@ -455,6 +455,25 @@ class Meta:
help_text=_('The container image to be used for execution.'),
)

def resolve_execution_environment(self):
"""
Return the execution environment that should be used when creating a new job.
"""
from awx.main.models.execution_environments import ExecutionEnvironment

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:
return self.project.default_environment
if getattr(self, 'organization', None) and self.organization.default_environment is not None:
return self.organization.default_environment
if getattr(self, 'inventory', None) and self.inventory.organization is not None:
if self.inventory.organization.default_environment is not None:
return self.inventory.organization.default_environment
if settings.DEFAULT_EXECUTION_ENVIRONMENT is not None:
return settings.DEFAULT_EXECUTION_ENVIRONMENT
return ExecutionEnvironment.objects.filter(organization=None, managed_by_tower=True).first()


class CustomVirtualEnvMixin(models.Model):
class Meta:
Expand Down
18 changes: 0 additions & 18 deletions awx/main/models/unified_jobs.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@
from awx.main.dispatch.control import Control as ControlDispatcher
from awx.main.registrar import activity_stream_registrar
from awx.main.models.mixins import ResourceMixin, TaskManagerUnifiedJobMixin, ExecutionEnvironmentMixin
from awx.main.models.execution_environments import ExecutionEnvironment
from awx.main.utils import (
camelcase_to_underscore, get_model_for_type,
encrypt_dict, decrypt_field, _inventory_updates,
Expand Down Expand Up @@ -339,23 +338,6 @@ def notification_templates(self):
from awx.main.models.notifications import NotificationTemplate
return NotificationTemplate.objects.none()

def resolve_execution_environment(self):
"""
Return the execution environment that should be used when creating a new 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:
return self.project.default_environment
if getattr(self, 'organization', None) and self.organization.default_environment is not None:
return self.organization.default_environment
if getattr(self, 'inventory', None) and self.inventory.organization is not None:
if self.inventory.organization.default_environment is not None:
return self.inventory.organization.default_environment
if settings.DEFAULT_EXECUTION_ENVIRONMENT is not None:
return settings.DEFAULT_EXECUTION_ENVIRONMENT
return ExecutionEnvironment.objects.filter(organization=None, managed_by_tower=True).first()

def create_unified_job(self, **kwargs):
'''
Create a new unified job based on this unified job template.
Expand Down
3 changes: 3 additions & 0 deletions awx/main/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -881,6 +881,9 @@ def get_path_to(self, *args):
return os.path.abspath(os.path.join(os.path.dirname(__file__), *args))

def build_execution_environment_params(self, instance):
if instance.execution_environment_id is None:
self.update_model(instance.pk, execution_environment=instance.resolve_execution_environment())

image = instance.execution_environment.image
params = {
"container_image": image,
Expand Down

0 comments on commit c706bca

Please sign in to comment.