Exemplo n.º 1
0
    def _create_tenant_fw(self, nwa_data, context, **kwargs):
        device_id = kwargs['nwa_info']['device']['id']
        network_id = kwargs['nwa_info']['network']['id']
        rcode, body = self.client.l3.create_tenant_fw(
            kwargs['nwa_tenant_id'], kwargs['nwa_info']['resource_group_name'],
            kwargs['nwa_info']['port']['ip'],
            data_utils.get_vlan_logical_name(nwa_data, network_id),
            kwargs['nwa_info']['network']['vlan_type'])
        if rcode != 200 or body['status'] != 'SUCCEED':
            return None

        LOG.debug("CreateTenantFW SUCCEED.")

        tfw_name = body['resultdata']['TenantFWName']
        resource_group_name_nw = kwargs['nwa_info']['resource_group_name_nw']

        data_utils.set_tfw_device_data(nwa_data, device_id, tfw_name,
                                       kwargs['nwa_info'])
        data_utils.set_tfw_interface_data(nwa_data, device_id, network_id,
                                          resource_group_name_nw, tfw_name,
                                          kwargs['nwa_info'])
        vlan_id = data_utils.get_vlan_id(network_id, nwa_data,
                                         body['resultdata'])
        data_utils.set_vp_net_data(nwa_data, network_id,
                                   resource_group_name_nw,
                                   nwa_const.NWA_DEVICE_TFW, vlan_id)

        if self.tenant_fw_create_hook:
            self.tenant_fw_create_hook(context, tfw_name, **kwargs)
        return nwa_data
Exemplo n.º 2
0
    def _delete_nat(self, context, **kwargs):
        nwa_data = kwargs.get('nwa_data')
        floating = kwargs.get('floating')

        vlan_logical_name = data_utils.get_vlan_logical_name(
            nwa_data, floating['floating_network_id'])
        dev_name = data_utils.get_tfw_device_name(nwa_data,
                                                  floating['device_id'])

        # setting nat
        rcode, body = self.client.l3.delete_nat(
            kwargs.get('nwa_tenant_id'),
            vlan_logical_name,
            'PublicVLAN',
            floating['fixed_ip_address'],
            floating['floating_ip_address'],
            dev_name,
            data=floating)

        if rcode != 200 or body['status'] != 'SUCCEED':
            LOG.debug("DeleteNat Error: invalid responce."
                      " rcode=%d status=%s" % (rcode, body))
            raise nwa_exc.AgentProxyException(value=None)
        else:
            LOG.debug("DeleteNat SUCCEED")
            data_utils.strip_floatingip_data(nwa_data, floating)
            return nwa_data
Exemplo n.º 3
0
    def _setting_nat(self, context, **kwargs):
        nwa_tenant_id = kwargs.get('nwa_tenant_id')
        nwa_data = kwargs.get('nwa_data')
        floating = kwargs.get('floating')

        # new code.(neet ut)
        nat_key = 'NAT_' + floating['id']
        if nat_key in nwa_data:
            LOG.debug('already in use NAT key =%s', nat_key)
            raise nwa_exc.AgentProxyException(value=None)

        vlan_logical_name = data_utils.get_vlan_logical_name(
            nwa_data, floating['floating_network_id'])
        dev_name = data_utils.get_tfw_device_name(nwa_data,
                                                  floating['device_id'])

        # setting nat
        rcode, body = self.client.l3.setting_nat(
            nwa_tenant_id,
            vlan_logical_name,
            'PublicVLAN',
            floating['fixed_ip_address'],
            floating['floating_ip_address'],
            dev_name,
            data=floating)

        if rcode != 200 or body['status'] != 'SUCCEED':
            LOG.debug("SettingNat Error: invalid responce."
                      " rcode=%d status=%s" % (rcode, body))
            raise nwa_exc.AgentProxyException(value=None)
        else:
            LOG.debug("SettingNat SUCCEED")
            data_utils.set_floatingip_data(nwa_data, floating)
            return nwa_data
