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 commit 604e598a7d
)
This commit is contained in:
parent
d963792542
commit
a2ae48c2ce
|
@ -38,12 +38,12 @@ 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, network['id'])
|
||||
plugin_context, network['id']) if segments is None else segments
|
||||
|
||||
@property
|
||||
def current(self):
|
||||
|
@ -93,8 +93,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