From 7c315ebd3395c85b7304699d87890522fbbb020d Mon Sep 17 00:00:00 2001 From: Chris Meyers Date: Fri, 7 Aug 2015 13:46:39 -0400 Subject: [PATCH 1/2] allow unicode in stdout. --- requirements/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/requirements.txt b/requirements/requirements.txt index 668a9b0d30..02dd347786 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -1,5 +1,5 @@ amqp==1.4.5 -ansiconv==1.0.0 +git+https://github.com/chrismeyersfsu/ansiconv.git@tower_1.0.0#egg=ansiconv-tower_1.0.0 anyjson==0.3.3 apache-libcloud==0.15.1 argparse==1.2.1 From fca62d1596e80aa37d53c2d994afcc86baa4b88c Mon Sep 17 00:00:00 2001 From: Chris Meyers Date: Fri, 7 Aug 2015 15:59:06 -0400 Subject: [PATCH 2/2] correctly inherit extra_vars * inherit extra_vars from job_template * overwrite with extra vars survey default vars * overwrite with job extra_vars --- awx/main/models/jobs.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/awx/main/models/jobs.py b/awx/main/models/jobs.py index 52b2ccd281..6df76c895a 100644 --- a/awx/main/models/jobs.py +++ b/awx/main/models/jobs.py @@ -284,15 +284,32 @@ class JobTemplate(UnifiedJobTemplate, JobOptions): return errors def _update_unified_job_kwargs(self, **kwargs): - # Overwrite job extra_vars with job template extra vars + # Job Template extra_vars extra_vars = self.extra_vars_dict - # Overwrite with job template survey default vars + # Overwrite with job template extra vars with survey default vars if self.survey_enabled and 'spec' in self.survey_spec: for survey_element in self.survey_spec.get("spec", []): if survey_element['default']: extra_vars[survey_element['variable']] = survey_element['default'] + # transform to dict + if 'extra_vars' in kwargs: + kwargs_extra_vars = kwargs['extra_vars'] + if not isinstance(kwargs_extra_vars, dict): + try: + kwargs_extra_vars = json.loads(kwargs_extra_vars) + except Exception: + try: + yaml.safe_load(kwargs_extra_vars) + except: + kwargs_extra_vars = {} + else: + kwargs_extra_vars = {} + + # Overwrite job template extra vars with explicit job extra vars + # and add on job extra vars + extra_vars.update(kwargs_extra_vars) kwargs['extra_vars'] = json.dumps(extra_vars) return kwargs