Skip to content

Commit

Permalink
config: pick any requested fields from post body in bulk list oper
Browse files Browse the repository at this point in the history
Extra fields (beyond props+refs) are specified in POST body in
bulk list instead of query string.

Change-Id: I7184babc86cfec8b005aee05b3e487b08c5a3f62
Closes-Bug: #1473261
  • Loading branch information
Hampapur Ajay committed Jul 16, 2015
1 parent ac9af4d commit fbf400c
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 2 deletions.
22 changes: 22 additions & 0 deletions src/config/api-server/tests/test_crud_basic.py
Expand Up @@ -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):
Expand Down
4 changes: 2 additions & 2 deletions src/config/api-server/vnc_cfg_api_server.py
Expand Up @@ -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)

Expand Down

0 comments on commit fbf400c

Please sign in to comment.