Make MechanismDriverContext plugin_context public

MechanismDriverContext has an attribute _plugin_context, which carries
the current context with it. This is used by many ml2 drivers, as it is
the only way for them to get the current context. We now make this a
public API by adding a property to MechanismDriverContext that returns
_plugin_context as a read-only attribute.

Change-Id: If9b05655286f42081cf26c90c563429ca2e63244
This commit is contained in:
Sebastian Lohff 2022-11-16 16:16:22 +01:00
parent bf44e70db6
commit 9a483f02be
9 changed files with 63 additions and 55 deletions

View File

@ -74,7 +74,7 @@ class OVNMechanismDriver(mech_driver.OVNMechanismDriver):
def create_port_postcommit(self, context): def create_port_postcommit(self, context):
port = context.current port = context.current
self.ovn_client.create_port(context._plugin_context, port) self.ovn_client.create_port(context.plugin_context, port)
def update_port_precommit(self, context): def update_port_precommit(self, context):
pass pass
@ -82,7 +82,7 @@ class OVNMechanismDriver(mech_driver.OVNMechanismDriver):
def update_port_postcommit(self, context): def update_port_postcommit(self, context):
port = context.current port = context.current
original_port = context.original original_port = context.original
self.ovn_client.update_port(context._plugin_context, port, self.ovn_client.update_port(context.plugin_context, port,
original_port) original_port)
def delete_port_precommit(self, context): def delete_port_precommit(self, context):
@ -91,9 +91,7 @@ class OVNMechanismDriver(mech_driver.OVNMechanismDriver):
def delete_port_postcommit(self, context): def delete_port_postcommit(self, context):
port = copy.deepcopy(context.current) port = copy.deepcopy(context.current)
port['network'] = context.network.current port['network'] = context.network.current
# FIXME(lucasagomes): PortContext does not have a session, therefore self.ovn_client.delete_port(context.plugin_context, port['id'])
# we need to use the _plugin_context attribute.
self.ovn_client.delete_port(context._plugin_context, port['id'])
class AgentNotifierApi(object): class AgentNotifierApi(object):

View File

@ -65,6 +65,10 @@ class MechanismDriverContext(object):
# method call of the plugin. # method call of the plugin.
self._plugin_context = plugin_context self._plugin_context = plugin_context
@property
def plugin_context(self):
return self._plugin_context
class NetworkContext(MechanismDriverContext, api.NetworkContext): class NetworkContext(MechanismDriverContext, api.NetworkContext):
@ -111,9 +115,9 @@ class SubnetContext(MechanismDriverContext, api.SubnetContext):
def network(self): def network(self):
if self._network_context is None: if self._network_context is None:
network = self._plugin.get_network( network = self._plugin.get_network(
self._plugin_context, self.current['network_id']) self.plugin_context, self.current['network_id'])
self._network_context = NetworkContext( self._network_context = NetworkContext(
self._plugin, self._plugin_context, network) self._plugin, self.plugin_context, network)
return self._network_context return self._network_context
@ -196,9 +200,9 @@ class PortContext(MechanismDriverContext, api.PortContext):
def network(self): def network(self):
if not self._network_context: if not self._network_context:
network = self._plugin.get_network( network = self._plugin.get_network(
self._plugin_context, self.current['network_id']) self.plugin_context, self.current['network_id'])
self._network_context = NetworkContext( self._network_context = NetworkContext(
self._plugin, self._plugin_context, network) self._plugin, self.plugin_context, network)
return self._network_context return self._network_context
@property @property
@ -246,7 +250,7 @@ class PortContext(MechanismDriverContext, api.PortContext):
# TODO(kevinbenton): eliminate the query below. The above should # TODO(kevinbenton): eliminate the query below. The above should
# always return since the port is bound to a network segment. Leaving # always return since the port is bound to a network segment. Leaving
# in for now for minimally invasive change for back-port. # in for now for minimally invasive change for back-port.
segment = segments_db.get_segment_by_id(self._plugin_context, segment = segments_db.get_segment_by_id(self.plugin_context,
segment_id) segment_id)
if not segment: if not segment:
LOG.warning("Could not expand segment %s", segment_id) LOG.warning("Could not expand segment %s", segment_id)
@ -292,7 +296,7 @@ class PortContext(MechanismDriverContext, api.PortContext):
return self._segments_to_bind return self._segments_to_bind
def host_agents(self, agent_type): def host_agents(self, agent_type):
return self._plugin.get_agents(self._plugin_context, return self._plugin.get_agents(self.plugin_context,
filters={'agent_type': [agent_type], filters={'agent_type': [agent_type],
'host': [self._binding.host]}) 'host': [self._binding.host]})
@ -327,4 +331,4 @@ class PortContext(MechanismDriverContext, api.PortContext):
def release_dynamic_segment(self, segment_id): def release_dynamic_segment(self, segment_id):
return self._plugin.type_manager.release_dynamic_segment( return self._plugin.type_manager.release_dynamic_segment(
self._plugin_context, segment_id) self.plugin_context, segment_id)