Exemplo n.º 4
0
    def _delete_general_dev(self, context, **kwargs):
        nwa_tenant_id = kwargs.get('nwa_tenant_id')
        nwa_info = kwargs.get('nwa_info')
        nwa_data = kwargs.get('nwa_data')

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

        # delete general dev
        logical_name = data_utils.get_vlan_logical_name(nwa_data, network_id)
        rcode, body = self.client.l2.delete_general_dev(
            nwa_tenant_id,
            resource_group,
            logical_name,
        )
        if rcode != 200:
            LOG.debug("DeleteGeneralDev Error: invalid response. rcode = %d",
                      rcode)
            # error port send to plugin
            raise nwa_exc.AgentProxyException(value=nwa_data)

        if body['status'] == 'SUCCEED':
            LOG.debug("DeleteGeneralDev SUCCEED")
            nwa_data = self._delete_general_dev_data(**kwargs)
            self._delete_general_dev_segment(context, nwa_data, nwa_info)
        else:
            LOG.debug("DeleteGeneralDev %s", body['status'])
            raise nwa_exc.AgentProxyException(value=nwa_data)
        # delete general dev end

        return nwa_data
Exemplo n.º 5
0
    def _delete_vlan(self, context, **kwargs):
        tenant_id = kwargs.get('tenant_id')
        nwa_tenant_id = kwargs.get('nwa_tenant_id')
        nwa_info = kwargs.get('nwa_info')
        nwa_data = kwargs.get('nwa_data')

        vlan_type = nwa_info['network']['vlan_type']
        physical_network = nwa_info['physical_network']
        network_id = nwa_info['network']['id']

        # delete vlan
        rcode, body = self.client.l2.delete_vlan(
            nwa_tenant_id,
            data_utils.get_vlan_logical_name(nwa_data, network_id), vlan_type)

        if rcode == 200 and body['status'] == 'SUCCEED':
            LOG.debug("DeleteVlan SUCCEED.")

            data_utils.strip_network_data(nwa_data, network_id)
            data_utils.strip_vlan_data(nwa_data, network_id)

            self.nwa_l2_rpc.release_dynamic_segment_from_agent(
                context, physical_network, network_id)

        else:
            LOG.debug("DeleteVlan FAILED.")
            self.proxy_tenant.update_tenant_binding(context, tenant_id,
                                                    nwa_tenant_id, nwa_data)
            raise nwa_exc.AgentProxyException(value=nwa_data)

        return nwa_data
Exemplo n.º 6
0
    def _setting_nat(self, context, **kwargs):
        nwa_tenant_id = kwargs.get('nwa_tenant_id')
        nwa_data = kwargs.get('nwa_data')
        floating = kwargs.get('floating')

        # new code.(neet ut)
        nat_key = 'NAT_' + floating['id']
        if nat_key in nwa_data:
            LOG.debug('already in use NAT key =%s', nat_key)
            raise nwa_exc.AgentProxyException(value=None)

        vlan_logical_name = data_utils.get_vlan_logical_name(
            nwa_data, floating['floating_network_id'])
        dev_name = data_utils.get_tfw_device_name(nwa_data,
                                                  floating['device_id'])

        # setting nat
        rcode, body = self.client.l3.setting_nat(
            nwa_tenant_id,
            vlan_logical_name, 'PublicVLAN',
            floating['fixed_ip_address'],
            floating['floating_ip_address'], dev_name, data=floating
        )

        if rcode != 200 or body['status'] != 'SUCCEED':
            LOG.debug("SettingNat Error: invalid responce."
                      " rcode=%d status=%s" % (rcode, body))
            raise nwa_exc.AgentProxyException(value=None)
        else:
            LOG.debug("SettingNat SUCCEED")
            data_utils.set_floatingip_data(nwa_data, floating)
            return nwa_data
