diff --git a/awx/api/serializers.py b/awx/api/serializers.py index f9d21b0c7d..236549a2fa 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -4442,14 +4442,15 @@ class WorkflowJobLaunchSerializer(BaseSerializer): return False def get_defaults(self, obj): - defaults ={ - 'inventory': { - 'name': getattrd(obj, 'inventory.name', None), - 'id': getattrd(obj, 'inventory.pk', None) - } - } - - return defaults + defaults_dict = {} + for field_name in WorkflowJobTemplate.get_ask_mapping().keys(): + if field_name == 'inventory': + defaults_dict[field_name] = dict( + name=getattrd(obj, '%s.name' % field_name, None), + id=getattrd(obj, '%s.pk' % field_name, None)) + else: + defaults_dict[field_name] = getattr(obj, field_name) + return defaults_dict def get_workflow_job_template_data(self, obj): return dict(name=obj.name, id=obj.id, description=obj.description) diff --git a/awx/api/views/__init__.py b/awx/api/views/__init__.py index cbc879097e..87140b02b1 100644 --- a/awx/api/views/__init__.py +++ b/awx/api/views/__init__.py @@ -3108,6 +3108,8 @@ class WorkflowJobTemplateLaunch(WorkflowsEnforcementMixin, RetrieveAPIView): data['extra_vars'] = extra_vars if obj.ask_inventory_on_launch: data['inventory'] = obj.inventory_id + else: + data.pop('inventory', None) return data def post(self, request, *args, **kwargs): diff --git a/awx/main/models/workflow.py b/awx/main/models/workflow.py index 0f988afb79..4d6cad4b4e 100644 --- a/awx/main/models/workflow.py +++ b/awx/main/models/workflow.py @@ -440,6 +440,7 @@ class WorkflowJobTemplate(UnifiedJobTemplate, WorkflowJobOptions, SurveyJobTempl if rejected_vars: rejected_data['extra_vars'] = rejected_vars errors_dict.update(vars_errors) + continue if field_name not in kwargs: continue