Merge "Add serialize_object() helper function"
This commit is contained in:
commit
b75a126ec6
|
@ -527,3 +527,33 @@ class VimUtilTest(base.TestCase):
|
|||
self.assertEqual({"test_name_0": "test_val_0",
|
||||
"test_name_1": "test_val_1"},
|
||||
vim_util.propset_dict(mock_propset))
|
||||
|
||||
def test_serialize_object(self):
|
||||
self.assertEqual({}, vim_util.serialize_object({}))
|
||||
|
||||
mobj1 = mock.MagicMock()
|
||||
mobj1.__keylist__ = ['asdf']
|
||||
mobj1.keys = lambda: ['asdf']
|
||||
mobj1.__getitem__.side_effect = [1]
|
||||
|
||||
mobj2 = mock.Mock()
|
||||
|
||||
mobj3 = mock.MagicMock()
|
||||
mobj3.__keylist__ = ['subkey1', 'subkey2']
|
||||
mobj3.keys = lambda: ['subkey1', 'subkey2']
|
||||
mobj3.__getitem__.side_effect = ['subvalue1', True]
|
||||
|
||||
mobj4 = 12
|
||||
|
||||
obj = {
|
||||
'foo': mobj1,
|
||||
'bar': [mobj2, mobj3],
|
||||
'baz': mobj4
|
||||
}
|
||||
|
||||
expected = {
|
||||
'foo': {'asdf': 1},
|
||||
'bar': [mobj2, {'subkey1': 'subvalue1', 'subkey2': True}],
|
||||
'baz': 12
|
||||
}
|
||||
self.assertEqual(expected, vim_util.serialize_object(obj))
|
||||
|
|
|
@ -694,3 +694,21 @@ def storage_placement_spec(client_factory,
|
|||
spec.resourcePool = res_pool_ref
|
||||
spec.host = host_ref
|
||||
return spec
|
||||
|
||||
|
||||
def serialize_object(obj):
|
||||
"""Convert Suds object into serializable format - a dict."""
|
||||
d = {}
|
||||
for k, v in dict(obj).items():
|
||||
if hasattr(v, '__keylist__'):
|
||||
d[k] = serialize_object(v)
|
||||
elif isinstance(v, list):
|
||||
d[k] = []
|
||||
for item in v:
|
||||
if hasattr(item, '__keylist__'):
|
||||
d[k].append(serialize_object(item))
|
||||
else:
|
||||
d[k].append(item)
|
||||
else:
|
||||
d[k] = v
|
||||
return d
|
||||
|
|
Loading…
Reference in New Issue