]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Use L3 api from vpn ipsec driver via service plugin
authorNachi Ueno <nachi@ntti3.com>
Fri, 11 Oct 2013 18:46:32 +0000 (11:46 -0700)
committerMark McClain <mark.mcclain@dreamhost.com>
Sat, 12 Oct 2013 02:39:18 +0000 (22:39 -0400)
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
(cherry picked from commit 8eb573528551d4a74c146c9d171505f7d472bb6a)

neutron/services/vpn/service_drivers/ipsec.py
neutron/tests/unit/services/vpn/service_drivers/test_ipsec.py

index 2fea0a0bec266813b4c533c785ebbcf3a1c7813a..4ba45a8b39b89a96cde02e6b9c300ab30690e3a0 100644 (file)
@@ -21,6 +21,7 @@ from neutron import manager
 from neutron.openstack.common import log as logging
 from neutron.openstack.common import rpc
 from neutron.openstack.common.rpc import proxy
+from neutron.plugins.common import constants
 from neutron.services.vpn.common import topics
 from neutron.services.vpn import service_drivers
 
@@ -72,7 +73,8 @@ class IPsecVpnAgentApi(proxy.RpcProxy):
         dispatch notification for the agent.
         """
         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:
             version = self.RPC_API_VERSION
         l3_agents = plugin.get_l3_agents_hosting_routers(
index 863d29b8f65fef303378bb3bc76ffc5506a980e1..627724d54b8c7dd2d93852ef16b65cec03554aac 100644 (file)
@@ -19,6 +19,7 @@ import mock
 
 from neutron import context
 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.tests import base
 
@@ -46,8 +47,13 @@ class TestIPsecDriver(base.BaseTestCase):
         plugin_p = mock.patch('neutron.manager.NeutronManager.get_plugin')
         get_plugin = plugin_p.start()
         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.get_l3_agents_hosting_routers.return_value = [l3_agent]
         service_plugin._get_vpnservice.return_value = {
             'router_id': _uuid()
         }