Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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