Remove transparent VLAN support from base plugin

The transparent VLAN is an extension. This code was bundled part
of the base plugin.
Commit 809e434d2d has a todo to remove
the code from the base plugin.

Change-Id: Id5fd68e2b0e6396dc411697e14670f7236dc78d4
This commit is contained in:
Gary Kotton 2015-11-09 00:38:54 -08:00
parent 7490891157
commit 330cbc995f
6 changed files with 28 additions and 17 deletions

View 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(

View 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(

View 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."""

View 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()

View 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):

View 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])