Merge "DB: Support filter_by status in get_bay_list"

This commit is contained in:
Jenkins 2015-06-24 01:50:15 +00:00 committed by Gerrit Code Review
commit e1440c8e09
3 changed files with 19 additions and 3 deletions

View File

@ -134,6 +134,8 @@ class Connection(api.Connection):
query = query.filter_by(project_id=filters['project_id'])
if 'user_id' in filters:
query = query.filter_by(user_id=filters['user_id'])
if 'status' in filters:
query = query.filter(models.Bay.status.in_(filters['status']))
return query

View File

@ -135,7 +135,8 @@ class Bay(base.MagnumPersistentObject, base.MagnumObject,
: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'.
'node_addresses', 'project_id', 'user_id',
'status'(should be a status list).
:returns: a list of :class:`Bay` object.
"""

View File

@ -19,6 +19,7 @@ import six
from magnum.common import exception
from magnum.common import utils as magnum_utils
from magnum.objects.bay import Status as bay_status
from magnum.tests.unit.db import base
from magnum.tests.unit.db import utils
@ -81,12 +82,18 @@ class DbBayTestCase(base.DbTestCase):
bay1 = utils.create_test_bay(
name='bay-one',
uuid=magnum_utils.generate_uuid(),
baymodel_id=bm1['uuid'])
baymodel_id=bm1['uuid'],
status=bay_status.CREATE_IN_PROGRESS)
bay2 = utils.create_test_bay(
name='bay-two',
uuid=magnum_utils.generate_uuid(),
baymodel_id=bm2['uuid'],
node_count=1)
node_count=1,
status=bay_status.UPDATE_IN_PROGRESS)
bay3 = utils.create_test_bay(
name='bay-three',
node_count=2,
status=bay_status.DELETE_IN_PROGRESS)
res = self.dbapi.get_bay_list(self.context,
filters={'baymodel_id': bm1['uuid']})
@ -112,6 +119,12 @@ class DbBayTestCase(base.DbTestCase):
filters={'node_count': 1})
self.assertEqual([bay2.id], [r.id for r in res])
filters = {'status': [bay_status.CREATE_IN_PROGRESS,
bay_status.DELETE_IN_PROGRESS]}
res = self.dbapi.get_bay_list(self.context,
filters=filters)
self.assertEqual([bay1.id, bay3.id], [r.id for r in res])
def test_get_bay_list_baymodel_not_exist(self):
utils.create_test_bay()
self.assertEqual(1, len(self.dbapi.get_bay_list(self.context)))