From 816e491d1718ffd1e323e0cd0ff8ef3ee4a967c1 Mon Sep 17 00:00:00 2001 From: Alan Rominger Date: Mon, 19 Sep 2022 16:03:31 -0400 Subject: [PATCH] Fix another bug applying extra_vars to incompatible job types --- awx/main/models/jobs.py | 8 ++++++-- awx/main/models/workflow.py | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/awx/main/models/jobs.py b/awx/main/models/jobs.py index 1713b6dc43..e9cdfd5ee7 100644 --- a/awx/main/models/jobs.py +++ b/awx/main/models/jobs.py @@ -965,10 +965,14 @@ class LaunchTimeConfigBase(BaseModel): 'execution_environment', # already a unified job and unified JT field ) - def prompts_dict(self, display=False): + def prompts_dict(self, display=False, for_cls=None): data = {} + if for_cls: + cls = for_cls + else: + cls = JobTemplate # Some types may have different prompts, but always subset of JT prompts - for prompt_name in JobTemplate.get_ask_mapping().keys(): + for prompt_name in cls.get_ask_mapping().keys(): try: field = self._meta.get_field(prompt_name) except FieldDoesNotExist: diff --git a/awx/main/models/workflow.py b/awx/main/models/workflow.py index 3bc3ee2ec5..f97b4e93b8 100644 --- a/awx/main/models/workflow.py +++ b/awx/main/models/workflow.py @@ -304,8 +304,8 @@ class WorkflowJobNode(WorkflowNodeBase): wj_special_passwords = {} ujt_obj = self.unified_job_template if ujt_obj is not None: - node_prompts_data = self.prompts_dict() - wj_prompts_data = self.workflow_job.prompts_dict() + node_prompts_data = self.prompts_dict(for_cls=ujt_obj.__class__) + wj_prompts_data = self.workflow_job.prompts_dict(for_cls=ujt_obj.__class__) # Explanation - special historical case # WFJT extra_vars ignored JobTemplate.ask_variables_on_launch, bypassing _accept_or_ignore_job_kwargs # inventory and others are only accepted if JT prompts for it with related ask_ field