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(
'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(
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."""
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()
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):
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'
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])