diff --git a/neutron/plugins/ml2/driver_context.py b/neutron/plugins/ml2/driver_context.py index f0503138e68..d18bb25d6c2 100644 --- a/neutron/plugins/ml2/driver_context.py +++ b/neutron/plugins/ml2/driver_context.py @@ -38,12 +38,15 @@ class MechanismDriverContext(object): class NetworkContext(MechanismDriverContext, api.NetworkContext): def __init__(self, plugin, plugin_context, network, - original_network=None): + original_network=None, segments=None): super(NetworkContext, self).__init__(plugin, plugin_context) self._network = network self._original_network = original_network - self._segments = segments_db.get_network_segments( - plugin_context.session, network['id']) + if segments is None: + self._segments = segments_db.get_network_segments( + plugin_context.session, network['id']) + else: + self._segments = segments @property def current(self): @@ -88,8 +91,11 @@ class PortContext(MechanismDriverContext, api.PortContext): super(PortContext, self).__init__(plugin, plugin_context) self._port = port self._original_port = original_port - self._network_context = NetworkContext(plugin, plugin_context, - network) if network else None + if isinstance(network, NetworkContext): + self._network_context = network + else: + self._network_context = NetworkContext( + plugin, plugin_context, network) if network else None self._binding = binding self._binding_levels = binding_levels self._segments_to_bind = None