diff --git a/src/config/api-server/tests/test_crud_basic.py b/src/config/api-server/tests/test_crud_basic.py index 65a627573c9..d45e1fc7828 100644 --- a/src/config/api-server/tests/test_crud_basic.py +++ b/src/config/api-server/tests/test_crud_basic.py @@ -950,6 +950,12 @@ def create_vns(): self.assertThat(obj_dict[0]['fq_name'][:-1], Equals(proj_obj.fq_name)) + # unanchored list with unknown filter + read_vn_objs = self._vnc_lib.virtual_networks_list( + parent_id=proj_obj.uuid, + filters={'foo': 'bar'})['virtual-networks'] + self.assertEqual(len(read_vn_objs), num_objs) + # parent anchored detailed list without filters read_vn_objs = self._vnc_lib.virtual_networks_list( parent_id=proj_obj.uuid, detail=True) diff --git a/src/config/common/vnc_cassandra.py b/src/config/common/vnc_cassandra.py index 704ff299647..0e865198652 100644 --- a/src/config/common/vnc_cassandra.py +++ b/src/config/common/vnc_cassandra.py @@ -975,7 +975,10 @@ def filter_rows(coll_infos, filters=None): return coll_infos filtered_infos = {} - columns = ['prop:%s' % filter_key for filter_key in filters] + columns = ['prop:%s' % filter_key for filter_key in filters if + filter_key in obj_class.prop_fields] + if not columns: + return coll_infos rows = self.multiget(self._OBJ_UUID_CF_NAME, coll_infos.keys(), columns=columns) diff --git a/src/config/common/vnc_rdbms.py b/src/config/common/vnc_rdbms.py index abe794be161..03cfb95c327 100644 --- a/src/config/common/vnc_rdbms.py +++ b/src/config/common/vnc_rdbms.py @@ -1078,7 +1078,9 @@ def object_list(self, res_type, parent_uuids=None, back_ref_uuids=None, if filters: for key, value in filters.iteritems(): - value = [ json.dumps(v) for v in value] + if key not in obj_class.prop_fields: + continue + value = [json.dumps(v) for v in value] sqa_objs = sqa_objs.filter(getattr(sqa_class, key).in_(value)) if count: