Fix wrong filter of backups in db api

The function _process_backups_filters aims to filter backups. So
fix the model and metadata attribute.

Change-Id: Ie6807745fa89731b9db3bc29da653db269219bce
Closes-Bug: #1791003
This commit is contained in:
zhu.boxiang 2018-09-06 12:13:34 +08:00
parent 9da2a3363b
commit 18570a716c
2 changed files with 12 additions and 1 deletions

View File

@ -5192,7 +5192,7 @@ def _process_backups_filters(query, filters):
filters_dict = {}
for key, value in filters.items():
if key == 'metadata':
col_attr = getattr(models.Snapshot, 'snapshot_metadata')
col_attr = getattr(models.Backup, 'backup_metadata')
for k, v in value.items():
query = query.filter(col_attr.any(key=k, value=v))
else:

View File

@ -2794,6 +2794,17 @@ class DBAPIBackupTestCase(BaseTest):
filtered_backups = db.backup_get_all(self.ctxt, filters=filters)
self._assertEqualListsOfObjects([], filtered_backups)
def tests_backup_get_all_by_filter_metadata(self):
backups = self._get_values()
for i in range(3):
backup = backups[i]
backup['metadata'] = {'fake_key': 'fake' + str(i)}
created = [db.backup_create(self.ctxt, values)
for values in backups]
filters = {'metadata': created[1]['metadata']}
filtered_backups = db.backup_get_all(self.ctxt, filters=filters)
self.assertEqual(len([created[1]]), len(filtered_backups))
def test_backup_get_all_by_host(self):
byhost = db.backup_get_all_by_host(self.ctxt,
self.created[1]['host'])