]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Add ext-gw-mode support to ML2
authorFrancois Eleouet <f.eleouet@gmail.com>
Fri, 16 Aug 2013 11:24:20 +0000 (13:24 +0200)
committerFrancois Eleouet <f.eleouet@gmail.com>
Mon, 19 Aug 2013 18:21:40 +0000 (20:21 +0200)
Closes-Bug: #1212772

ML2 doesn't support ext-gw-mode, resulting in L3 agents not
setting-up NAT rules in neutron routers (currently, l3 agents
will assume enable_snat=false if plugin doesn't provide this
parameter as described in bug 1212868)

This patchset adds the support of ext-gw-mode to ML2 plugin.

In order to support ext-gw-mode alembic migration (as well as
other potential migrations on plugin dbs), folsom_initial
migration script is fixed to include ML2 plugin. Otherwise
databases won't be set-up during migration script (but at
plugin startup by sqlalchemy), resulting in migration failures.

Change-Id: I95ec18e0a4f0e5b661f3a5d679c434f18f100fa6

neutron/db/migration/alembic_migrations/versions/128e042a2b68_ext_gw_mode.py
neutron/db/migration/alembic_migrations/versions/folsom_initial.py
neutron/plugins/ml2/plugin.py
neutron/tests/unit/ml2/test_ml2_plugin.py

index 6b630dcb8334d240251e3a603c70a40e00f36f9b..448010496687d71a115b6e7efb0761d266e18bff 100644 (file)
@@ -33,6 +33,7 @@ migration_for_plugins = [
     'neutron.plugins.hyperv.hyperv_neutron_plugin.HyperVNeutronPlugin',
     'neutron.plugins.linuxbridge.lb_neutron_plugin.LinuxBridgePluginV2',
     'neutron.plugins.metaplugin.meta_neutron_plugin.MetaPluginV2',
+    'neutron.plugins.ml2.plugin.Ml2Plugin',
     'neutron.plugins.nec.nec_plugin.NECPluginV2',
     'neutron.plugins.nicira.NeutronPlugin.NvpPluginV2',
     'neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2',
index c73fd7289b7704bf452e62bf233a6c0238f8b928..bf972551c5f1f50e7471debc1ed7471402bfb6e9 100644 (file)
@@ -29,7 +29,7 @@ PLUGINS = {
     'cisco': 'neutron.plugins.cisco.network_plugin.PluginV2',
     'lbr': 'neutron.plugins.linuxbridge.lb_neutron_plugin.LinuxBridgePluginV2',
     'meta': 'neutron.plugins.metaplugin.meta_neutron_plugin.MetaPluginV2',
-    'ml2': 'neutron.plugins.ml2.ml2_plugin.Ml2Plugin',
+    'ml2': 'neutron.plugins.ml2.plugin.Ml2Plugin',
     'nec': 'neutron.plugins.nec.nec_plugin.NECPluginV2',
     'nvp': 'neutron.plugins.nicira.NeutronPlugin.NvpPluginV2',
     'ovs': 'neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2',
index 4093ffc4a94ddc9910ae5de89926454b7964ae0d..bb42aab76b9a2ca724ffdd3f0f510fc7a601a1dc 100644 (file)
@@ -25,6 +25,7 @@ from neutron.common import topics
 from neutron.db import agentschedulers_db
 from neutron.db import db_base_plugin_v2
 from neutron.db import extraroute_db
+from neutron.db import l3_gwmode_db
 from neutron.db import portbindings_db
 from neutron.db import quota_db  # noqa
 from neutron.db import securitygroups_rpc_base as sg_db_rpc
@@ -51,6 +52,7 @@ TYPE_MULTI_SEGMENT = 'multi-segment'
 
 class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
                 extraroute_db.ExtraRoute_db_mixin,
+                l3_gwmode_db.L3_NAT_db_mixin,
                 sg_db_rpc.SecurityGroupServerRpcMixin,
                 agentschedulers_db.L3AgentSchedulerDbMixin,
                 agentschedulers_db.DhcpAgentSchedulerDbMixin,
@@ -75,7 +77,7 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
     _supported_extension_aliases = ["provider", "router", "extraroute",
                                     "binding", "quotas", "security-group",
                                     "agent", "l3_agent_scheduler",
-                                    "dhcp_agent_scheduler"]
+                                    "dhcp_agent_scheduler", "ext-gw-mode"]
 
     @property
     def supported_extension_aliases(self):
index c5ff52f80d709489bc75d8eb2a9f5faacc258e22..d2fefe0eb9cf0f8ace4eac07e5435f451af1a803 100644 (file)
@@ -16,6 +16,7 @@
 from neutron.plugins.ml2 import config as config
 from neutron.tests.unit import _test_extension_portbindings as test_bindings
 from neutron.tests.unit import test_db_plugin as test_plugin
+from neutron.tests.unit import test_extension_ext_gw_mode
 
 
 PLUGIN_NAME = 'neutron.plugins.ml2.plugin.Ml2Plugin'
@@ -69,3 +70,8 @@ class TestMl2PortsV2(test_plugin.TestPortsV2, Ml2PluginV2TestCase):
 class TestMl2PortBindingHost(Ml2PluginV2TestCase,
                              test_bindings.PortBindingsHostTestCaseMixin):
     pass
+
+
+class TestMl2ExtGwModeSupport(Ml2PluginV2TestCase,
+                              test_extension_ext_gw_mode.ExtGwModeTestCase):
+    pass