]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Remove transparent VLAN support from base plugin
authorGary Kotton <gkotton@vmware.com>
Mon, 9 Nov 2015 08:38:54 +0000 (00:38 -0800)
committerGary Kotton <gkotton@vmware.com>
Sat, 28 Nov 2015 14:07:23 +0000 (06:07 -0800)
The transparent VLAN is an extension. This code was bundled part
of the base plugin.
Commit 809e434d2da99cb3e1a778be9838b1175e785e76 has a todo to remove
the code from the base plugin.

Change-Id: Id5fd68e2b0e6396dc411697e14670f7236dc78d4

neutron/db/db_base_plugin_common.py
neutron/db/db_base_plugin_v2.py
neutron/extensions/vlantransparent.py
neutron/plugins/ml2/managers.py
neutron/plugins/ml2/plugin.py
neutron/tests/unit/extensions/test_vlantransparent.py

index c05101759eac62e3d3f4d505d1a1dff4f336caf0..0d7763cd667f5e956aea3052c259218f6f5f725d 100644 (file)
@@ -280,12 +280,6 @@ class DbBasePluginCommon(common_db_mixin.CommonDbMixin):
                 shared = True
                 break
         res['shared'] = shared
-        # TODO(pritesh): Move vlan_transparent to the extension module.
-        # vlan_transparent here is only added if the vlantransparent
-        # extension is enabled.
-        if ('vlan_transparent' in network and network['vlan_transparent'] !=
-            attributes.ATTR_NOT_SPECIFIED):
-            res['vlan_transparent'] = network['vlan_transparent']
         # Call auxiliary extend functions, if any
         if process_extensions:
             self._apply_dict_extend_functions(
index a631f9790ab5968215596d5ad5772d2e4bb5513a..cbb482dfea939207071b928860c0b5e0ce7ef08d 100644 (file)
@@ -323,12 +323,6 @@ class NeutronDbPluginV2(db_base_plugin_common.DbBasePluginCommon,
                     'admin_state_up': n['admin_state_up'],
                     'mtu': n.get('mtu', constants.DEFAULT_NETWORK_MTU),
                     'status': n.get('status', constants.NET_STATUS_ACTIVE)}
-            # TODO(pritesh): Move vlan_transparent to the extension module.
-            # vlan_transparent here is only added if the vlantransparent
-            # extension is enabled.
-            if ('vlan_transparent' in n and n['vlan_transparent'] !=
-                attributes.ATTR_NOT_SPECIFIED):
-                args['vlan_transparent'] = n['vlan_transparent']
             network = models_v2.Network(**args)
             if n['shared']:
                 entry = rbac_db.NetworkRBAC(
index 61d670d24439e2249025f7f6ea589ecaf6ad674b..c408d07cc1df3ad109f4626591e5c6ef33dfd4ce 100644 (file)
@@ -46,6 +46,13 @@ def disable_extension_by_config(aliases):
         LOG.info(_LI('Disabled vlantransparent extension.'))
 
 
+def get_vlan_transparent(network):
+    return (network['vlan_transparent']
+            if ('vlan_transparent' in network and
+                attributes.is_attr_set(network['vlan_transparent']))
+            else False)
+
+
 class Vlantransparent(extensions.ExtensionDescriptor):
     """Extension class supporting vlan transparent networks."""
 
index bc72255e1f70e9d450dcd0cbd3ed5dc63a818d1a..842f7c06ca716da4818b28eb11f122b42ca395b6 100644 (file)
@@ -369,10 +369,7 @@ class MechanismManager(stevedore.named.NamedExtensionManager):
         VlanTransparencyDriverError if any mechanism driver doesn't
         support vlan transparency.
         """
-        if context.current['vlan_transparent'] is None:
-            return
-
-        if context.current['vlan_transparent']:
+        if context.current.get('vlan_transparent'):
             for driver in self.ordered_mech_drivers:
                 if not driver.obj.check_vlan_transparency(context):
                     raise vlantransparent.VlanTransparencyDriverError()
index c72622fcd35f8a61542f797e8af3315951376cf6..cd0dcde06571af53e9ad15214c76bc442561afa2 100644 (file)
@@ -652,6 +652,13 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
                     result['id'], {'network': {az_ext.AZ_HINTS: az_hints}})
                 result[az_ext.AZ_HINTS] = az_hints
 
+            # Update the transparent vlan if configured
+            if utils.is_extension_supported(self, 'vlan-transparent'):
+                vlt = vlantransparent.get_vlan_transparent(net_data)
+                super(Ml2Plugin, self).update_network(context,
+                    result['id'], {'network': {'vlan_transparent': vlt}})
+                result['vlan_transparent'] = vlt
+
         return result, mech_context
 
     def create_network(self, context, network):
index ee48f0828b363a39dbbe9beb3929012e3c5cf2ed..1b9eeac1e11ec7893c24442afaa12206637e54a4 100644 (file)
@@ -46,6 +46,18 @@ class VlanTransparentExtensionTestPlugin(db_base_plugin_v2.NeutronDbPluginV2,
 
     supported_extension_aliases = ["vlan-transparent"]
 
+    def create_network(self, context, network):
+        with context.session.begin(subtransactions=True):
+            new_net = super(VlanTransparentExtensionTestPlugin,
+                            self).create_network(context, network)
+            # Update the vlan_transparent in the database
+            n = network['network']
+            vlan_transparent = vlt.get_vlan_transparent(n)
+            network = self._get_network(context, new_net['id'])
+            n['vlan_transparent'] = vlan_transparent
+            network.update(n)
+        return new_net
+
 
 class VlanTransparentExtensionTestCase(test_db_base_plugin_v2.TestNetworksV2):
     fmt = 'json'
@@ -102,4 +114,4 @@ class VlanTransparentExtensionTestCase(test_db_base_plugin_v2.TestNetworksV2):
             res = self.deserialize(self.fmt, req.get_response(self.api))
             self.assertEqual(net['network']['name'],
                              res['network']['name'])
-            self.assertIsNone(res['network'][vlt.VLANTRANSPARENT])
+            self.assertFalse(res['network'][vlt.VLANTRANSPARENT])