mirror of
https://github.com/ansible/awx.git
synced 2026-05-07 01:17:37 -02:30
ensure that launching respects default values
This commit is contained in:
@@ -2450,9 +2450,9 @@ class JobTemplateSurveySpec(GenericAPIView):
|
|||||||
return Response(dict(error=_("'spec' must be a list of items.")), status=status.HTTP_400_BAD_REQUEST)
|
return Response(dict(error=_("'spec' must be a list of items.")), status=status.HTTP_400_BAD_REQUEST)
|
||||||
if len(new_spec["spec"]) < 1:
|
if len(new_spec["spec"]) < 1:
|
||||||
return Response(dict(error=_("'spec' doesn't contain any items.")), status=status.HTTP_400_BAD_REQUEST)
|
return Response(dict(error=_("'spec' doesn't contain any items.")), status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
idx = 0
|
idx = 0
|
||||||
variable_set = set()
|
variable_set = set()
|
||||||
|
|
||||||
for survey_item in new_spec["spec"]:
|
for survey_item in new_spec["spec"]:
|
||||||
if not isinstance(survey_item, dict):
|
if not isinstance(survey_item, dict):
|
||||||
return Response(dict(error=_("Survey question %s is not a json object.") % str(idx)), status=status.HTTP_400_BAD_REQUEST)
|
return Response(dict(error=_("Survey question %s is not a json object.") % str(idx)), status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|||||||
@@ -105,14 +105,6 @@ class SurveyJobTemplateMixin(models.Model):
|
|||||||
# Job Template extra_vars
|
# Job Template extra_vars
|
||||||
extra_vars = self.extra_vars_dict
|
extra_vars = self.extra_vars_dict
|
||||||
|
|
||||||
# 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.get('type') == 'password':
|
|
||||||
if 'default' in survey_element and survey_element['default'].startswith('$encrypted$'):
|
|
||||||
continue
|
|
||||||
extra_vars[survey_element['variable']] = survey_element['default']
|
|
||||||
|
|
||||||
# transform to dict
|
# transform to dict
|
||||||
if 'extra_vars' in kwargs:
|
if 'extra_vars' in kwargs:
|
||||||
kwargs_extra_vars = kwargs['extra_vars']
|
kwargs_extra_vars = kwargs['extra_vars']
|
||||||
@@ -120,6 +112,18 @@ class SurveyJobTemplateMixin(models.Model):
|
|||||||
else:
|
else:
|
||||||
kwargs_extra_vars = {}
|
kwargs_extra_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.get('type') == 'password':
|
||||||
|
default = survey_element.get('default', None)
|
||||||
|
variable_key = survey_element['variable']
|
||||||
|
if default is not None and variable_key in kwargs_extra_vars:
|
||||||
|
value = kwargs_extra_vars[variable_key]
|
||||||
|
if value.startswith('$encrypted$') and value != default:
|
||||||
|
kwargs_extra_vars[variable_key] = default
|
||||||
|
extra_vars[survey_element['variable']] = survey_element['default']
|
||||||
|
|
||||||
# Overwrite job template extra vars with explicit job extra vars
|
# Overwrite job template extra vars with explicit job extra vars
|
||||||
# and add on job extra vars
|
# and add on job extra vars
|
||||||
extra_vars.update(kwargs_extra_vars)
|
extra_vars.update(kwargs_extra_vars)
|
||||||
@@ -150,7 +154,6 @@ class SurveyJobTemplateMixin(models.Model):
|
|||||||
if 'max' in survey_element and survey_element['max'] not in ["", None] and len(data[survey_element['variable']]) > int(survey_element['max']):
|
if 'max' in survey_element and survey_element['max'] not in ["", None] and len(data[survey_element['variable']]) > int(survey_element['max']):
|
||||||
errors.append("'%s' value %s is too large (must be no more than %s)." %
|
errors.append("'%s' value %s is too large (must be no more than %s)." %
|
||||||
(survey_element['variable'], data[survey_element['variable']], survey_element['max']))
|
(survey_element['variable'], data[survey_element['variable']], survey_element['max']))
|
||||||
|
|
||||||
elif survey_element['type'] == 'integer':
|
elif survey_element['type'] == 'integer':
|
||||||
if survey_element['variable'] in data:
|
if survey_element['variable'] in data:
|
||||||
if type(data[survey_element['variable']]) != int:
|
if type(data[survey_element['variable']]) != int:
|
||||||
|
|||||||
Reference in New Issue
Block a user