Exemplo n.º 7
0
    def _update_tenant_fw_connect(self, context, **kwargs):
        nwa_data = kwargs.get('nwa_data')

        device_id = kwargs['nwa_info']['device']['id']
        network_id = kwargs['nwa_info']['network']['id']

        rcode, body = self.client.l3.update_tenant_fw(
            kwargs['nwa_tenant_id'],
            data_utils.get_tfw_device_name(nwa_data, device_id),
            kwargs['nwa_info']['port']['ip'],
            data_utils.get_vlan_logical_name(nwa_data, network_id),
            kwargs['nwa_info']['network']['vlan_type'],
            connect='connect')

        if rcode != 200 or body['status'] != 'SUCCEED':
            raise nwa_exc.AgentProxyException(value=None)

        LOG.debug("UpdateTenantFW succeed.")
        resource_group_name_nw = kwargs['nwa_info']['resource_group_name_nw']
        tfw_name = body['resultdata']['TenantFWName']

        data_utils.set_tfw_interface_data(nwa_data, device_id, network_id,
                                          resource_group_name_nw,
                                          tfw_name, kwargs['nwa_info'])
        vlan_id = data_utils.get_vlan_id(network_id, nwa_data,
                                         body['resultdata'])
        data_utils.set_vp_net_data(nwa_data, network_id,
                                   resource_group_name_nw,
                                   nwa_const.NWA_DEVICE_TFW,
                                   vlan_id)

        if self.tenant_fw_connect_hook:
            self.tenant_fw_connect_hook(context, tfw_name, **kwargs)
        return nwa_data
Exemplo n.º 8
0
    def _create_tenant_fw(self, nwa_data, context, **kwargs):
        device_id = kwargs['nwa_info']['device']['id']
        network_id = kwargs['nwa_info']['network']['id']
        rcode, body = self.client.l3.create_tenant_fw(
            kwargs['nwa_tenant_id'],
            kwargs['nwa_info']['resource_group_name'],
            kwargs['nwa_info']['port']['ip'],
            data_utils.get_vlan_logical_name(nwa_data, network_id),
            kwargs['nwa_info']['network']['vlan_type']
        )
        if rcode != 200 or body['status'] != 'SUCCEED':
            return None

        LOG.debug("CreateTenantFW SUCCEED.")

        tfw_name = body['resultdata']['TenantFWName']
        resource_group_name_nw = kwargs['nwa_info']['resource_group_name_nw']

        data_utils.set_tfw_device_data(nwa_data, device_id,
                                       tfw_name, kwargs['nwa_info'])
        data_utils.set_tfw_interface_data(nwa_data, device_id, network_id,
                                          resource_group_name_nw,
                                          tfw_name, kwargs['nwa_info'])
        vlan_id = data_utils.get_vlan_id(network_id, nwa_data,
                                         body['resultdata'])
        data_utils.set_vp_net_data(nwa_data, network_id,
                                   resource_group_name_nw,
                                   nwa_const.NWA_DEVICE_TFW,
                                   vlan_id)

        if self.tenant_fw_create_hook:
            self.tenant_fw_create_hook(context, tfw_name, **kwargs)
        return nwa_data
Exemplo n.º 9
0
    def _update_tenant_fw_connect(self, context, **kwargs):
        nwa_data = kwargs.get('nwa_data')

        device_id = kwargs['nwa_info']['device']['id']
        network_id = kwargs['nwa_info']['network']['id']

        rcode, body = self.client.l3.update_tenant_fw(
            kwargs['nwa_tenant_id'],
            data_utils.get_tfw_device_name(nwa_data, device_id),
            kwargs['nwa_info']['port']['ip'],
            data_utils.get_vlan_logical_name(nwa_data, network_id),
            kwargs['nwa_info']['network']['vlan_type'],
            connect='connect')

        if rcode != 200 or body['status'] != 'SUCCEED':
            raise nwa_exc.AgentProxyException(value=None)

        LOG.debug("UpdateTenantFW succeed.")
        resource_group_name_nw = kwargs['nwa_info']['resource_group_name_nw']
        tfw_name = body['resultdata']['TenantFWName']

        data_utils.set_tfw_interface_data(nwa_data, device_id, network_id,
                                          resource_group_name_nw, tfw_name,
                                          kwargs['nwa_info'])
        vlan_id = data_utils.get_vlan_id(network_id, nwa_data,
                                         body['resultdata'])
        data_utils.set_vp_net_data(nwa_data, network_id,
                                   resource_group_name_nw,
                                   nwa_const.NWA_DEVICE_TFW, vlan_id)

        if self.tenant_fw_connect_hook:
            self.tenant_fw_connect_hook(context, tfw_name, **kwargs)
        return nwa_data
