Use L3 api from vpn ipsec driver via service plugin
VPNaaS and ML2 plugin won't work, because ML2 plugin supports service version of L3. In this commit, we modify ipsec driver to use L3 plugin. This is also backward compatible change, because if L2 plugin supports L3 get_service_plugin API returns L2 plugin. Fixes bug 1238846 Change-Id: I36e541bb2e3e1df2e01f73a74f3e9005af6c38b7 Note: Exsiting unit test covers this change
This commit is contained in:
parent
4b30e703fc
commit
a9c25132ce
@ -21,6 +21,7 @@ from neutron import manager
|
|||||||
from neutron.openstack.common import log as logging
|
from neutron.openstack.common import log as logging
|
||||||
from neutron.openstack.common import rpc
|
from neutron.openstack.common import rpc
|
||||||
from neutron.openstack.common.rpc import proxy
|
from neutron.openstack.common.rpc import proxy
|
||||||
|
from neutron.plugins.common import constants
|
||||||
from neutron.services.vpn.common import topics
|
from neutron.services.vpn.common import topics
|
||||||
from neutron.services.vpn import service_drivers
|
from neutron.services.vpn import service_drivers
|
||||||
|
|
||||||
@ -72,7 +73,8 @@ class IPsecVpnAgentApi(proxy.RpcProxy):
|
|||||||
dispatch notification for the agent.
|
dispatch notification for the agent.
|
||||||
"""
|
"""
|
||||||
adminContext = context.is_admin and context or context.elevated()
|
adminContext = context.is_admin and context or context.elevated()
|
||||||
plugin = manager.NeutronManager.get_plugin()
|
plugin = manager.NeutronManager.get_service_plugins().get(
|
||||||
|
constants.L3_ROUTER_NAT)
|
||||||
if not version:
|
if not version:
|
||||||
version = self.RPC_API_VERSION
|
version = self.RPC_API_VERSION
|
||||||
l3_agents = plugin.get_l3_agents_hosting_routers(
|
l3_agents = plugin.get_l3_agents_hosting_routers(
|
||||||
|
@ -19,6 +19,7 @@ import mock
|
|||||||
|
|
||||||
from neutron import context
|
from neutron import context
|
||||||
from neutron.openstack.common import uuidutils
|
from neutron.openstack.common import uuidutils
|
||||||
|
from neutron.plugins.common import constants
|
||||||
from neutron.services.vpn.service_drivers import ipsec as ipsec_driver
|
from neutron.services.vpn.service_drivers import ipsec as ipsec_driver
|
||||||
from neutron.tests import base
|
from neutron.tests import base
|
||||||
|
|
||||||
@ -46,8 +47,13 @@ class TestIPsecDriver(base.BaseTestCase):
|
|||||||
plugin_p = mock.patch('neutron.manager.NeutronManager.get_plugin')
|
plugin_p = mock.patch('neutron.manager.NeutronManager.get_plugin')
|
||||||
get_plugin = plugin_p.start()
|
get_plugin = plugin_p.start()
|
||||||
get_plugin.return_value = plugin
|
get_plugin.return_value = plugin
|
||||||
|
service_plugin_p = mock.patch(
|
||||||
|
'neutron.manager.NeutronManager.get_service_plugins')
|
||||||
|
get_service_plugin = service_plugin_p.start()
|
||||||
|
get_service_plugin.return_value = {constants.L3_ROUTER_NAT: plugin}
|
||||||
|
|
||||||
service_plugin = mock.Mock()
|
service_plugin = mock.Mock()
|
||||||
|
service_plugin.get_l3_agents_hosting_routers.return_value = [l3_agent]
|
||||||
service_plugin._get_vpnservice.return_value = {
|
service_plugin._get_vpnservice.return_value = {
|
||||||
'router_id': _uuid()
|
'router_id': _uuid()
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user