mirror of
https://github.com/ansible/awx.git
synced 2026-03-22 19:35:02 -02:30
correctly inherit extra_vars
* inherit extra_vars from job_template * overwrite with extra vars survey default vars * overwrite with job extra_vars * bypass extra_vars inherit logic for job relaunch * with tests
This commit is contained in:
@@ -284,15 +284,35 @@ class JobTemplate(UnifiedJobTemplate, JobOptions):
|
||||
return errors
|
||||
|
||||
def _update_unified_job_kwargs(self, **kwargs):
|
||||
# Overwrite job extra_vars with job template extra vars
|
||||
if 'launch_type' in kwargs and kwargs['launch_type'] == 'relaunch':
|
||||
return kwargs
|
||||
|
||||
# Job Template extra_vars
|
||||
extra_vars = self.extra_vars_dict
|
||||
|
||||
# Overwrite with job template survey default vars
|
||||
# Overwrite with job template extra vars with survey default vars
|
||||
if self.survey_enabled and 'spec' in self.survey_spec:
|
||||
for survey_element in self.survey_spec.get("spec", []):
|
||||
if survey_element['default']:
|
||||
extra_vars[survey_element['variable']] = survey_element['default']
|
||||
|
||||
# transform to dict
|
||||
if 'extra_vars' in kwargs:
|
||||
kwargs_extra_vars = kwargs['extra_vars']
|
||||
if not isinstance(kwargs_extra_vars, dict):
|
||||
try:
|
||||
kwargs_extra_vars = json.loads(kwargs_extra_vars)
|
||||
except Exception:
|
||||
try:
|
||||
yaml.safe_load(kwargs_extra_vars)
|
||||
except:
|
||||
kwargs_extra_vars = {}
|
||||
else:
|
||||
kwargs_extra_vars = {}
|
||||
|
||||
# Overwrite job template extra vars with explicit job extra vars
|
||||
# and add on job extra vars
|
||||
extra_vars.update(kwargs_extra_vars)
|
||||
kwargs['extra_vars'] = json.dumps(extra_vars)
|
||||
return kwargs
|
||||
|
||||
|
||||
@@ -343,6 +343,7 @@ class UnifiedJob(PolymorphicModel, PasswordFieldsModel, CommonModelNameNotUnique
|
||||
|
||||
LAUNCH_TYPE_CHOICES = [
|
||||
('manual', _('Manual')), # Job was started manually by a user.
|
||||
('relaunch', _('Relaunch')), # Job was started via relaunch.
|
||||
('callback', _('Callback')), # Job was started via host callback.
|
||||
('scheduled', _('Scheduled')), # Job was started from a schedule.
|
||||
('dependency', _('Dependency')), # Job was started as a dependency of another job.
|
||||
|
||||
Reference in New Issue
Block a user