Exemplo n.º 10
0
    def _delete_general_dev(self, context, **kwargs):
        nwa_tenant_id = kwargs.get('nwa_tenant_id')
        nwa_info = kwargs.get('nwa_info')
        nwa_data = kwargs.get('nwa_data')

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

        # delete general dev
        logical_name = data_utils.get_vlan_logical_name(nwa_data, network_id)
        rcode, body = self.client.l2.delete_general_dev(
            nwa_tenant_id,
            resource_group,
            logical_name,
        )
        if rcode != 200:
            LOG.debug("DeleteGeneralDev Error: invalid response. rcode = %d",
                      rcode)
            # error port send to plugin
            raise nwa_exc.AgentProxyException(value=nwa_data)

        if body['status'] == 'SUCCEED':
            LOG.debug("DeleteGeneralDev SUCCEED")
            nwa_data = self._delete_general_dev_data(**kwargs)
        else:
            LOG.debug("DeleteGeneralDev %s", body['status'])
            raise nwa_exc.AgentProxyException(value=nwa_data)
        # delete general dev end

        return nwa_data
Exemplo n.º 11
0
 def delete_connect_port(self, context, **kwargs):
     nwa_info = kwargs['nwa_info']
     nwa_data = kwargs['nwa_data']
     network_id = nwa_info['network']['id']
     vlan_id = nwa_info['network']['vlan_id']
     resource_group_name = nwa_info['resource_group_name']
     rcode, body = self.client.l2.delete_connect_port(
         kwargs['nwa_tenant_id'],
         resource_group_name,
         data_utils.get_vlan_logical_name(nwa_data, network_id),
         nwa_info['network']['vlan_type'],
         vlan_id
     )
     if rcode == 200 and body['status'] == 'SUCCEED':
         LOG.debug("DeleteConnectPort SUCCEED")
         return body
Exemplo n.º 12
0
    def _update_tenant_fw_disconnect(self, context, **kwargs):
        """Update Tenant FW

        @param context: contains user information.
        @param kwargs:
        @return: nwa_data
        @raise AgentProxyException
        """
        if self.multi_dc:
            self.proxy_l2.delete_connect_port(context, **kwargs)
        nwa_data = kwargs.get('nwa_data')
        device_id = kwargs['nwa_info']['device']['id']
        network_id = kwargs['nwa_info']['network']['id']
        device_name = data_utils.get_tfw_device_name(nwa_data, device_id)

        if self.tenant_fw_disconnect_hook:
            self.tenant_fw_disconnect_hook(context, device_name, **kwargs)

        rcode, body = self.client.l3.update_tenant_fw(
            kwargs['nwa_tenant_id'],
            device_name,
            kwargs['nwa_info']['port']['ip'],
            data_utils.get_vlan_logical_name(nwa_data, network_id),
            kwargs['nwa_info']['network']['vlan_type'],
            connect='disconnect')
        if rcode != 200 or body['status'] != 'SUCCEED':
            LOG.error(_LE("UpdateTenantFW(disconnect) FAILED."))
            info = {
                'status': 'FAILED',
                'msg': 'UpdateTenantFW(disconnect) FAILED.'
            }
            raise nwa_exc.AgentProxyException(value=info)

        LOG.debug("UpdateTenantFW(disconnect) SUCCEED.")
        resource_group_name_nw = kwargs['nwa_info']['resource_group_name_nw']

        data_utils.strip_interface_data(nwa_data, device_id, network_id,
                                        resource_group_name_nw)
        data_utils.strip_tfw_data_if_exist(nwa_data, device_id, network_id,
                                           resource_group_name_nw)

        if not l2.check_segment_tfw(network_id, resource_group_name_nw,
                                    nwa_data):
            data_utils.strip_vp_net_data(nwa_data, network_id,
                                         resource_group_name_nw,
                                         nwa_const.NWA_DEVICE_TFW)
        return nwa_data
