Fix dbapi method _add_baymodels_filters
Change-Id: Id522322a461bcbed50970c22dceecbc87cab1c39changes/48/145548/3
parent
decfb9c747
commit
9ab299d69a
|
@ -16,8 +16,6 @@
|
|||
|
||||
"""SQLAlchemy storage backend."""
|
||||
|
||||
import datetime
|
||||
|
||||
from oslo.config import cfg
|
||||
from oslo.db import exception as db_exc
|
||||
from oslo.db.sqlalchemy import session as db_session
|
||||
|
@ -251,26 +249,19 @@ class Connection(api.Connection):
|
|||
if filters is None:
|
||||
filters = []
|
||||
|
||||
if 'associated' in filters:
|
||||
if filters['associated']:
|
||||
query = query.filter(models.BayModel.instance_uuid is not None)
|
||||
else:
|
||||
query = query.filter(models.BayModel.instance_uuid is None)
|
||||
if 'reserved' in filters:
|
||||
if filters['reserved']:
|
||||
query = query.filter(models.BayModel.reservation is not None)
|
||||
else:
|
||||
query = query.filter(models.BayModel.reservation is None)
|
||||
if 'maintenance' in filters:
|
||||
query = query.filter_by(maintenance=filters['maintenance'])
|
||||
if 'driver' in filters:
|
||||
query = query.filter_by(driver=filters['driver'])
|
||||
if 'provision_state' in filters:
|
||||
query = query.filter_by(provision_state=filters['provision_state'])
|
||||
if 'provisioned_before' in filters:
|
||||
limit = timeutils.utcnow() - datetime.timedelta(
|
||||
seconds=filters['provisioned_before'])
|
||||
query = query.filter(models.BayModel.provision_updated_at < limit)
|
||||
if 'name' in filters:
|
||||
query = query.filter_by(name=filters['name'])
|
||||
if 'image_id' in filters:
|
||||
query = query.filter_by(image_id=filters['image_id'])
|
||||
if 'flavor_id' in filters:
|
||||
query = query.filter_by(flavor_id=filters['flavor_id'])
|
||||
if 'keypair_id' in filters:
|
||||
query = query.filter_by(keypair_id=filters['keypair_id'])
|
||||
if 'external_network_id' in filters:
|
||||
query = query.filter_by(
|
||||
external_network_id=filters['external_network_id'])
|
||||
if 'dns_nameserver' in filters:
|
||||
query = query.filter_by(dns_nameserver=filters['dns_nameserver'])
|
||||
|
||||
return query
|
||||
|
||||
|
|
|
@ -41,6 +41,48 @@ class DbBaymodelTestCase(base.DbTestCase):
|
|||
res_uuids = [r.uuid for r in res]
|
||||
self.assertEqual(sorted(uuids), sorted(res_uuids))
|
||||
|
||||
def test_get_baymodel_list_with_filters(self):
|
||||
bm1 = self._create_test_baymodel(id=1, name='bm-one',
|
||||
uuid=magnum_utils.generate_uuid(),
|
||||
image_id='image1')
|
||||
bm2 = self._create_test_baymodel(id=2, name='bm-two',
|
||||
uuid=magnum_utils.generate_uuid(),
|
||||
image_id='image2')
|
||||
|
||||
res = self.dbapi.get_baymodel_list(filters={'name': 'bm-one'})
|
||||
self.assertEqual([bm1['id']], [r.id for r in res])
|
||||
|
||||
res = self.dbapi.get_baymodel_list(filters={'name': 'bad-name'})
|
||||
self.assertEqual([], [r.id for r in res])
|
||||
|
||||
res = self.dbapi.get_baymodel_list(filters={'image_id': 'image1'})
|
||||
self.assertEqual([bm1['id']], [r.id for r in res])
|
||||
|
||||
res = self.dbapi.get_baymodel_list(filters={'image_id': 'image2'})
|
||||
self.assertEqual([bm2['id']], [r.id for r in res])
|
||||
|
||||
def test_get_baymodelinfo_list_defaults(self):
|
||||
bm_id_list = []
|
||||
for i in range(1, 6):
|
||||
bm = self._create_test_baymodel(id=i,
|
||||
uuid=magnum_utils.generate_uuid())
|
||||
bm_id_list.append(bm['id'])
|
||||
res = [i[0] for i in self.dbapi.get_baymodelinfo_list()]
|
||||
self.assertEqual(sorted(res), sorted(bm_id_list))
|
||||
|
||||
def test_get_baymodelinfo_list_with_cols(self):
|
||||
uuids = {}
|
||||
names = {}
|
||||
for i in range(1, 6):
|
||||
uuid = magnum_utils.generate_uuid()
|
||||
name = "node" + str(i)
|
||||
bm = self._create_test_baymodel(id=i, name=name, uuid=uuid)
|
||||
uuids[bm['id']] = uuid
|
||||
names[bm['id']] = name
|
||||
res = self.dbapi.get_baymodelinfo_list(columns=['id', 'name', 'uuid'])
|
||||
self.assertEqual(names, dict((r[0], r[1]) for r in res))
|
||||
self.assertEqual(uuids, dict((r[0], r[2]) for r in res))
|
||||
|
||||
def test_get_baymodel_by_id(self):
|
||||
bm = self._create_test_baymodel()
|
||||
baymodel = self.dbapi.get_baymodel_by_id(bm['id'])
|
||||
|
|
Loading…
Reference in New Issue