Do not set the context twice when forming RPC objects

The context is already being set once the object is instantiated so
there's no need to set it again. This patch fixes that and update tests
to validate if the right context has been added to the object.

Change-Id: I7eb3d734a990eb70e4fbfce6c539b268900b5241
Partial-Bug: #1314732
This commit is contained in:
Lucas Alvares Gomes 2014-09-18 13:33:31 +01:00
parent 654ea01741
commit 4d7c3e828a
8 changed files with 29 additions and 61 deletions

View File

@ -74,9 +74,6 @@ class Chassis(base.IronicObject):
""" """
db_chassis = cls.dbapi.get_chassis_by_id(chassis_id) db_chassis = cls.dbapi.get_chassis_by_id(chassis_id)
chassis = Chassis._from_db_object(cls(context), db_chassis) chassis = Chassis._from_db_object(cls(context), db_chassis)
# FIXME(comstud): Setting of the context should be moved to
# _from_db_object().
chassis._context = context
return chassis return chassis
@base.remotable_classmethod @base.remotable_classmethod
@ -89,9 +86,6 @@ class Chassis(base.IronicObject):
""" """
db_chassis = cls.dbapi.get_chassis_by_uuid(uuid) db_chassis = cls.dbapi.get_chassis_by_uuid(uuid)
chassis = Chassis._from_db_object(cls(context), db_chassis) chassis = Chassis._from_db_object(cls(context), db_chassis)
# FIXME(comstud): Setting of the context should be moved to
# _from_db_object().
chassis._context = context
return chassis return chassis
@base.remotable_classmethod @base.remotable_classmethod
@ -107,18 +101,12 @@ class Chassis(base.IronicObject):
:returns: a list of :class:`Chassis` object. :returns: a list of :class:`Chassis` object.
""" """
chassis_list = []
db_chassis = cls.dbapi.get_chassis_list(limit=limit, db_chassis = cls.dbapi.get_chassis_list(limit=limit,
marker=marker, marker=marker,
sort_key=sort_key, sort_key=sort_key,
sort_dir=sort_dir) sort_dir=sort_dir)
for obj in db_chassis: return [Chassis._from_db_object(cls(context), obj)
chassis = Chassis._from_db_object(cls(context), obj) for obj in db_chassis]
# FIXME(comstud): Setting of the context should be moved to
# _from_db_object().
chassis._context = context
chassis_list.append(chassis)
return chassis_list
@base.remotable @base.remotable
def create(self, context=None): def create(self, context=None):

View File

@ -48,9 +48,6 @@ class Conductor(base.IronicObject):
""" """
db_obj = cls.dbapi.get_conductor(hostname) db_obj = cls.dbapi.get_conductor(hostname)
conductor = Conductor._from_db_object(cls(context), db_obj) conductor = Conductor._from_db_object(cls(context), db_obj)
# FIXME(comstud): Setting of the context should be moved to
# _from_db_object().
conductor._context = context
return conductor return conductor
def save(self, context): def save(self, context):

View File

@ -100,9 +100,6 @@ class Node(base.IronicObject):
""" """
db_node = cls.dbapi.get_node_by_id(node_id) db_node = cls.dbapi.get_node_by_id(node_id)
node = Node._from_db_object(cls(context), db_node) node = Node._from_db_object(cls(context), db_node)
# FIXME(comstud): Setting of the context should be moved to
# _from_db_object().
node._context = context
return node return node
@base.remotable_classmethod @base.remotable_classmethod
@ -114,9 +111,6 @@ class Node(base.IronicObject):
""" """
db_node = cls.dbapi.get_node_by_uuid(uuid) db_node = cls.dbapi.get_node_by_uuid(uuid)
node = Node._from_db_object(cls(context), db_node) node = Node._from_db_object(cls(context), db_node)
# FIXME(comstud): Setting of the context should be moved to
# _from_db_object().
node._context = context
return node return node
@base.remotable_classmethod @base.remotable_classmethod
@ -128,9 +122,6 @@ class Node(base.IronicObject):
""" """
db_node = cls.dbapi.get_node_by_instance(instance_uuid) db_node = cls.dbapi.get_node_by_instance(instance_uuid)
node = Node._from_db_object(cls(context), db_node) node = Node._from_db_object(cls(context), db_node)
# FIXME(comstud): Setting of the context should be moved to
# _from_db_object().
node._context = context
return node return node
@base.remotable_classmethod @base.remotable_classmethod
@ -147,17 +138,10 @@ class Node(base.IronicObject):
:returns: a list of :class:`Node` object. :returns: a list of :class:`Node` object.
""" """
node_list = []
db_nodes = cls.dbapi.get_node_list(filters=filters, limit=limit, db_nodes = cls.dbapi.get_node_list(filters=filters, limit=limit,
marker=marker, sort_key=sort_key, marker=marker, sort_key=sort_key,
sort_dir=sort_dir) sort_dir=sort_dir)
for obj in db_nodes: return [Node._from_db_object(cls(context), obj) for obj in db_nodes]
node = Node._from_db_object(cls(context), obj)
# FIXME(comstud): Setting of the context should be moved to
# _from_db_object().
node._context = context
node_list.append(node)
return node_list
@base.remotable_classmethod @base.remotable_classmethod
def reserve(cls, context, tag, node_id): def reserve(cls, context, tag, node_id):
@ -175,9 +159,6 @@ class Node(base.IronicObject):
""" """
db_node = cls.dbapi.reserve_node(tag, node_id) db_node = cls.dbapi.reserve_node(tag, node_id)
node = Node._from_db_object(cls(context), db_node) node = Node._from_db_object(cls(context), db_node)
# FIXME(comstud): Setting of the context should be moved to
# _from_db_object().
node._context = context
return node return node
@base.remotable_classmethod @base.remotable_classmethod

