From da887241aa66faa5035c2477f809c569f31eb751 Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Fri, 3 Feb 2017 20:21:56 -0500 Subject: [PATCH] allow JT start on callback if mandatory survey variables are there --- awx/api/views.py | 2 +- awx/main/models/jobs.py | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/awx/api/views.py b/awx/api/views.py index 0b1fd24c9c..2cbbe1f104 100644 --- a/awx/api/views.py +++ b/awx/api/views.py @@ -2702,7 +2702,7 @@ class JobTemplateCallback(GenericAPIView): return Response(data, status=status.HTTP_400_BAD_REQUEST) else: host = list(matching_hosts)[0] - if not job_template.can_start_without_user_input(): + if not job_template.can_start_without_user_input(callback_extra_vars=extra_vars): data = dict(msg=_('Cannot start automatically, user input required!')) return Response(data, status=status.HTTP_400_BAD_REQUEST) limit = host.name diff --git a/awx/main/models/jobs.py b/awx/main/models/jobs.py index d76b03c42a..19a853a45f 100644 --- a/awx/main/models/jobs.py +++ b/awx/main/models/jobs.py @@ -295,18 +295,27 @@ class JobTemplate(UnifiedJobTemplate, JobOptions, SurveyJobTemplateMixin, Resour def get_absolute_url(self): return reverse('api:job_template_detail', args=(self.pk,)) - def can_start_without_user_input(self): + def can_start_without_user_input(self, callback_extra_vars=None): ''' Return whether job template can be used to start a new job without requiring any user input. ''' + variables_needed = False + if callback_extra_vars: + extra_vars_dict = parse_yaml_or_json(callback_extra_vars) + for var in self.variables_needed_to_start: + if var not in extra_vars_dict: + variables_needed = True + break + elif self.variables_needed_to_start: + variables_needed = True prompting_needed = False for value in self._ask_for_vars_dict().values(): if value: prompting_needed = True return (not prompting_needed and not self.passwords_needed_to_start and - not self.variables_needed_to_start) + not variables_needed) def _ask_for_vars_dict(self): return dict(