Example #1
0
    def create_tenant_fw(self, context, **kwargs):
        nwa_data = self.proxy_l2.ensure_l2_network(context, **kwargs)
        device_id = kwargs['nwa_info']['device']['id']
        network_id = kwargs['nwa_info']['network']['id']
        dev_key = data_utils.get_device_key(device_id)
        net_key = data_utils.get_device_net_key(device_id, network_id)
        if dev_key not in nwa_data:
            nwa_data = self._create_tenant_fw(nwa_data, context, **kwargs)
        elif net_key not in nwa_data:
            nwa_data = self._update_tenant_fw(context,
                                              connect='connect',
                                              nwa_data=nwa_data,
                                              **kwargs)
        else:
            LOG.warning(_LW("unknown device."))

        if not nwa_data:
            raise nwa_exc.AgentProxyException(value=kwargs['nwa_data'])
        ret = self.proxy_tenant.update_tenant_binding(context,
                                                      kwargs['tenant_id'],
                                                      kwargs['nwa_tenant_id'],
                                                      nwa_data)
        resource_group_name_nw = kwargs['nwa_info']['resource_group_name_nw']
        vlan_id = data_utils.get_vp_net_vlan_id(nwa_data, network_id,
                                                resource_group_name_nw,
                                                nwa_const.NWA_DEVICE_TFW)

        self.nwa_l2_rpc.update_port_state_with_notifier(
            context, device_id, self.agent_top.agent_id,
            kwargs['nwa_info']['port']['id'], {
                api.PHYSICAL_NETWORK: kwargs['nwa_info']['physical_network'],
                api.NETWORK_TYPE: n_constants.TYPE_VLAN,
                api.SEGMENTATION_ID: vlan_id
            }, network_id)
        return ret
Example #2
0
    def create_general_dev(self, context, **kwargs):
        """Create GeneralDev wrapper.

        @param context: contains user information.
        @param kwargs:
        @return: dict of status and msg.
        """

        nwa_data = self._ensure_l2_network(context, **kwargs)
        if not nwa_data:
            return

        tenant_id = kwargs.get('tenant_id')
        nwa_tenant_id = kwargs.get('nwa_tenant_id')
        nwa_info = kwargs.get('nwa_info')

        network_id = nwa_info['network']['id']
        resource_group_name = nwa_info['resource_group_name']

        # create general dev
        if not check_segment_gd(network_id, resource_group_name, nwa_data):
            # raise AgentProxyException if fail
            nwa_data = self._create_general_dev(context,
                                                nwa_data=nwa_data,
                                                **kwargs)
        else:
            ret_val = self._create_general_dev_data(nwa_data=nwa_data,
                                                    **kwargs)
            if ret_val:
                nwa_data = ret_val
            # agent waits for notifier issue for libviert.
            time.sleep(WAIT_AGENT_NOTIFIER)
        # create general dev end

        ret = self.proxy_tenant.update_tenant_binding(context,
                                                      tenant_id,
                                                      nwa_tenant_id,
                                                      nwa_data,
                                                      nwa_created=False)

        segment = {
            api.PHYSICAL_NETWORK:
            nwa_info['physical_network'],
            api.NETWORK_TYPE:
            plugin_const.TYPE_VLAN,
            api.SEGMENTATION_ID:
            data_utils.get_vp_net_vlan_id(nwa_data, network_id,
                                          resource_group_name,
                                          nwa_const.NWA_DEVICE_GDV)
        }

        self.nwa_l2_rpc.update_port_state_with_notifier(
            context, nwa_info['device']['id'], self.agent_top.agent_id,
            nwa_info['port']['id'], segment, network_id)

        return ret
    def create_general_dev(self, context, **kwargs):
        """Create GeneralDev wrapper.

        @param context: contains user information.
        @param kwargs:
        @return: dict of status and msg.
        """

        nwa_data = self._ensure_l2_network(context, **kwargs)
        if not nwa_data:
            return

        tenant_id = kwargs.get('tenant_id')
        nwa_tenant_id = kwargs.get('nwa_tenant_id')
        nwa_info = kwargs.get('nwa_info')

        network_id = nwa_info['network']['id']
        resource_group_name = nwa_info['resource_group_name']

        # create general dev
        if not check_segment_gd(network_id, resource_group_name, nwa_data):
            if self.multi_dc:
                sync_vlan_id = self._create_connect_port
            else:
                sync_vlan_id = self._create_general_dev
            # raise AgentProxyException if fail
            nwa_data = sync_vlan_id(context, nwa_data=nwa_data, **kwargs)
        else:
            ret_val = self._create_general_dev_data(
                nwa_data=nwa_data, **kwargs)
            if ret_val:
                nwa_data = ret_val
            # agent waits for notifier issue for libviert.
            time.sleep(WAIT_AGENT_NOTIFIER)
        # create general dev end

        ret = self.proxy_tenant.update_tenant_binding(
            context, tenant_id, nwa_tenant_id, nwa_data,
            nwa_created=False
        )

        segment = {
            api.PHYSICAL_NETWORK: nwa_info['physical_network'],
            api.NETWORK_TYPE: plugin_const.TYPE_VLAN,
            api.SEGMENTATION_ID: data_utils.get_vp_net_vlan_id(
                nwa_data, network_id, resource_group_name,
                nwa_const.NWA_DEVICE_GDV)
        }

        self.nwa_l2_rpc.update_port_state_with_notifier(
            context, nwa_info['device']['id'], self.agent_top.agent_id,
            nwa_info['port']['id'], segment, network_id
        )

        return ret
Example #4
0
    def create_tenant_fw(self, context, **kwargs):
        nwa_data = self.proxy_l2.ensure_l2_network(context, **kwargs)
        device_id = kwargs['nwa_info']['device']['id']
        network_id = kwargs['nwa_info']['network']['id']
        dev_key = data_utils.get_device_key(device_id)
        net_key = data_utils.get_device_net_key(device_id, network_id)
        if dev_key not in nwa_data:
            nwa_data = self._create_tenant_fw(nwa_data, context, **kwargs)
        elif net_key not in nwa_data:
            nwa_data = self._update_tenant_fw(
                context, connect='connect', nwa_data=nwa_data, **kwargs)
        else:
            LOG.warning(_LW("unknown device."))

        if not nwa_data:
            raise nwa_exc.AgentProxyException(value=kwargs['nwa_data'])
        ret = self.proxy_tenant.update_tenant_binding(
            context,
            kwargs['tenant_id'], kwargs['nwa_tenant_id'],
            nwa_data
        )
        resource_group_name_nw = kwargs['nwa_info']['resource_group_name_nw']
        vlan_id = data_utils.get_vp_net_vlan_id(nwa_data, network_id,
                                                resource_group_name_nw,
                                                nwa_const.NWA_DEVICE_TFW)

        self.nwa_l2_rpc.update_port_state_with_notifier(
            context,
            device_id,
            self.agent_top.agent_id,
            kwargs['nwa_info']['port']['id'],
            {
                api.PHYSICAL_NETWORK: kwargs['nwa_info']['physical_network'],
                api.NETWORK_TYPE: n_constants.TYPE_VLAN,
                api.SEGMENTATION_ID: vlan_id
            },
            network_id
        )
        return ret