View File

@ -51,14 +51,7 @@ class Port(base.IronicObject):
@staticmethod @staticmethod
def _from_db_object_list(db_objects, cls, context): def _from_db_object_list(db_objects, cls, context):
"""Converts a list of database entities to a list of formal objects.""" """Converts a list of database entities to a list of formal objects."""
port_list = [] return [Port._from_db_object(cls(context), obj) for obj in db_objects]
for obj in db_objects:
port = Port._from_db_object(cls(context), obj)
# FIXME(comstud): Setting of the context should be moved to
# _from_db_object().
port._context = context
port_list.append(port)
return port_list
@base.remotable_classmethod @base.remotable_classmethod
def get(cls, context, port_id): def get(cls, context, port_id):
@ -85,9 +78,6 @@ class Port(base.IronicObject):
""" """
db_port = cls.dbapi.get_port_by_id(port_id) db_port = cls.dbapi.get_port_by_id(port_id)
port = Port._from_db_object(cls(context), db_port) port = Port._from_db_object(cls(context), db_port)
# FIXME(comstud): Setting of the context should be moved to
# _from_db_object().
port._context = context
return port return port
@base.remotable_classmethod @base.remotable_classmethod
@ -100,9 +90,6 @@ class Port(base.IronicObject):
""" """
db_port = cls.dbapi.get_port_by_uuid(uuid) db_port = cls.dbapi.get_port_by_uuid(uuid)
port = Port._from_db_object(cls(context), db_port) port = Port._from_db_object(cls(context), db_port)
# FIXME(comstud): Setting of the context should be moved to
# _from_db_object().
port._context = context
return port return port
@base.remotable_classmethod @base.remotable_classmethod
@ -115,9 +102,6 @@ class Port(base.IronicObject):
""" """
db_port = cls.dbapi.get_port_by_address(address) db_port = cls.dbapi.get_port_by_address(address)
port = Port._from_db_object(cls(context), db_port) port = Port._from_db_object(cls(context), db_port)
# FIXME(comstud): Setting of the context should be moved to
# _from_db_object().
port._context = context
return port return port
@base.remotable_classmethod @base.remotable_classmethod

View File

