diff --git a/awx/api/serializers.py b/awx/api/serializers.py index a889896c39..c0b5e028bc 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -1917,7 +1917,7 @@ class AdHocCommandSerializer(UnifiedJobSerializer): class Meta: model = AdHocCommand fields = ('*', 'job_type', 'inventory', 'limit', 'credential', - 'module_name', 'module_args', 'forks', 'verbosity', + 'module_name', 'module_args', 'forks', 'verbosity', 'extra_vars', 'become_enabled', '-unified_job_template', '-description') extra_kwargs = { 'name': { diff --git a/awx/main/models/ad_hoc_commands.py b/awx/main/models/ad_hoc_commands.py index 6efac2ec63..8694f56537 100644 --- a/awx/main/models/ad_hoc_commands.py +++ b/awx/main/models/ad_hoc_commands.py @@ -84,6 +84,12 @@ class AdHocCommand(UnifiedJob): editable=False, through='AdHocCommandEvent', ) + extra_vars = models.TextField( + blank=True, + default='', + ) + + extra_vars_dict = VarsDictProperty('extra_vars', True) def clean_inventory(self): inv = self.inventory diff --git a/awx/main/tasks.py b/awx/main/tasks.py index db47f3eaec..444e557d40 100644 --- a/awx/main/tasks.py +++ b/awx/main/tasks.py @@ -1615,6 +1615,9 @@ class RunAdHocCommand(BaseTask): if ad_hoc_command.verbosity: args.append('-%s' % ('v' * min(5, ad_hoc_command.verbosity))) + if ad_hoc_command.extra_vars_dict: + args.extend(['-e', json.dumps(ad_hoc_command.extra_vars_dict)]) + args.extend(['-m', ad_hoc_command.module_name]) args.extend(['-a', ad_hoc_command.module_args])