From fe40adb5a078480bab1e6cff6103d5f5e18c6a04 Mon Sep 17 00:00:00 2001 From: Alexander Ignatov Date: Tue, 2 Apr 2013 07:35:09 -0700 Subject: [PATCH] Fixed issue when json's responses contain null values * refactored clean_none method in service/api.py Fixed bug: #1163311 Change-Id: I6d18c94c6a14121a7f84f10abcf0588af0595b61 --- savanna/service/api.py | 16 ++++++++-------- savanna/tests/unit/test_api_v02.py | 8 +------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/savanna/service/api.py b/savanna/service/api.py index 06c2daf3df..eaa0c08ae1 100644 --- a/savanna/service/api.py +++ b/savanna/service/api.py @@ -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 diff --git a/savanna/tests/unit/test_api_v02.py b/savanna/tests/unit/test_api_v02.py index 49a3dfc831..b5d6e8940c 100644 --- a/savanna/tests/unit/test_api_v02.py +++ b/savanna/tests/unit/test_api_v02.py @@ -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'