def resource_list(self, context, filters, fields=None): vn_get_handler = vn_handler.VNetworkGetHandler(self._vnc_lib) all_vn_objs = [] if filters and 'id' in filters: # required subnets are specified, # just read in corresponding net_ids net_ids = [] for subnet_id in filters['id']: subnet_key = self._subnet_vnc_read_mapping(id=subnet_id) net_id = subnet_key.split()[0] net_ids.append(net_id) all_vn_objs.extend( vn_get_handler.get_vn_obj_list(obj_uuids=net_ids, detail=True)) else: if not context['is_admin']: proj_id = context['tenant'] else: proj_id = None vn_objs = vn_get_handler.get_vn_list_project(proj_id) all_vn_objs.extend(vn_objs) vn_objs = vn_get_handler.vn_list_shared() all_vn_objs.extend(vn_objs) return self._get_subnet_list_after_apply_filter_(all_vn_objs, filters, fields=fields)
def get_vmi_tenant_id(self, vmi_obj): if vmi_obj.parent_type != "project": net_id = vmi_obj.get_virtual_network_refs()[0]['uuid'] vn_get_handler = vn_handler.VNetworkGetHandler(self._vnc_lib) vn_obj = vn_get_handler.get_vn_obj(id=net_id) return vn_get_handler.get_vn_tenant_id(vn_obj) return self._project_id_vnc_to_neutron(vmi_obj.parent_uuid)
def _get_vmis_nets_ips(self, context, project_ids=None, device_ids=None, vmi_uuids=None, vn_ids=None): vn_list_handler = vn_handler.VNetworkGetHandler(self._vnc_lib) pool = eventlet.GreenPool() vn_objs_t = pool.spawn(vn_list_handler.get_vn_obj_list, parent_id=project_ids, detail=True) vmi_objs_t = None vmi_obj_uuids_t = None back_ref_id = [] if device_ids: back_ref_id = device_ids if vn_ids: back_ref_id.extend(vn_ids) if back_ref_id: vmi_objs_t = pool.spawn(self._resource_list, back_ref_id=back_ref_id, back_refs=True) if vmi_uuids: vmi_obj_uuids_t = pool.spawn(self._resource_list, obj_uuids=vmi_uuids, back_refs=True) elif not back_ref_id: vmi_objs_t = pool.spawn(self._resource_list, parent_id=project_ids, back_refs=True) # if admin no need to filter we can retrieve all the ips object # with only one call if context['is_admin']: iip_list_handler = res_handler.InstanceIpHandler(self._vnc_lib) iip_objs_t = pool.spawn(iip_list_handler.get_iip_obj_list, detail=True) pool.waitall() vn_objs = vn_objs_t._exit_event._result if context['is_admin']: iips_objs = iip_objs_t._exit_event._result else: vn_ids = [vn_obj.uuid for vn_obj in vn_objs] iip_list_handler = res_handler.InstanceIpHandler(self._vnc_lib) iips_objs = iip_list_handler.get_iip_obj_list(back_ref_id=vn_ids, detail=True) vmi_objs = [] if vmi_objs_t is not None: vmi_objs = vmi_objs_t._exit_event._result if vmi_obj_uuids_t is not None: vmi_objs.extend(vmi_obj_uuids_t._exit_event._result) return vmi_objs, vn_objs, iips_objs
def _get_vmis_nets_ips(self, context, project_ids=None, device_ids=None, vmi_uuids=None, vn_ids=None): vn_list_handler = vn_handler.VNetworkGetHandler(self._vnc_lib) pool = eventlet.GreenPool() vn_objs_t = pool.spawn(vn_list_handler.get_vn_obj_list, parent_id=project_ids, detail=True) vmi_objs_t = None vmi_obj_uuids_t = None back_ref_id = [] if device_ids: back_ref_id = device_ids if vn_ids: back_ref_id.extend(vn_ids) if back_ref_id: vmi_objs_t = pool.spawn(self._resource_list, back_ref_id=back_ref_id, back_refs=True) if vmi_uuids: vmi_obj_uuids_t = pool.spawn(self._resource_list, obj_uuids=vmi_uuids, back_refs=True) elif not back_ref_id: vmi_objs_t = pool.spawn(self._resource_list, parent_id=project_ids, back_refs=True) pool.waitall() vn_objs = vn_objs_t._exit_event._result vmi_objs = [] if vmi_objs_t is not None: vmi_objs = vmi_objs_t._exit_event._result or [] if vmi_obj_uuids_t is not None: vmi_objs.extend(vmi_obj_uuids_t._exit_event._result or []) vmis_ids = [vmi.uuid for vmi in vmi_objs] iip_list_handler = res_handler.InstanceIpHandler(self._vnc_lib) iips_objs = iip_list_handler.get_iip_obj_list(back_ref_id=vmis_ids, detail=True) return vmi_objs, vn_objs, iips_objs