Merge "object: serialize set to list"
This commit is contained in:
@@ -783,11 +783,13 @@ class NovaObjectSerializer(messaging.NoOpSerializer):
|
|||||||
return iterable(**{k: action_fn(context, v)
|
return iterable(**{k: action_fn(context, v)
|
||||||
for k, v in six.iteritems(values)})
|
for k, v in six.iteritems(values)})
|
||||||
else:
|
else:
|
||||||
# NOTE(danms): A set can't have an unhashable value inside, such as
|
# NOTE(danms, gibi) A set can't have an unhashable value inside,
|
||||||
# a dict. Convert sets to tuples, which is fine, since we can't
|
# such as a dict. Convert the set to list, which is fine, since we
|
||||||
# send them over RPC anyway.
|
# can't send them over RPC anyway. We convert it to list as this
|
||||||
|
# way there will be no semantic change between the fake rpc driver
|
||||||
|
# used in functional test and a normal rpc driver.
|
||||||
if iterable == set:
|
if iterable == set:
|
||||||
iterable = tuple
|
iterable = list
|
||||||
return iterable([action_fn(context, value) for value in values])
|
return iterable([action_fn(context, value) for value in values])
|
||||||
|
|
||||||
def serialize_entity(self, context, entity):
|
def serialize_entity(self, context, entity):
|
||||||
|
@@ -1013,6 +1013,10 @@ class TestObjectSerializer(_BaseTestCase):
|
|||||||
for thing in (1, 'foo', [1, 2], {'foo': 'bar'}):
|
for thing in (1, 'foo', [1, 2], {'foo': 'bar'}):
|
||||||
self.assertEqual(thing, ser.deserialize_entity(None, thing))
|
self.assertEqual(thing, ser.deserialize_entity(None, thing))
|
||||||
|
|
||||||
|
def test_serialize_set_to_list(self):
|
||||||
|
ser = base.NovaObjectSerializer()
|
||||||
|
self.assertEqual([1, 2], ser.serialize_entity(None, set([1, 2])))
|
||||||
|
|
||||||
def _test_deserialize_entity_newer(self, obj_version, backported_to,
|
def _test_deserialize_entity_newer(self, obj_version, backported_to,
|
||||||
my_version='1.6'):
|
my_version='1.6'):
|
||||||
ser = base.NovaObjectSerializer()
|
ser = base.NovaObjectSerializer()
|
||||||
|
Reference in New Issue
Block a user