Exemplo n.º 13
0
    def _update_tenant_fw_disconnect(self, context, **kwargs):
        """Update Tenant FW

        @param context: contains user information.
        @param kwargs:
        @return: nwa_data
        @raise AgentProxyException
        """
        if self.multi_dc:
            self.proxy_l2.delete_connect_port(context, **kwargs)
        nwa_data = kwargs.get('nwa_data')
        device_id = kwargs['nwa_info']['device']['id']
        network_id = kwargs['nwa_info']['network']['id']
        device_name = data_utils.get_tfw_device_name(nwa_data, device_id)

        if self.tenant_fw_disconnect_hook:
            self.tenant_fw_disconnect_hook(context, device_name, **kwargs)

        rcode, body = self.client.l3.update_tenant_fw(
            kwargs['nwa_tenant_id'],
            device_name,
            kwargs['nwa_info']['port']['ip'],
            data_utils.get_vlan_logical_name(nwa_data, network_id),
            kwargs['nwa_info']['network']['vlan_type'],
            connect='disconnect'
        )
        if rcode != 200 or body['status'] != 'SUCCEED':
            LOG.error(_LE("UpdateTenantFW(disconnect) FAILED."))
            info = {'status': 'FAILED',
                    'msg': 'UpdateTenantFW(disconnect) FAILED.'}
            raise nwa_exc.AgentProxyException(value=info)

        LOG.debug("UpdateTenantFW(disconnect) SUCCEED.")
        resource_group_name_nw = kwargs['nwa_info']['resource_group_name_nw']

        data_utils.strip_interface_data(nwa_data, device_id, network_id,
                                        resource_group_name_nw)
        data_utils.strip_tfw_data_if_exist(nwa_data, device_id, network_id,
                                           resource_group_name_nw)

        if not l2.check_segment_tfw(network_id, resource_group_name_nw,
                                    nwa_data):
            data_utils.strip_vp_net_data(nwa_data, network_id,
                                         resource_group_name_nw,
                                         nwa_const.NWA_DEVICE_TFW)
        return nwa_data
Exemplo n.º 14
0
    def _create_general_dev(self, context, **kwargs):
        nwa_tenant_id = kwargs.get('nwa_tenant_id')
        nwa_info = kwargs.get('nwa_info')
        nwa_data = kwargs.get('nwa_data')

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

        port_type = None

        rcode, body = self.client.l2.create_general_dev(
            nwa_tenant_id,
            resource_group_name,
            data_utils.get_vlan_logical_name(nwa_data, network_id),
            port_type=port_type
        )

        if rcode == 200 and body['status'] == 'SUCCEED':
            LOG.debug("CreateGeneralDev SUCCEED")

            vlan_key = data_utils.get_vlan_key(network_id)
            if vlan_key not in nwa_data:
                LOG.error(_LE("not create vlan."))
                raise nwa_exc.AgentProxyException(value=nwa_data)

            vlan_id = data_utils.get_vlan_id(network_id, nwa_data,
                                             body['resultdata'])
            data_utils.set_vp_net_data(nwa_data, network_id,
                                       resource_group_name,
                                       nwa_const.NWA_DEVICE_GDV,
                                       vlan_id)

            self._append_device_for_gdv(nwa_info, nwa_data)
        else:
            LOG.debug("CreateGeneralDev %s", body['status'])
            raise nwa_exc.AgentProxyException(value=nwa_data)

        return nwa_data
