def __init__(self): super(CellsAPI, self).__init__() target = messaging.Target(topic=CONF.cells.topic, version='1.0') version_cap = self.VERSION_ALIASES.get(CONF.upgrade_levels.cells, CONF.upgrade_levels.cells) # NOTE(sbauza): Yes, this is ugly but cells_utils is calling cells.db # which itself calls cells.rpcapi... You meant import cycling ? Gah. from nova.cells import utils as cells_utils serializer = cells_utils.ProxyObjectSerializer() self.client = rpc.get_client(target, version_cap=version_cap, serializer=serializer)
def test_proxy_object_serializer_to_primitive(self): obj = objects.ComputeNode(id=1, host='fake') obj_proxy = cells_utils.ComputeNodeProxy(obj, 'fake_path') serializer = cells_utils.ProxyObjectSerializer() primitive = serializer.serialize_entity('ctx', obj_proxy) self.assertIsInstance(primitive, dict) class_name = primitive.pop('cell_proxy.class_name') cell_path = primitive.pop('cell_proxy.cell_path') self.assertEqual('ComputeNodeProxy', class_name) self.assertEqual('fake_path', cell_path) self.assertEqual(obj.obj_to_primitive(), primitive)
def test_proxy_object_serializer_from_primitive(self): obj = objects.ComputeNode(id=1, host='fake') serializer = cells_utils.ProxyObjectSerializer() # Recreating the primitive by hand to isolate the test for only # the deserializing method primitive = obj.obj_to_primitive() primitive['cell_proxy.class_name'] = 'ComputeNodeProxy' primitive['cell_proxy.cell_path'] = 'fake_path' result = serializer.deserialize_entity('ctx', primitive) self.assertIsInstance(result, cells_utils.ComputeNodeProxy) self.assertEqual(obj.obj_to_primitive(), result._obj.obj_to_primitive()) self.assertEqual('fake_path', result._cell_path)