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
def _clean_nones(obj):
d_type = type(obj)
if d_type is not dict or d_type is not list:
if not isinstance(obj, dict) and not isinstance(obj, list):
return obj
if d_type is dict:
if isinstance(obj, dict):
remove = []
for key in obj:
value = _clean_nones(obj.get(key))
if value is None or len(value) == 0:
for key, value in obj.iteritems():
if value is None:
remove.append(key)
for key in remove:
obj.pop(key)
elif d_type is list:
for value in obj.values():
_clean_nones(value)
elif isinstance(obj, list):
new_list = []
for elem in obj:
elem = _clean_nones(elem)
if elem is not None and len(elem) == 0:
if elem is not None:
new_list.append(elem)
return new_list

View File

@ -295,10 +295,7 @@ def _get_templates_stub_data():
{
u'name': u'tt_dn.small',
u'task_tracker': {
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'heap_size': u'896'
},
u'data_node': {
u'heap_size': u'896'
@ -315,9 +312,6 @@ def _get_templates_stub_data():
u'name': u'tt_dn.medium',
u'task_tracker': {
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'heap_size': u'1792'