Enable multi tenant for get_xxx_by_id

The updated API include the following:
1) get_bay_by_id
2) get_baymodel_by_id
3) get_node_by_id
4) get_container_by_id

Implements part of bp multi-tenant

Change-Id: I7d2f8b7ea361b38d6f0110772c10f93037c7aefb
This commit is contained in:
Jay Lau (Guangya Liu) 2015-01-30 04:13:14 -05:00
parent 003d5a199b
commit c182dadb17
14 changed files with 52 additions and 33 deletions

View File

@ -83,9 +83,10 @@ class Connection(object):
""" """
@abc.abstractmethod @abc.abstractmethod
def get_bay_by_id(self, bay_id): def get_bay_by_id(self, ctxt, bay_id):
"""Return a bay. """Return a bay.
:param ctxt: The security context
:param bay_id: The id of a bay. :param bay_id: The id of a bay.
:returns: A bay. :returns: A bay.
""" """
@ -157,9 +158,10 @@ class Connection(object):
""" """
@abc.abstractmethod @abc.abstractmethod
def get_baymodel_by_id(self, baymodel_id): def get_baymodel_by_id(self, ctxt, baymodel_id):
"""Return a baymodel. """Return a baymodel.
:param ctxt: The security context
:param baymodel_id: The id of a baymodel. :param baymodel_id: The id of a baymodel.
:returns: A baymodel. :returns: A baymodel.
""" """
@ -232,9 +234,10 @@ class Connection(object):
""" """
@abc.abstractmethod @abc.abstractmethod
def get_container_by_id(self, container_id): def get_container_by_id(self, ctxt, container_id):
"""Return a container. """Return a container.
:param ctxt: The security context
:param container_id: The id of a container. :param container_id: The id of a container.
:returns: A container. :returns: A container.
""" """
@ -305,9 +308,10 @@ class Connection(object):
""" """
@abc.abstractmethod @abc.abstractmethod
def get_node_by_id(self, node_id): def get_node_by_id(self, ctxt, node_id):
"""Return a node. """Return a node.
:param ctxt: The security context
:param node_id: The id of a node. :param node_id: The id of a node.
:returns: A node. :returns: A node.
""" """

View File

@ -173,8 +173,10 @@ class Connection(api.Connection):
raise exception.BayAlreadyExists(uuid=values['uuid']) raise exception.BayAlreadyExists(uuid=values['uuid'])
return bay return bay
def get_bay_by_id(self, bay_id): def get_bay_by_id(self, ctxt, bay_id):
query = model_query(models.Bay).filter_by(id=bay_id) query = model_query(models.Bay)
query = self._add_tenant_filters(ctxt, query)
query = query.filter_by(id=bay_id)
try: try:
return query.one() return query.one()
except NoResultFound: except NoResultFound:
@ -308,8 +310,10 @@ class Connection(api.Connection):
raise exception.BayModelAlreadyExists(uuid=values['uuid']) raise exception.BayModelAlreadyExists(uuid=values['uuid'])
return baymodel return baymodel
def get_baymodel_by_id(self, baymodel_id): def get_baymodel_by_id(self, ctxt, baymodel_id):
query = model_query(models.BayModel).filter_by(id=baymodel_id) query = model_query(models.BayModel)
query = self._add_tenant_filters(ctxt, query)
query = query.filter_by(id=baymodel_id)
try: try:
return query.one() return query.one()
except NoResultFound: except NoResultFound:
@ -418,8 +422,10 @@ class Connection(api.Connection):
raise exception.ContainerAlreadyExists(uuid=values['uuid']) raise exception.ContainerAlreadyExists(uuid=values['uuid'])
return container return container
def get_container_by_id(self, container_id): def get_container_by_id(self, ctxt, container_id):
query = model_query(models.Container).filter_by(id=container_id) query = model_query(models.Container)
query = self._add_tenant_filters(ctxt, query)
query = query.filter_by(id=container_id)
try: try:
return query.one() return query.one()
except NoResultFound: except NoResultFound:
@ -526,8 +532,10 @@ class Connection(api.Connection):
raise exception.NodeAlreadyExists(uuid=values['uuid']) raise exception.NodeAlreadyExists(uuid=values['uuid'])
return node return node
def get_node_by_id(self, node_id): def get_node_by_id(self, ctxt, node_id):
query = model_query(models.Node).filter_by(id=node_id) query = model_query(models.Node)
query = self._add_tenant_filters(ctxt, query)
query = query.filter_by(id=node_id)
try: try:
return query.one() return query.one()
except NoResultFound: except NoResultFound:

View File

@ -74,7 +74,7 @@ class Bay(base.MagnumObject):
:param bay_id: the id of a bay. :param bay_id: the id of a bay.
:returns: a :class:`Bay` object. :returns: a :class:`Bay` object.
""" """
db_bay = cls.dbapi.get_bay_by_id(bay_id) db_bay = cls.dbapi.get_bay_by_id(context, bay_id)
bay = Bay._from_db_object(cls(context), db_bay) bay = Bay._from_db_object(cls(context), db_bay)
return bay return bay

View File

@ -76,7 +76,7 @@ class BayModel(base.MagnumObject):
:param baymodel_id: the id of a baymodel. :param baymodel_id: the id of a baymodel.
:returns: a :class:`BayModel` object. :returns: a :class:`BayModel` object.
""" """
db_baymodel = cls.dbapi.get_baymodel_by_id(baymodel_id) db_baymodel = cls.dbapi.get_baymodel_by_id(context, baymodel_id)
baymodel = BayModel._from_db_object(cls(context), db_baymodel) baymodel = BayModel._from_db_object(cls(context), db_baymodel)
return baymodel return baymodel

View File

@ -71,7 +71,7 @@ class Container(base.MagnumObject):
:param container_id: the id of a container. :param container_id: the id of a container.
:returns: a :class:`Container` object. :returns: a :class:`Container` object.
""" """
db_container = cls.dbapi.get_container_by_id(container_id) db_container = cls.dbapi.get_container_by_id(context, container_id)
container = Container._from_db_object(cls(context), db_container) container = Container._from_db_object(cls(context), db_container)
return container return container

View File

@ -71,7 +71,7 @@ class Node(base.MagnumObject):
:param node_id: the id of a node. :param node_id: the id of a node.
:returns: a :class:`Node` object. :returns: a :class:`Node` object.
""" """
db_node = cls.dbapi.get_node_by_id(node_id) db_node = cls.dbapi.get_node_by_id(context, node_id)
node = Node._from_db_object(cls(context), db_node) node = Node._from_db_object(cls(context), db_node)
return node return node

View File