Exemplo n.º 15
0
    def _delete_nat(self, context, **kwargs):
        nwa_data = kwargs.get('nwa_data')
        floating = kwargs.get('floating')

        vlan_logical_name = data_utils.get_vlan_logical_name(
            nwa_data, floating['floating_network_id'])
        dev_name = data_utils.get_tfw_device_name(nwa_data,
                                                  floating['device_id'])

        # setting nat
        rcode, body = self.client.l3.delete_nat(
            kwargs.get('nwa_tenant_id'),
            vlan_logical_name, 'PublicVLAN',
            floating['fixed_ip_address'],
            floating['floating_ip_address'], dev_name, data=floating)

        if rcode != 200 or body['status'] != 'SUCCEED':
            LOG.debug("DeleteNat Error: invalid responce."
                      " rcode=%d status=%s" % (rcode, body))
            raise nwa_exc.AgentProxyException(value=None)
        else:
            LOG.debug("DeleteNat SUCCEED")
            data_utils.strip_floatingip_data(nwa_data, floating)
            return nwa_data
Exemplo n.º 16
0
    def _delete_vlan(self, context, **kwargs):
        tenant_id = kwargs.get('tenant_id')
        nwa_tenant_id = kwargs.get('nwa_tenant_id')
        nwa_info = kwargs.get('nwa_info')
        nwa_data = kwargs.get('nwa_data')

        vlan_type = nwa_info['network']['vlan_type']
        physical_network = nwa_info['physical_network']
        network_id = nwa_info['network']['id']

        # delete vlan
        rcode, body = self.client.l2.delete_vlan(
            nwa_tenant_id,
            data_utils.get_vlan_logical_name(nwa_data, network_id),
            vlan_type
        )

        if rcode == 200 and body['status'] == 'SUCCEED':
            LOG.debug("DeleteVlan SUCCEED.")

            data_utils.strip_network_data(nwa_data, network_id)
            data_utils.strip_vlan_data(nwa_data, network_id)

            self.nwa_l2_rpc.release_dynamic_segment_from_agent(
                context, physical_network,
                network_id
            )

        else:
            LOG.debug("DeleteVlan FAILED.")
            self.proxy_tenant.update_tenant_binding(
                context, tenant_id, nwa_tenant_id, nwa_data
            )
            raise nwa_exc.AgentProxyException(value=nwa_data)

        return nwa_data
Exemplo n.º 17
0
    def _create_general_dev(self, context, **kwargs):
        nwa_tenant_id = kwargs.get('nwa_tenant_id')
        nwa_info = kwargs.get('nwa_info')
        nwa_data = kwargs.get('nwa_data')

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

        port_type = None

        rcode, body = self.client.l2.create_general_dev(
            nwa_tenant_id,
            resource_group_name,
            data_utils.get_vlan_logical_name(nwa_data, network_id),
            port_type=port_type)

        if rcode == 200 and body['status'] == 'SUCCEED':
            LOG.debug("CreateGeneralDev SUCCEED")

            vlan_key = data_utils.get_vlan_key(network_id)
            if vlan_key not in nwa_data:
                LOG.error(_LE("not create vlan."))
                raise nwa_exc.AgentProxyException(value=nwa_data)

            vlan_id = data_utils.get_vlan_id(network_id, nwa_data,
                                             body['resultdata'])
            data_utils.set_vp_net_data(nwa_data, network_id,
                                       resource_group_name,
                                       nwa_const.NWA_DEVICE_GDV, vlan_id)

            self._append_device_for_gdv(nwa_info, nwa_data)
        else:
            LOG.debug("CreateGeneralDev %s", body['status'])
            raise nwa_exc.AgentProxyException(value=nwa_data)

        return nwa_data