From 4adfb9804ed6dc4c371aed29019037ccc66e9992 Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Mon, 11 Dec 2017 08:58:45 -0500 Subject: [PATCH] allow using SystemJobTemplates in workflows --- awx/api/serializers.py | 2 +- awx/main/tasks.py | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/awx/api/serializers.py b/awx/api/serializers.py index f94ee9a5a3..2a8423b508 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -3109,7 +3109,7 @@ class WorkflowJobTemplateNodeSerializer(LaunchConfigurationBaseSerializer): ujt_obj = None if self.instance: ujt_obj = self.instance.unified_job_template - if isinstance(ujt_obj, (WorkflowJobTemplate, SystemJobTemplate)): + if isinstance(ujt_obj, (WorkflowJobTemplate)): raise serializers.ValidationError({ "unified_job_template": _("Cannot nest a %s inside a WorkflowJobTemplate") % ujt_obj.__class__.__name__}) attrs = super(WorkflowJobTemplateNodeSerializer, self).validate(attrs) diff --git a/awx/main/tasks.py b/awx/main/tasks.py index c6129f7c97..22572d8139 100644 --- a/awx/main/tasks.py +++ b/awx/main/tasks.py @@ -2196,7 +2196,11 @@ class RunSystemJob(BaseTask): def build_args(self, system_job, **kwargs): args = ['awx-manage', system_job.job_type] try: - json_vars = json.loads(system_job.extra_vars) + # System Job extra_vars can be blank, must be JSON if not blank + if system_job.extra_vars == '': + json_vars = {} + else: + json_vars = json.loads(system_job.extra_vars) if 'days' in json_vars and system_job.job_type != 'cleanup_facts': args.extend(['--days', str(json_vars.get('days', 60))]) if 'dry_run' in json_vars and json_vars['dry_run'] and system_job.job_type != 'cleanup_facts': @@ -2211,7 +2215,7 @@ class RunSystemJob(BaseTask): if 'granularity' in json_vars: args.extend(['--granularity', str(json_vars['granularity'])]) except Exception: - logger.exception("%s Failed to parse system job", instance.log_format) + logger.exception("%s Failed to parse system job", system_job.log_format) return args def get_stdout_handle(self, instance):