From: Gary Kotton Date: Mon, 9 Nov 2015 08:38:54 +0000 (-0800) Subject: Remove transparent VLAN support from base plugin X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=330cbc995fc61eb3819292c795e91c8cd9f552a2;p=openstack-build%2Fneutron-build.git Remove transparent VLAN support from base plugin 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 --- diff --git a/neutron/db/db_base_plugin_common.py b/neutron/db/db_base_plugin_common.py index c05101759..0d7763cd6 100644 --- a/neutron/db/db_base_plugin_common.py +++ b/neutron/db/db_base_plugin_common.py @@ -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( diff --git a/neutron/db/db_base_plugin_v2.py b/neutron/db/db_base_plugin_v2.py index a631f9790..cbb482dfe 100644 --- a/neutron/db/db_base_plugin_v2.py +++ b/neutron/db/db_base_plugin_v2.py @@ -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( diff --git a/neutron/extensions/vlantransparent.py b/neutron/extensions/vlantransparent.py index 61d670d24..c408d07cc 100644 --- a/neutron/extensions/vlantransparent.py +++ b/neutron/extensions/vlantransparent.py @@ -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.""" diff --git a/neutron/plugins/ml2/managers.py b/neutron/plugins/ml2/managers.py index bc72255e1..842f7c06c 100644 --- a/neutron/plugins/ml2/managers.py +++ b/neutron/plugins/ml2/managers.py @@ -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() diff --git a/neutron/plugins/ml2/plugin.py b/neutron/plugins/ml2/plugin.py index c72622fcd..cd0dcde06 100644 --- a/neutron/plugins/ml2/plugin.py +++ b/neutron/plugins/ml2/plugin.py @@ -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): diff --git a/neutron/tests/unit/extensions/test_vlantransparent.py b/neutron/tests/unit/extensions/test_vlantransparent.py index ee48f0828..1b9eeac1e 100644 --- a/neutron/tests/unit/extensions/test_vlantransparent.py +++ b/neutron/tests/unit/extensions/test_vlantransparent.py @@ -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])