diff --git a/src/config/api-server/tests/test_crud_basic.py b/src/config/api-server/tests/test_crud_basic.py index dc5c20d43f9..6bd2249eaa7 100644 --- a/src/config/api-server/tests/test_crud_basic.py +++ b/src/config/api-server/tests/test_crud_basic.py @@ -1013,6 +1013,28 @@ def test_list_bulk_collection(self): parent_id=vn_uuids, filters={'display_name':'%s-ri-5' %(self.id())}) self.assertThat(len(ret_list['routing-instances']), Equals(1)) + + logger.info("Querying VNs by obj_uuids for children+backref fields.") + flexmock(self._api_server).should_call('_list_collection').once() + ret_objs = self._vnc_lib.resource_list('virtual-network', + detail=True, obj_uuids=vn_uuids, fields=['routing_instances', + 'virtual_machine_interface_back_refs']) + + ret_ri_uuids = [] + ret_vmi_uuids = [] + for vn_obj in ret_objs: + ri_children = getattr(vn_obj, 'routing_instances', + 'RI children absent') + self.assertNotEqual(ri_children, 'RI children absent') + ret_ri_uuids.extend([ri['uuid'] for ri in ri_children]) + vmi_back_refs = getattr(vn_obj, + 'virtual_machine_interface_back_refs', + 'VMI backrefs absent') + self.assertNotEqual(ri_children, 'VMI backrefs absent') + ret_vmi_uuids.extend([vmi['uuid'] for vmi in vmi_back_refs]) + + self.assertThat(set(ri_uuids), Equals(set(ret_ri_uuids))) + self.assertThat(set(vmi_uuids), Equals(set(ret_vmi_uuids))) # end test_list_bulk_collection def test_list_lib_api(self): diff --git a/src/config/api-server/vnc_cfg_api_server.py b/src/config/api-server/vnc_cfg_api_server.py index 418968a9d38..2302fdffbe8 100644 --- a/src/config/api-server/vnc_cfg_api_server.py +++ b/src/config/api-server/vnc_cfg_api_server.py @@ -1923,8 +1923,8 @@ def _list_collection(self, resource_type, parent_uuids=None, obj_class = self.get_resource_class(obj_type) obj_fields = list(obj_class.prop_fields) + \ list(obj_class.ref_fields) - if 'fields' in bottle.request.query: - obj_fields.extend(bottle.request.query.fields.split(',')) + if req_fields: + obj_fields.extend(req_fields) (ok, result) = self._db_conn.dbe_read_multi( obj_type, obj_ids_list, obj_fields)