Fixed issue when json's responses contain null values

* refactored clean_none method in service/api.py

Fixed bug: #1163311

Change-Id: I6d18c94c6a14121a7f84f10abcf0588af0595b61
This commit is contained in:
Alexander Ignatov 2013-04-02 07:35:09 -07:00
parent a742f0e674
commit fe40adb5a0
2 changed files with 9 additions and 15 deletions

View File

@ -135,23 +135,23 @@ def get_node_types(**args):
## Utils and DB object to Resource converters ## Utils and DB object to Resource converters
def _clean_nones(obj): def _clean_nones(obj):
d_type = type(obj) if not isinstance(obj, dict) and not isinstance(obj, list):
if d_type is not dict or d_type is not list:
return obj return obj
if d_type is dict: if isinstance(obj, dict):
remove = [] remove = []
for key in obj: for key, value in obj.iteritems():
value = _clean_nones(obj.get(key)) if value is None:
if value is None or len(value) == 0:
remove.append(key) remove.append(key)
for key in remove: for key in remove:
obj.pop(key) obj.pop(key)
elif d_type is list: for value in obj.values():
_clean_nones(value)
elif isinstance(obj, list):
new_list = [] new_list = []
for elem in obj: for elem in obj:
elem = _clean_nones(elem) elem = _clean_nones(elem)
if elem is not None and len(elem) == 0: if elem is not None:
new_list.append(elem) new_list.append(elem)
return new_list return new_list

View File

@ -295,10 +295,7 @@ def _get_templates_stub_data():
{ {
u'name': u'tt_dn.small', u'name': u'tt_dn.small',
u'task_tracker': { u'task_tracker': {
u'heap_size': u'896', u'heap_size': u'896'
u'mapred.child.java.opts': None,
u'mapred.tasktracker.map.tasks.maximum': None,
u'mapred.tasktracker.reduce.tasks.maximum': None
}, },
u'data_node': { u'data_node': {
u'heap_size': u'896' u'heap_size': u'896'
@ -315,9 +312,6 @@ def _get_templates_stub_data():
u'name': u'tt_dn.medium', u'name': u'tt_dn.medium',
u'task_tracker': { u'task_tracker': {
u'heap_size': u'1792', u'heap_size': u'1792',
u'mapred.child.java.opts': None,
u'mapred.tasktracker.map.tasks.maximum': None,
u'mapred.tasktracker.reduce.tasks.maximum': None
}, },
u'data_node': { u'data_node': {
u'heap_size': u'1792' u'heap_size': u'1792'