View File

@ -75,7 +75,7 @@ class L2populationMechanismDriver(api.MechanismDriver):
def delete_port_postcommit(self, context): def delete_port_postcommit(self, context):
port = context.current port = context.current
agent_host = context.host agent_host = context.host
plugin_context = context._plugin_context plugin_context = context.plugin_context
fdb_entries = self._get_agent_fdb( fdb_entries = self._get_agent_fdb(
plugin_context, context.bottom_bound_segment, port, agent_host) plugin_context, context.bottom_bound_segment, port, agent_host)
if fdb_entries and l3_hamode_db.is_ha_router_port( if fdb_entries and l3_hamode_db.is_ha_router_port(
@ -117,13 +117,13 @@ class L2populationMechanismDriver(api.MechanismDriver):
return return
# We should not add arp responder for non tunnel network type # We should not add arp responder for non tunnel network type
port_context = context._plugin_context port_context = context.plugin_context
agent = l2pop_db.get_agent_by_host(port_context, agent_host) agent = l2pop_db.get_agent_by_host(port_context, agent_host)
segment = context.bottom_bound_segment segment = context.bottom_bound_segment
if not self._validate_segment(segment, port['id'], agent): if not self._validate_segment(segment, port['id'], agent):
return return
agent_ip = l2pop_db.get_agent_ip_by_host(context._plugin_context, agent_ip = l2pop_db.get_agent_ip_by_host(context.plugin_context,
agent_host) agent_host)
orig_mac_ip = [l2pop_rpc.PortInfo(mac_address=port['mac_address'], orig_mac_ip = [l2pop_rpc.PortInfo(mac_address=port['mac_address'],
@ -160,7 +160,7 @@ class L2populationMechanismDriver(api.MechanismDriver):
def update_port_postcommit(self, context): def update_port_postcommit(self, context):
port = context.current port = context.current
orig = context.original orig = context.original
plugin_context = context._plugin_context plugin_context = context.plugin_context
if l3_hamode_db.is_ha_router_port(plugin_context, port['device_owner'], if l3_hamode_db.is_ha_router_port(plugin_context, port['device_owner'],
port['device_id']): port['device_id']):
return return
@ -258,7 +258,7 @@ class L2populationMechanismDriver(api.MechanismDriver):
"list_router_ids_on_host", "list_router_ids_on_host",
None): None):
admin_context = n_context.get_admin_context() admin_context = n_context.get_admin_context()
port_context = context._plugin_context port_context = context.plugin_context
fdb_entries = self._get_agent_fdb( fdb_entries = self._get_agent_fdb(
port_context, context.bottom_bound_segment, port, agent_host, port_context, context.bottom_bound_segment, port, agent_host,
include_ha_router_ports=True) include_ha_router_ports=True)
@ -274,7 +274,7 @@ class L2populationMechanismDriver(api.MechanismDriver):
def update_port_up(self, context, refresh_tunnels=False): def update_port_up(self, context, refresh_tunnels=False):
port = context.current port = context.current
agent_host = context.host agent_host = context.host
port_context = context._plugin_context port_context = context.plugin_context
agent = l2pop_db.get_agent_by_host(port_context, agent_host) agent = l2pop_db.get_agent_by_host(port_context, agent_host)
if not agent: if not agent:
LOG.warning("Unable to retrieve active L2 agent on host %s", LOG.warning("Unable to retrieve active L2 agent on host %s",

View File

@ -84,7 +84,7 @@ class AgentMechanismDriverBase(api.MechanismDriver, metaclass=abc.ABCMeta):
return return
if context.host_agents(self.agent_type): if context.host_agents(self.agent_type):
provisioning_blocks.add_provisioning_component( provisioning_blocks.add_provisioning_component(
context._plugin_context, port['id'], resources.PORT, context.plugin_context, port['id'], resources.PORT,
provisioning_blocks.L2_AGENT_ENTITY) provisioning_blocks.L2_AGENT_ENTITY)
def bind_port(self, context): def bind_port(self, context):
@ -147,7 +147,7 @@ class AgentMechanismDriverBase(api.MechanismDriver, metaclass=abc.ABCMeta):
subnet_id = data.get('subnet_id') subnet_id = data.get('subnet_id')
if subnet_id: if subnet_id:
subnets.append(context._plugin.get_subnet( subnets.append(context._plugin.get_subnet(
context._plugin_context, subnet_id)) context.plugin_context, subnet_id))
return subnets return subnets
@abc.abstractmethod @abc.abstractmethod
@ -216,7 +216,7 @@ class AgentMechanismDriverBase(api.MechanismDriver, metaclass=abc.ABCMeta):
# trying to bind with a dead agent. # trying to bind with a dead agent.
} }
return context._plugin.get_agents( return context._plugin.get_agents(
context._plugin_context, context.plugin_context,
filters=agent_filters, filters=agent_filters,
) )

View File

@ -543,7 +543,7 @@ class OVNMechanismDriver(api.MechanismDriver):
""" """
self._validate_network_segments(context.network_segments) self._validate_network_segments(context.network_segments)
ovn_revision_numbers_db.create_initial_revision( ovn_revision_numbers_db.create_initial_revision(
context._plugin_context, context.current['id'], context.plugin_context, context.current['id'],
ovn_const.TYPE_NETWORKS, ovn_const.TYPE_NETWORKS,
std_attr_id=context.current['standard_attr_id']) std_attr_id=context.current['standard_attr_id'])
@ -559,7 +559,7 @@ class OVNMechanismDriver(api.MechanismDriver):
cause the deletion of the resource. cause the deletion of the resource.
""" """
network = context.current network = context.current
self._ovn_client.create_network(context._plugin_context, network) self._ovn_client.create_network(context.plugin_context, network)
def update_network_precommit(self, context): def update_network_precommit(self, context):
"""Update resources of a network. """Update resources of a network.
@ -596,7 +596,7 @@ class OVNMechanismDriver(api.MechanismDriver):
state or state changes that it does not know or care about. state or state changes that it does not know or care about.
""" """
self._ovn_client.update_network( self._ovn_client.update_network(
context._plugin_context, context.current, context.plugin_context, context.current,
original_network=context.original) original_network=context.original)
def delete_network_postcommit(self, context): def delete_network_postcommit(self, context):
@ -612,26 +612,26 @@ class OVNMechanismDriver(api.MechanismDriver):
deleted. deleted.
""" """
self._ovn_client.delete_network( self._ovn_client.delete_network(
context._plugin_context, context.plugin_context,
context.current['id']) context.current['id'])
def create_subnet_precommit(self, context): def create_subnet_precommit(self, context):
ovn_revision_numbers_db.create_initial_revision( ovn_revision_numbers_db.create_initial_revision(
context._plugin_context, context.current['id'], context.plugin_context, context.current['id'],
ovn_const.TYPE_SUBNETS, ovn_const.TYPE_SUBNETS,
std_attr_id=context.current['standard_attr_id']) std_attr_id=context.current['standard_attr_id'])
def create_subnet_postcommit(self, context): def create_subnet_postcommit(self, context):
self._ovn_client.create_subnet(context._plugin_context, self._ovn_client.create_subnet(context.plugin_context,
context.current, context.current,
context.network.current) context.network.current)
def update_subnet_postcommit(self, context): def update_subnet_postcommit(self, context):
self._ovn_client.update_subnet( self._ovn_client.update_subnet(
context._plugin_context, context.current, context.network.current) context.plugin_context, context.current, context.network.current)
def delete_subnet_postcommit(self, context): def delete_subnet_postcommit(self, context):
self._ovn_client.delete_subnet(context._plugin_context, self._ovn_client.delete_subnet(context.plugin_context,
context.current['id']) context.current['id'])
def _validate_port_extra_dhcp_opts(self, port): def _validate_port_extra_dhcp_opts(self, port):
@ -663,18 +663,18 @@ class OVNMechanismDriver(api.MechanismDriver):
ovn_utils.validate_and_get_data_from_binding_profile(port) ovn_utils.validate_and_get_data_from_binding_profile(port)
self._validate_port_extra_dhcp_opts(port) self._validate_port_extra_dhcp_opts(port)
if self._is_port_provisioning_required(port, context.host): if self._is_port_provisioning_required(port, context.host):
self._insert_port_provisioning_block(context._plugin_context, self._insert_port_provisioning_block(context.plugin_context,
port['id']) port['id'])
ovn_revision_numbers_db.create_initial_revision( ovn_revision_numbers_db.create_initial_revision(
context._plugin_context, port['id'], ovn_const.TYPE_PORTS, context.plugin_context, port['id'], ovn_const.TYPE_PORTS,
std_attr_id=context.current['standard_attr_id']) std_attr_id=context.current['standard_attr_id'])
# in the case of router ports we also need to # in the case of router ports we also need to
# track the creation and update of the LRP OVN objects # track the creation and update of the LRP OVN objects
if ovn_utils.is_lsp_router_port(port): if ovn_utils.is_lsp_router_port(port):
ovn_revision_numbers_db.create_initial_revision( ovn_revision_numbers_db.create_initial_revision(
context._plugin_context, port['id'], context.plugin_context, port['id'],
ovn_const.TYPE_ROUTER_PORTS, ovn_const.TYPE_ROUTER_PORTS,
std_attr_id=context.current['standard_attr_id']) std_attr_id=context.current['standard_attr_id'])
@ -782,7 +782,7 @@ class OVNMechanismDriver(api.MechanismDriver):
""" """
port = copy.deepcopy(context.current) port = copy.deepcopy(context.current)
port['network'] = context.network.current port['network'] = context.network.current
self._ovn_client.create_port(context._plugin_context, port) self._ovn_client.create_port(context.plugin_context, port)
self._notify_dhcp_updated(port['id']) self._notify_dhcp_updated(port['id'])
def update_port_precommit(self, context): def update_port_precommit(self, context):
@ -807,7 +807,7 @@ class OVNMechanismDriver(api.MechanismDriver):
self._validate_port_extra_dhcp_opts(port) self._validate_port_extra_dhcp_opts(port)
if self._is_port_provisioning_required(port, context.host, if self._is_port_provisioning_required(port, context.host,
context.original_host): context.original_host):
self._insert_port_provisioning_block(context._plugin_context, self._insert_port_provisioning_block(context.plugin_context,
port['id']) port['id'])
if ovn_utils.is_lsp_router_port(port): if ovn_utils.is_lsp_router_port(port):
@ -815,7 +815,7 @@ class OVNMechanismDriver(api.MechanismDriver):
# logical router so we need to track the creation of the lrp # logical router so we need to track the creation of the lrp
if not ovn_utils.is_lsp_router_port(original_port): if not ovn_utils.is_lsp_router_port(original_port):
ovn_revision_numbers_db.create_initial_revision( ovn_revision_numbers_db.create_initial_revision(
context._plugin_context, port['id'], context.plugin_context, port['id'],
ovn_const.TYPE_ROUTER_PORTS, may_exist=True, ovn_const.TYPE_ROUTER_PORTS, may_exist=True,
std_attr_id=context.current['standard_attr_id']) std_attr_id=context.current['standard_attr_id'])
@ -852,7 +852,7 @@ class OVNMechanismDriver(api.MechanismDriver):
LOG.info("Setting port %s status from DOWN to UP in order " LOG.info("Setting port %s status from DOWN to UP in order "
"to emit vif-interface-plugged event.", "to emit vif-interface-plugged event.",
port['id']) port['id'])
self._plugin.update_port_status(context._plugin_context, self._plugin.update_port_status(context.plugin_context,
port['id'], port['id'],
const.PORT_STATUS_ACTIVE) const.PORT_STATUS_ACTIVE)
# The revision has been changed. In the meantime # The revision has been changed. In the meantime
@ -861,7 +861,7 @@ class OVNMechanismDriver(api.MechanismDriver):
# will fail that OVN has port with bigger revision. # will fail that OVN has port with bigger revision.
return return
self._ovn_update_port(context._plugin_context, port, original_port, self._ovn_update_port(context.plugin_context, port, original_port,
retry_on_revision_mismatch=True) retry_on_revision_mismatch=True)
self._notify_dhcp_updated(port['id']) self._notify_dhcp_updated(port['id'])
@ -879,9 +879,7 @@ class OVNMechanismDriver(api.MechanismDriver):
""" """
port = copy.deepcopy(context.current) port = copy.deepcopy(context.current)
port['network'] = context.network.current port['network'] = context.network.current
# FIXME(lucasagomes): PortContext does not have a session, therefore self._ovn_client.delete_port(context.plugin_context, port['id'],
# we need to use the _plugin_context attribute.
self._ovn_client.delete_port(context._plugin_context, port['id'],
port_object=port) port_object=port)
def bind_port(self, context): def bind_port(self, context):

View File

@ -867,7 +867,7 @@ class MechanismManager(stevedore.named.NamedExtensionManager):
segment = context._new_bound_segment segment = context._new_bound_segment
if segment: if segment:
pbl_obj = ports.PortBindingLevel( pbl_obj = ports.PortBindingLevel(
context._plugin_context, context.plugin_context,
port_id=port_id, port_id=port_id,
host=context.host, host=context.host,
level=level, level=level,

View File

@ -511,7 +511,7 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
def _clear_port_binding(self, mech_context, binding, port, original_host): def _clear_port_binding(self, mech_context, binding, port, original_host):
binding.vif_type = portbindings.VIF_TYPE_UNBOUND binding.vif_type = portbindings.VIF_TYPE_UNBOUND
binding.vif_details = '' binding.vif_details = ''
db.clear_binding_levels(mech_context._plugin_context, port['id'], db.clear_binding_levels(mech_context.plugin_context, port['id'],
original_host) original_host)
mech_context._clear_binding_levels() mech_context._clear_binding_levels()
@ -547,7 +547,7 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
return changes, original_host return changes, original_host
def _process_port_binding(self, mech_context, attrs): def _process_port_binding(self, mech_context, attrs):
plugin_context = mech_context._plugin_context plugin_context = mech_context.plugin_context
binding = mech_context._binding binding = mech_context._binding
port = mech_context.current port = mech_context.current
changes, original_host = self._process_port_binding_attributes(binding, changes, original_host = self._process_port_binding_attributes(binding,
@ -559,7 +559,7 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
original_host) original_host)
port['status'] = const.PORT_STATUS_DOWN port['status'] = const.PORT_STATUS_DOWN
super(Ml2Plugin, self).update_port( super(Ml2Plugin, self).update_port(
mech_context._plugin_context, port['id'], mech_context.plugin_context, port['id'],
{port_def.RESOURCE_NAME: {'status': const.PORT_STATUS_DOWN}}) {port_def.RESOURCE_NAME: {'status': const.PORT_STATUS_DOWN}})
if port['device_owner'] == const.DEVICE_OWNER_DVR_INTERFACE: if port['device_owner'] == const.DEVICE_OWNER_DVR_INTERFACE:
@ -649,7 +649,7 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
) )
self._update_port_dict_binding(port, new_binding) self._update_port_dict_binding(port, new_binding)
new_context = driver_context.PortContext( new_context = driver_context.PortContext(
self, orig_context._plugin_context, port, self, orig_context.plugin_context, port,
orig_context.network.current, new_binding, None, orig_context.network.current, new_binding, None,
original_port=orig_context.original) original_port=orig_context.original)
@ -661,7 +661,7 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
def _commit_port_binding(self, orig_context, bind_context, def _commit_port_binding(self, orig_context, bind_context,
need_notify, update_binding_levels=True): need_notify, update_binding_levels=True):
port_id = orig_context.current['id'] port_id = orig_context.current['id']
plugin_context = orig_context._plugin_context plugin_context = orig_context.plugin_context
port = orig_context.current port = orig_context.current
original_port = orig_context.current original_port = orig_context.current
orig_binding = orig_context._binding orig_binding = orig_context._binding
@ -952,7 +952,7 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
"port %(port_id)s on network %(network_id)s", "port %(port_id)s on network %(network_id)s",
{'port_id': port['id'], 'network_id': network['id']}) {'port_id': port['id'], 'network_id': network['id']})
return return
self.notifier.port_update(mech_context._plugin_context, port, self.notifier.port_update(mech_context.plugin_context, port,
segment[api.NETWORK_TYPE], segment[api.NETWORK_TYPE],
segment[api.SEGMENTATION_ID], segment[api.SEGMENTATION_ID],
segment[api.PHYSICAL_NETWORK]) segment[api.PHYSICAL_NETWORK])
@ -1971,7 +1971,7 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
return bound_context.current return bound_context.current
def _process_distributed_port_binding(self, mech_context, context, attrs): def _process_distributed_port_binding(self, mech_context, context, attrs):
plugin_context = mech_context._plugin_context plugin_context = mech_context.plugin_context
binding = mech_context._binding binding = mech_context._binding
port = mech_context.current port = mech_context.current
port_id = port['id'] port_id = port['id']
@ -2634,12 +2634,12 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
original_host) original_host)
port_dict['status'] = const.PORT_STATUS_DOWN port_dict['status'] = const.PORT_STATUS_DOWN
super(Ml2Plugin, self).update_port( super(Ml2Plugin, self).update_port(
mech_context._plugin_context, port_dict['id'], mech_context.plugin_context, port_dict['id'],
{port_def.RESOURCE_NAME: {'status': const.PORT_STATUS_DOWN}}) {port_def.RESOURCE_NAME: {'status': const.PORT_STATUS_DOWN}})
self._update_port_dict_binding(port_dict, self._update_port_dict_binding(port_dict,
mech_context._binding) mech_context._binding)
mech_context._binding.persist_state_to_session( mech_context._binding.persist_state_to_session(
mech_context._plugin_context.session) mech_context.plugin_context.session)
@utils.transaction_guard @utils.transaction_guard
@db_api.retry_if_session_inactive() @db_api.retry_if_session_inactive()

