Allow offloading lookups in driver contexts
This allows segments looked up ahead of time to be passed into NetworkContext objects and NetworkContext objects to be passed into PortContext objects. This allows us to avoid doing segments lookups for every PortContext construction when handling a bunch of ports (e.g. in RPC handler). Conflicts: neutron/plugins/ml2/driver_context.py Change-Id: Ib4c43a7894fe1285ecf4bdf9af5e5f1b93b0b39b Partial-Bug: #1665215 (cherry picked from commit604e598a7d
) (cherry picked from commita2ae48c2ce
)
This commit is contained in:
parent
85c9daea13
commit
bd7055daf2
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue