Remove unneeded contexts in ``_create_port_security_group_binding``

Removed unneeded database context in
``_create_port_security_group_binding``. This method is called always
from inside an active database transaction, when the port is udpated
or created.

The retry context only makes sense when a method is called outside
an active database transaction. It doesn't retry the command if the
context passed has an active transaction.

Trivial-Fix

Change-Id: I8f84c1bce0d1ce2538789e3511fd8f7b64fcd41a
This commit is contained in:
Rodolfo Alonso Hernandez 2022-05-19 20:31:03 +00:00
parent 38cdfb8855
commit f3b84ed099
5 changed files with 17 additions and 13 deletions

View File

@ -356,13 +356,13 @@ class SecurityGroupDbMixin(ext_sg.SecurityGroupPluginBase,
'security_group_id': security_group['security_group_id']}
return db_utils.resource_fields(res, fields)
@db_api.retry_if_session_inactive()
def _create_port_security_group_binding(self, context, port_id,
security_group_id):
with db_api.CONTEXT_WRITER.using(context):
db = sg_models.SecurityGroupPortBinding(
port_id=port_id, security_group_id=security_group_id)
context.session.add(db)
# This method must be called from inside an active DB writer
# transaction.
db = sg_models.SecurityGroupPortBinding(
port_id=port_id, security_group_id=security_group_id)
context.session.add(db)
def _get_port_security_group_bindings(self, context,
filters=None, fields=None):
@ -892,6 +892,8 @@ class SecurityGroupDbMixin(ext_sg.SecurityGroupPluginBase,
def _process_port_create_security_group(self, context, port,
security_groups):
# This method must be called from inside an active DB writer
# transaction.
self._validate_sgs_for_port(security_groups)
if validators.is_attr_set(security_groups):
for sg in security_groups:
@ -1016,13 +1018,14 @@ class SecurityGroupDbMixin(ext_sg.SecurityGroupPluginBase,
return True
return False
def update_security_group_on_port(self, context, id, port,
original_port, updated_port):
def _update_security_group_on_port(self, context, id, port,
original_port, updated_port):
"""Update security groups on port.
This method returns a flag which indicates request notification
is required and does not perform notification itself.
It is because another changes for the port may require notification.
This method must be called from inside an active DB writer transaction.
"""
need_notify = False
port_updates = port['port']

View File

@ -1848,7 +1848,7 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
self.update_address_pairs_on_port(context, id, port,
original_port,
updated_port))
need_port_update_notify |= self.update_security_group_on_port(
need_port_update_notify |= self._update_security_group_on_port(
context, id, port, original_port, updated_port)
network = self.get_network(context, original_port['network_id'])
need_port_update_notify |= self._update_extra_dhcp_opts_on_port(

View File

@ -142,7 +142,7 @@ class SecurityGroupRpcTestPlugin(test_sg.SecurityGroupTestPlugin,
updated_port = super(SecurityGroupRpcTestPlugin,
self).update_port(context, id, port)
self.devices[id] = updated_port
self.update_security_group_on_port(
self._update_security_group_on_port(
context, id, port, original_port, updated_port)
return updated_port

View File

@ -116,8 +116,8 @@ class PortSecurityTestPlugin(db_base_plugin_v2.NeutronDbPluginV2,
p[ext_sg.SECURITYGROUPS] = [sg['id'] for sg in sgs] if sgs else None
if (p.get(ext_sg.SECURITYGROUPS) and p[psec.PORTSECURITY]):
self._process_port_create_security_group(
context, p, sgs)
with db_api.CONTEXT_WRITER.using(context):
self._process_port_create_security_group(context, p, sgs)
return port['port']

View File

@ -1786,8 +1786,9 @@ fixed_ips=ip_address_substr%%3D%s&fixed_ips=ip_address%%3D%s
sg = sg_dbMixin.create_security_group(ctx, temp_sg)
sg_dbMixin._delete_port_security_group_bindings(
ctx, port2['port']['id'])
sg_dbMixin._create_port_security_group_binding(
ctx, port2['port']['id'], sg['id'])
with db_api.CONTEXT_WRITER.using(ctx):
sg_dbMixin._create_port_security_group_binding(
ctx, port2['port']['id'], sg['id'])
port2['port']['security_groups'][0] = sg['id']
query_params = "security_groups=%s&id=%s" % (
port1['port']['security_groups'][0],