View File

@ -336,6 +336,10 @@ class FakeNetworkContext(object):
self.fake_segments = segments self.fake_segments = segments
self._plugin_context = mock.MagicMock() self._plugin_context = mock.MagicMock()
@property
def plugin_context(self):
return self._plugin_context
@property @property
def current(self): def current(self):
return self.fake_network return self.fake_network
@ -356,6 +360,10 @@ class FakeSubnetContext(object):
self.fake_network = FakeNetworkContext(network, None) self.fake_network = FakeNetworkContext(network, None)
self._plugin_context = mock.MagicMock() self._plugin_context = mock.MagicMock()
@property
def plugin_context(self):
return self._plugin_context
@property @property
def current(self): def current(self):
return self.fake_subnet return self.fake_subnet

View File

@ -2069,7 +2069,7 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
portbindings.PROFILE: {ovn_const.MIGRATING_ATTR: 'foo'}, portbindings.PROFILE: {ovn_const.MIGRATING_ATTR: 'foo'},
portbindings.VIF_TYPE: portbindings.VIF_TYPE_OVS}).info() portbindings.VIF_TYPE: portbindings.VIF_TYPE_OVS}).info()
fake_ctx = mock.Mock(current=fake_port, original=fake_port, fake_ctx = mock.Mock(current=fake_port, original=fake_port,
_plugin_context=fake_context) plugin_context=fake_context)
self.mech_driver.update_port_postcommit(fake_ctx) self.mech_driver.update_port_postcommit(fake_ctx)
@ -2101,7 +2101,7 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
portbindings.VIF_TYPE: portbindings.VIF_TYPE_OVS}).info() portbindings.VIF_TYPE: portbindings.VIF_TYPE_OVS}).info()
fake_ctx = mock.Mock(current=fake_port, original=original_fake_port, fake_ctx = mock.Mock(current=fake_port, original=original_fake_port,
_plugin_context=fake_context) plugin_context=fake_context)
mock_update_port.side_effect = ovn_exceptions.RevisionConflict( mock_update_port.side_effect = ovn_exceptions.RevisionConflict(
resource_id=fake_port['id'], resource_id=fake_port['id'],
resource_type=ovn_const.TYPE_PORTS) resource_type=ovn_const.TYPE_PORTS)
@ -2137,7 +2137,7 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
portbindings.VIF_TYPE: portbindings.VIF_TYPE_OVS}).info() portbindings.VIF_TYPE: portbindings.VIF_TYPE_OVS}).info()
fake_ctx = mock.Mock(current=fake_port, original=original_fake_port, fake_ctx = mock.Mock(current=fake_port, original=original_fake_port,
_plugin_context=fake_context) plugin_context=fake_context)
mock_update_port.side_effect = [ mock_update_port.side_effect = [
ovn_exceptions.RevisionConflict( ovn_exceptions.RevisionConflict(
resource_id=fake_port['id'], resource_id=fake_port['id'],
@ -2174,7 +2174,7 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
portbindings.VIF_TYPE: portbindings.VIF_TYPE_OVS}).info() portbindings.VIF_TYPE: portbindings.VIF_TYPE_OVS}).info()
fake_ctx = mock.Mock(current=fake_port, original=original_fake_port, fake_ctx = mock.Mock(current=fake_port, original=original_fake_port,
_plugin_context=fake_context) plugin_context=fake_context)
mock_update_port.side_effect = [ mock_update_port.side_effect = [
ovn_exceptions.RevisionConflict( ovn_exceptions.RevisionConflict(
resource_id=fake_port['id'], resource_id=fake_port['id'],
@ -2317,7 +2317,7 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
# Let's update the MTU to something different # Let's update the MTU to something different
network['network']['mtu'] = new_mtu network['network']['mtu'] = new_mtu
fake_ctx = mock.MagicMock(current=network['network']) fake_ctx = mock.MagicMock(current=network['network'])
fake_ctx._plugin_context.session.is_active = False fake_ctx.plugin_context.session.is_active = False
self.mech_driver.update_network_postcommit(fake_ctx) self.mech_driver.update_network_postcommit(fake_ctx)