From 86aa0136a2754ac17845f4b39040ba039625903e Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Fri, 8 Apr 2016 14:49:42 -0400 Subject: [PATCH] runtime inventory compatibility with blank, and resolve issue #1453 --- awx/api/serializers.py | 9 +++++++-- awx/main/models/jobs.py | 4 +++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/awx/api/serializers.py b/awx/api/serializers.py index eb9fd89e8c..c6fe2ca325 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -2140,7 +2140,12 @@ class JobLaunchSerializer(BaseSerializer): obj = self.context.get('obj') data = self.context.get('data') - credential = attrs.get('credential', obj and obj.credential or None) + if obj and obj.credential is not None: + # force job template to override runtime credential, if present + credential = obj.credential + attrs.pop('credential', None) + else: + credential = attrs.get('credential', None) if not credential: errors['credential'] = 'Credential not provided' @@ -2174,7 +2179,7 @@ class JobLaunchSerializer(BaseSerializer): if obj.job_type != PERM_INVENTORY_SCAN and (obj.project is None): errors['project'] = 'Job Template Project is missing or undefined' - if obj.inventory is None: + if (obj.inventory is None) and not attrs.get('inventory', None): errors['inventory'] = 'Job Template Inventory is missing or undefined' if errors: diff --git a/awx/main/models/jobs.py b/awx/main/models/jobs.py index ba584a6eb6..fb371e3a9e 100644 --- a/awx/main/models/jobs.py +++ b/awx/main/models/jobs.py @@ -265,7 +265,9 @@ class JobTemplate(UnifiedJobTemplate, JobOptions, ResourceMixin): Return whether job template can be used to start a new job without requiring any user input. ''' - return bool(self.credential and not len(self.passwords_needed_to_start) and not len(self.variables_needed_to_start)) + return bool(self.credential and not len(self.passwords_needed_to_start) + and not len(self.variables_needed_to_start) + and self.inventory) @property def variables_needed_to_start(self):