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). Change-Id: Ib4c43a7894fe1285ecf4bdf9af5e5f1b93b0b39b Partial-Bug: #1665215
This commit is contained in:
parent
598428fb2e
commit
604e598a7d
@ -40,12 +40,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):
|
||||
@ -95,8 +95,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
|
||||
# NOTE(kevinbenton): these copys can go away once we are working with
|
||||
# OVO objects here instead of native SQLA objects.
|
||||
self._binding = copy.deepcopy(binding)
|
||||
|
Loading…
Reference in New Issue
Block a user