From d8c619554ecd52dd6538d4914dabd3e19eecdeb3 Mon Sep 17 00:00:00 2001 From: Matthew Jones Date: Thu, 4 Dec 2014 14:25:36 -0500 Subject: [PATCH] Fix up some more issues with extra vars and unit tests --- awx/main/models/jobs.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/awx/main/models/jobs.py b/awx/main/models/jobs.py index b66074e9ff..df5bebabcd 100644 --- a/awx/main/models/jobs.py +++ b/awx/main/models/jobs.py @@ -445,17 +445,30 @@ class Job(UnifiedJob, JobOptions): return dependencies def handle_extra_data(self, extra_data): - print("Extra data: " + str(extra_data)) if type(extra_data) == dict: - evars = extra_data + extra_vars = extra_data + elif extra_data is None: + return else: if extra_data == "": return try: - evars = json.loads(self.extra_vars) + extra_vars = json.loads(extra_data) except Exception, e: logger.warn("Exception deserializing extra vars: " + str(e)) - print("Evars: " + str(evars)) + if self.extra_vars is None or self.extra_vars == "": + evars = {} + elif type(self.extra_vars) == dict: + evars = self.extra_vars + else: + try: + evars = json.loads(self.extra_vars) + except ValueError: + try: + evars = yaml.safe_load(self.extra_vars) + except yaml.YAMLError: + evars = {} + evars.update(extra_vars) self.update_fields(extra_vars=json.dumps(evars)) def copy(self):