@ -38,9 +38,10 @@ class TestChassisObject(base.DbTestCase):
autospec=True) as mock_get_chassis: autospec=True) as mock_get_chassis:
mock_get_chassis.return_value = self.fake_chassis mock_get_chassis.return_value = self.fake_chassis
objects.Chassis.get(self.context, chassis_id) chassis = objects.Chassis.get(self.context, chassis_id)
mock_get_chassis.assert_called_once_with(chassis_id) mock_get_chassis.assert_called_once_with(chassis_id)
self.assertEqual(self.context, chassis._context)
def test_get_by_uuid(self): def test_get_by_uuid(self):
uuid = self.fake_chassis['uuid'] uuid = self.fake_chassis['uuid']
@ -48,9 +49,10 @@ class TestChassisObject(base.DbTestCase):
autospec=True) as mock_get_chassis: autospec=True) as mock_get_chassis:
mock_get_chassis.return_value = self.fake_chassis mock_get_chassis.return_value = self.fake_chassis
objects.Chassis.get(self.context, uuid) chassis = objects.Chassis.get(self.context, uuid)
mock_get_chassis.assert_called_once_with(uuid) mock_get_chassis.assert_called_once_with(uuid)
self.assertEqual(self.context, chassis._context)
def test_get_bad_id_and_uuid(self): def test_get_bad_id_and_uuid(self):
self.assertRaises(exception.InvalidIdentity, self.assertRaises(exception.InvalidIdentity,
@ -71,6 +73,7 @@ class TestChassisObject(base.DbTestCase):
mock_get_chassis.assert_called_once_with(uuid) mock_get_chassis.assert_called_once_with(uuid)
mock_update_chassis.assert_called_once_with( mock_update_chassis.assert_called_once_with(
uuid, {'extra': {"test": 123}}) uuid, {'extra': {"test": 123}})
self.assertEqual(self.context, c._context)
def test_refresh(self): def test_refresh(self):
uuid = self.fake_chassis['uuid'] uuid = self.fake_chassis['uuid']
@ -86,6 +89,7 @@ class TestChassisObject(base.DbTestCase):
c.refresh() c.refresh()
self.assertEqual(new_uuid, c.uuid) self.assertEqual(new_uuid, c.uuid)
self.assertEqual(expected, mock_get_chassis.call_args_list) self.assertEqual(expected, mock_get_chassis.call_args_list)
self.assertEqual(self.context, c._context)
def test_list(self): def test_list(self):
with mock.patch.object(self.dbapi, 'get_chassis_list', with mock.patch.object(self.dbapi, 'get_chassis_list',
@ -94,3 +98,4 @@ class TestChassisObject(base.DbTestCase):
chassis = objects.Chassis.list(self.context) chassis = objects.Chassis.list(self.context)
self.assertThat(chassis, HasLength(1)) self.assertThat(chassis, HasLength(1))
self.assertIsInstance(chassis[0], objects.Chassis) self.assertIsInstance(chassis[0], objects.Chassis)
self.assertEqual(self.context, chassis[0]._context)

View File

@ -81,3 +81,4 @@ class TestConductorObject(base.DbTestCase):
c.refresh() c.refresh()
self.assertEqual(obj_utils.datetime_or_none(t1), c.updated_at) self.assertEqual(obj_utils.datetime_or_none(t1), c.updated_at)
self.assertEqual(expected, mock_get_cdr.call_args_list) self.assertEqual(expected, mock_get_cdr.call_args_list)
self.assertEqual(self.context, c._context)

View File

@ -36,9 +36,10 @@ class TestNodeObject(base.DbTestCase):
autospec=True) as mock_get_node: autospec=True) as mock_get_node:
mock_get_node.return_value = self.fake_node mock_get_node.return_value = self.fake_node
objects.Node.get(self.context, node_id) node = objects.Node.get(self.context, node_id)
mock_get_node.assert_called_once_with(node_id) mock_get_node.assert_called_once_with(node_id)
self.assertEqual(self.context, node._context)
def test_get_by_uuid(self): def test_get_by_uuid(self):
uuid = self.fake_node['uuid'] uuid = self.fake_node['uuid']
@ -46,9 +47,10 @@ class TestNodeObject(base.DbTestCase):
autospec=True) as mock_get_node: autospec=True) as mock_get_node:
mock_get_node.return_value = self.fake_node mock_get_node.return_value = self.fake_node
objects.Node.get(self.context, uuid) node = objects.Node.get(self.context, uuid)
mock_get_node.assert_called_once_with(uuid) mock_get_node.assert_called_once_with(uuid)
self.assertEqual(self.context, node._context)
def test_get_bad_id_and_uuid(self): def test_get_bad_id_and_uuid(self):
self.assertRaises(exception.InvalidIdentity, self.assertRaises(exception.InvalidIdentity,
@ -69,6 +71,7 @@ class TestNodeObject(base.DbTestCase):
mock_get_node.assert_called_once_with(uuid) mock_get_node.assert_called_once_with(uuid)
mock_update_node.assert_called_once_with( mock_update_node.assert_called_once_with(
uuid, {'properties': {"fake": "property"}}) uuid, {'properties': {"fake": "property"}})
self.assertEqual(self.context, n._context)
def test_refresh(self): def test_refresh(self):
uuid = self.fake_node['uuid'] uuid = self.fake_node['uuid']
@ -83,6 +86,7 @@ class TestNodeObject(base.DbTestCase):
n.refresh() n.refresh()
self.assertEqual({"fake": "second"}, n.properties) self.assertEqual({"fake": "second"}, n.properties)
self.assertEqual(expected, mock_get_node.call_args_list) self.assertEqual(expected, mock_get_node.call_args_list)
self.assertEqual(self.context, n._context)
def test_list(self): def test_list(self):
with mock.patch.object(self.dbapi, 'get_node_list', with mock.patch.object(self.dbapi, 'get_node_list',
@ -91,6 +95,7 @@ class TestNodeObject(base.DbTestCase):
nodes = objects.Node.list(self.context) nodes = objects.Node.list(self.context)
self.assertThat(nodes, HasLength(1)) self.assertThat(nodes, HasLength(1))
self.assertIsInstance(nodes[0], objects.Node) self.assertIsInstance(nodes[0], objects.Node)
self.assertEqual(self.context, nodes[0]._context)
def test_reserve(self): def test_reserve(self):
with mock.patch.object(self.dbapi, 'reserve_node', with mock.patch.object(self.dbapi, 'reserve_node',
@ -101,6 +106,7 @@ class TestNodeObject(base.DbTestCase):
node = objects.Node.reserve(self.context, fake_tag, node_id) node = objects.Node.reserve(self.context, fake_tag, node_id)
self.assertIsInstance(node, objects.Node) self.assertIsInstance(node, objects.Node)
mock_reserve.assert_called_once_with(fake_tag, node_id) mock_reserve.assert_called_once_with(fake_tag, node_id)
self.assertEqual(self.context, node._context)
def test_reserve_node_not_found(self): def test_reserve_node_not_found(self):
with mock.patch.object(self.dbapi, 'reserve_node', with mock.patch.object(self.dbapi, 'reserve_node',

View File

@ -36,9 +36,10 @@ class TestPortObject(base.DbTestCase):
autospec=True) as mock_get_port: autospec=True) as mock_get_port:
mock_get_port.return_value = self.fake_port mock_get_port.return_value = self.fake_port
objects.Port.get(self.context, port_id) port = objects.Port.get(self.context, port_id)
mock_get_port.assert_called_once_with(port_id) mock_get_port.assert_called_once_with(port_id)
self.assertEqual(self.context, port._context)
def test_get_by_uuid(self): def test_get_by_uuid(self):
uuid = self.fake_port['uuid'] uuid = self.fake_port['uuid']
@ -46,9 +47,10 @@ class TestPortObject(base.DbTestCase):
autospec=True) as mock_get_port: autospec=True) as mock_get_port:
mock_get_port.return_value = self.fake_port mock_get_port.return_value = self.fake_port
objects.Port.get(self.context, uuid) port = objects.Port.get(self.context, uuid)
mock_get_port.assert_called_once_with(uuid) mock_get_port.assert_called_once_with(uuid)
self.assertEqual(self.context, port._context)
def test_get_by_address(self): def test_get_by_address(self):
address = self.fake_port['address'] address = self.fake_port['address']
@ -56,9 +58,10 @@ class TestPortObject(base.DbTestCase):
autospec=True) as mock_get_port: autospec=True) as mock_get_port:
mock_get_port.return_value = self.fake_port mock_get_port.return_value = self.fake_port
objects.Port.get(self.context, address) port = objects.Port.get(self.context, address)
mock_get_port.assert_called_once_with(address) mock_get_port.assert_called_once_with(address)
self.assertEqual(self.context, port._context)
def test_get_bad_id_and_uuid_and_address(self): def test_get_bad_id_and_uuid_and_address(self):
self.assertRaises(exception.InvalidIdentity, self.assertRaises(exception.InvalidIdentity,
@ -78,6 +81,7 @@ class TestPortObject(base.DbTestCase):
mock_get_port.assert_called_once_with(uuid) mock_get_port.assert_called_once_with(uuid)
mock_update_port.assert_called_once_with( mock_update_port.assert_called_once_with(
uuid, {'address': "b2:54:00:cf:2d:40"}) uuid, {'address': "b2:54:00:cf:2d:40"})
self.assertEqual(self.context, p._context)
def test_refresh(self): def test_refresh(self):
uuid = self.fake_port['uuid'] uuid = self.fake_port['uuid']
@ -93,6 +97,7 @@ class TestPortObject(base.DbTestCase):
self.assertEqual("c3:54:00:cf:2d:40", p.address) self.assertEqual("c3:54:00:cf:2d:40", p.address)
self.assertEqual(expected, mock_get_port.call_args_list) self.assertEqual(expected, mock_get_port.call_args_list)
self.assertEqual(self.context, p._context)
def test_list(self): def test_list(self):
with mock.patch.object(self.dbapi, 'get_port_list', with mock.patch.object(self.dbapi, 'get_port_list',
@ -101,3 +106,4 @@ class TestPortObject(base.DbTestCase):
ports = objects.Port.list(self.context) ports = objects.Port.list(self.context)
self.assertThat(ports, HasLength(1)) self.assertThat(ports, HasLength(1))
self.assertIsInstance(ports[0], objects.Port) self.assertIsInstance(ports[0], objects.Port)
self.assertEqual(self.context, ports[0]._context)