Object: pass filter to bay list

get_bay_list in db api layer has support adding filters before query bay,
but bay object doesn't pass filter yet.

This patch enables filter by adding parameter filter in bay's list method.

Closes-Bug: #1467735
Change-Id: I7969727544dff2c4bf5e556ccac1c5574a8f6620
This commit is contained in:
Eli Qiao 2015-06-23 15:12:34 +08:00
parent 5d94fc8a06
commit b6b355d090
2 changed files with 22 additions and 2 deletions

View File

@ -125,7 +125,7 @@ class Bay(base.MagnumPersistentObject, base.MagnumObject,
@base.remotable_classmethod
def list(cls, context, limit=None, marker=None,
sort_key=None, sort_dir=None):
sort_key=None, sort_dir=None, filters=None):
"""Return a list of Bay objects.
:param context: Security context.
@ -133,13 +133,17 @@ class Bay(base.MagnumPersistentObject, base.MagnumObject,
:param marker: pagination marker for large data sets.
:param sort_key: column to sort results by.
:param sort_dir: direction to sort. "asc" or "desc".
:param filters: filter dict, can includes 'baymodel_id', 'name',
'node_count', 'stack_id', 'api_address',
'node_addresses', 'project_id', 'user_id'.
:returns: a list of :class:`Bay` object.
"""
db_bays = cls.dbapi.get_bay_list(context, limit=limit,
marker=marker,
sort_key=sort_key,
sort_dir=sort_dir)
sort_dir=sort_dir,
filters=filters)
return Bay._from_db_object_list(db_bays, cls, context)
@base.remotable

View File

@ -70,6 +70,22 @@ class TestBayObject(base.DbTestCase):
self.assertIsInstance(bays[0], objects.Bay)
self.assertEqual(self.context, bays[0]._context)
def test_list_with_filters(self):
with mock.patch.object(self.dbapi, 'get_bay_list',
autospec=True) as mock_get_list:
mock_get_list.return_value = [self.fake_bay]
filters = {'name': 'bay1'}
bays = objects.Bay.list(self.context, filters=filters)
mock_get_list.assert_called_once_with(self.context, sort_key=None,
sort_dir=None,
filters=filters, limit=None,
marker=None)
self.assertEqual(mock_get_list.call_count, 1)
self.assertThat(bays, HasLength(1))
self.assertIsInstance(bays[0], objects.Bay)
self.assertEqual(self.context, bays[0]._context)
def test_create(self):
with mock.patch.object(self.dbapi, 'create_bay',
autospec=True) as mock_create_bay: