jsonutil: do not encode SourceContext or ZuulMark

In certain situation (e.g. when a job in a project template defines a
variable named 'job' while the job already has a variable named 'job'),
the JSONEncoder fail with this exception:

File "zuul/lib/jsonutil.py", line 26, in default
  return json.JSONEncoder.default(self, o)
File "json/encoder.py", line 180, in default
  raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <zuul.configloader.ZuulMark object at 0xA> is not JSON serializable

Change-Id: Icb6490bc1b3ce4b7f326b07eb9871f9d2b3b605a
This commit is contained in:
Tristan Cacqueray 2019-06-05 10:47:05 +00:00
parent e0c975a980
commit 7af096761f
1 changed files with 7 additions and 0 deletions

View File

@ -13,6 +13,9 @@
import json
import types
import zuul.configloader
import zuul.model
class ZuulJSONEncoder(json.JSONEncoder):
def default(self, o):
@ -22,6 +25,10 @@ class ZuulJSONEncoder(json.JSONEncoder):
d.pop('_source_context', None)
d.pop('_start_mark', None)
return d
elif (
isinstance(o, zuul.model.SourceContext) or
isinstance(o, zuul.configloader.ZuulMark)):
return {}
return json.JSONEncoder.default(self, o)