@ -38,7 +38,7 @@ class DbBayTestCase(base.DbTestCase):
def test_get_bay_by_id(self): def test_get_bay_by_id(self):
bay = utils.create_test_bay() bay = utils.create_test_bay()
res = self.dbapi.get_bay_by_id(bay.id) res = self.dbapi.get_bay_by_id(self.context, bay.id)
self.assertEqual(bay.id, res.id) self.assertEqual(bay.id, res.id)
self.assertEqual(bay.uuid, res.uuid) self.assertEqual(bay.uuid, res.uuid)
@ -50,7 +50,8 @@ class DbBayTestCase(base.DbTestCase):
def test_get_bay_that_does_not_exist(self): def test_get_bay_that_does_not_exist(self):
self.assertRaises(exception.BayNotFound, self.assertRaises(exception.BayNotFound,
self.dbapi.get_bay_by_id, 999) self.dbapi.get_bay_by_id,
self.context, 999)
self.assertRaises(exception.BayNotFound, self.assertRaises(exception.BayNotFound,
self.dbapi.get_bay_by_uuid, self.dbapi.get_bay_by_uuid,
self.context, self.context,
@ -182,10 +183,12 @@ class DbBayTestCase(base.DbTestCase):
def test_destroy_bay(self): def test_destroy_bay(self):
bay = utils.create_test_bay() bay = utils.create_test_bay()
self.assertIsNotNone(self.dbapi.get_bay_by_id(bay.id)) self.assertIsNotNone(self.dbapi.get_bay_by_id(self.context,
bay.id))
self.dbapi.destroy_bay(bay.id) self.dbapi.destroy_bay(bay.id)
self.assertRaises(exception.BayNotFound, self.assertRaises(exception.BayNotFound,
self.dbapi.get_bay_by_id, bay.id) self.dbapi.get_bay_by_id,
self.context, bay.id)
def test_destroy_bay_by_uuid(self): def test_destroy_bay_by_uuid(self):
bay = utils.create_test_bay() bay = utils.create_test_bay()

View File

@ -89,7 +89,7 @@ class DbBaymodelTestCase(base.DbTestCase):
def test_get_baymodel_by_id(self): def test_get_baymodel_by_id(self):
bm = self._create_test_baymodel() bm = self._create_test_baymodel()
baymodel = self.dbapi.get_baymodel_by_id(bm['id']) baymodel = self.dbapi.get_baymodel_by_id(self.context, bm['id'])
self.assertEqual(bm['uuid'], baymodel.uuid) self.assertEqual(bm['uuid'], baymodel.uuid)
def test_get_baymodel_by_uuid(self): def test_get_baymodel_by_uuid(self):
@ -99,7 +99,7 @@ class DbBaymodelTestCase(base.DbTestCase):
def test_get_baymodel_that_does_not_exist(self): def test_get_baymodel_that_does_not_exist(self):
self.assertRaises(exception.BayModelNotFound, self.assertRaises(exception.BayModelNotFound,
self.dbapi.get_baymodel_by_id, 666) self.dbapi.get_baymodel_by_id, self.context, 666)
def test_update_baymodel(self): def test_update_baymodel(self):
bm = self._create_test_baymodel() bm = self._create_test_baymodel()
@ -120,7 +120,8 @@ class DbBaymodelTestCase(base.DbTestCase):
bm = self._create_test_baymodel() bm = self._create_test_baymodel()
self.dbapi.destroy_baymodel(bm['id']) self.dbapi.destroy_baymodel(bm['id'])
self.assertRaises(exception.BayModelNotFound, self.assertRaises(exception.BayModelNotFound,
self.dbapi.get_baymodel_by_id, bm['id']) self.dbapi.get_baymodel_by_id,
self.context, bm['id'])
def test_destroy_baymodel_by_uuid(self): def test_destroy_baymodel_by_uuid(self):
uuid = magnum_utils.generate_uuid() uuid = magnum_utils.generate_uuid()

View File

@ -35,7 +35,7 @@ class DbContainerTestCase(base.DbTestCase):
def test_get_container_by_id(self): def test_get_container_by_id(self):
container = utils.create_test_container() container = utils.create_test_container()
res = self.dbapi.get_container_by_id(container.id) res = self.dbapi.get_container_by_id(self.context, container.id)
self.assertEqual(container.id, res.id) self.assertEqual(container.id, res.id)
self.assertEqual(container.uuid, res.uuid) self.assertEqual(container.uuid, res.uuid)
@ -48,7 +48,7 @@ class DbContainerTestCase(base.DbTestCase):
def test_get_container_that_does_not_exist(self): def test_get_container_that_does_not_exist(self):
self.assertRaises(exception.ContainerNotFound, self.assertRaises(exception.ContainerNotFound,
self.dbapi.get_container_by_id, 99) self.dbapi.get_container_by_id, self.context, 99)
self.assertRaises(exception.ContainerNotFound, self.assertRaises(exception.ContainerNotFound,
self.dbapi.get_container_by_uuid, self.dbapi.get_container_by_uuid,
self.context, self.context,
@ -136,7 +136,8 @@ class DbContainerTestCase(base.DbTestCase):
container = utils.create_test_container() container = utils.create_test_container()
self.dbapi.destroy_container(container.id) self.dbapi.destroy_container(container.id)
self.assertRaises(exception.ContainerNotFound, self.assertRaises(exception.ContainerNotFound,
self.dbapi.get_container_by_id, container.id) self.dbapi.get_container_by_id,
self.context, container.id)
def test_destroy_container_by_uuid(self): def test_destroy_container_by_uuid(self):
container = utils.create_test_container() container = utils.create_test_container()

View File

@ -44,7 +44,7 @@ class DbNodeTestCase(base.DbTestCase):
def test_get_node_by_id(self): def test_get_node_by_id(self):
node = utils.create_test_node() node = utils.create_test_node()
res = self.dbapi.get_node_by_id(node.id) res = self.dbapi.get_node_by_id(self.context, node.id)
self.assertEqual(node.id, res.id) self.assertEqual(node.id, res.id)
self.assertEqual(node.uuid, res.uuid) self.assertEqual(node.uuid, res.uuid)
@ -56,7 +56,7 @@ class DbNodeTestCase(base.DbTestCase):
def test_get_node_that_does_not_exist(self): def test_get_node_that_does_not_exist(self):
self.assertRaises(exception.NodeNotFound, self.assertRaises(exception.NodeNotFound,
self.dbapi.get_node_by_id, 99) self.dbapi.get_node_by_id, self.context, 99)
self.assertRaises(exception.NodeNotFound, self.assertRaises(exception.NodeNotFound,
self.dbapi.get_node_by_uuid, self.dbapi.get_node_by_uuid,
self.context, self.context,
@ -149,7 +149,7 @@ class DbNodeTestCase(base.DbTestCase):
node = utils.create_test_node() node = utils.create_test_node()
self.dbapi.destroy_node(node.id) self.dbapi.destroy_node(node.id)
self.assertRaises(exception.NodeNotFound, self.assertRaises(exception.NodeNotFound,
self.dbapi.get_node_by_id, node.id) self.dbapi.get_node_by_id, self.context, node.id)
def test_destroy_node_by_uuid(self): def test_destroy_node_by_uuid(self):
node = utils.create_test_node() node = utils.create_test_node()

View File

@ -35,7 +35,7 @@ class TestBayObject(base.DbTestCase):
autospec=True) as mock_get_bay: autospec=True) as mock_get_bay:
mock_get_bay.return_value = self.fake_bay mock_get_bay.return_value = self.fake_bay
bay = objects.Bay.get(self.context, bay_id) bay = objects.Bay.get(self.context, bay_id)
mock_get_bay.assert_called_once_with(bay_id) mock_get_bay.assert_called_once_with(self.context, bay_id)
self.assertEqual(self.context, bay._context) self.assertEqual(self.context, bay._context)
def test_get_by_uuid(self): def test_get_by_uuid(self):

View File

@ -35,7 +35,8 @@ class TestBayModelObject(base.DbTestCase):
autospec=True) as mock_get_baymodel: autospec=True) as mock_get_baymodel:
mock_get_baymodel.return_value = self.fake_baymodel mock_get_baymodel.return_value = self.fake_baymodel
baymodel = objects.BayModel.get(self.context, baymodel_id) baymodel = objects.BayModel.get(self.context, baymodel_id)
mock_get_baymodel.assert_called_once_with(baymodel_id) mock_get_baymodel.assert_called_once_with(self.context,
baymodel_id)
self.assertEqual(self.context, baymodel._context) self.assertEqual(self.context, baymodel._context)
def test_get_by_uuid(self): def test_get_by_uuid(self):

View File

@ -35,7 +35,8 @@ class TestContainerObject(base.DbTestCase):
autospec=True) as mock_get_container: autospec=True) as mock_get_container:
mock_get_container.return_value = self.fake_container mock_get_container.return_value = self.fake_container
container = objects.Container.get(self.context, container_id) container = objects.Container.get(self.context, container_id)
mock_get_container.assert_called_once_with(container_id) mock_get_container.assert_called_once_with(self.context,
container_id)
self.assertEqual(self.context, container._context) self.assertEqual(self.context, container._context)
def test_get_by_uuid(self): def test_get_by_uuid(self):

View File

@ -35,7 +35,7 @@ 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
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(self.context, node_id)
self.assertEqual(self.context, node._context) self.assertEqual(self.context, node._context)
def test_get_by_uuid(self): def test_get_by_uuid(self):