[sqlalchemy-20] Remove retry decorator from update_floatingip_status

L3_NAT_dbonly_mixin.update_floatingip_status is called from methods
which are decoarted with retry decorator or from within a db context.
As update_floatingip_status also called from OVNL3RouterPlugin added a
utility method, update_floatingip_status_retry with decorator to avoid
retrying OVN methods, and added CONTEXT_WRITER here also as other calls
of update_floatingip_status from l3_rpc for example uses CONTEXT_WRITER.

Change-Id: Ifdb008c2402aa24766cbd30dd53458599076c955
Closes-Bug: #1980721
This commit is contained in:
elajkat
2022-07-05 09:57:54 +02:00
parent ac0f247352
commit 31a15fdd6d
2 changed files with 8 additions and 2 deletions

View File

@@ -1551,7 +1551,6 @@ class L3_NAT_dbonly_mixin(l3.RouterPluginBase,
context, id, floatingip)
return floatingip
@db_api.retry_if_session_inactive()
def update_floatingip_status(self, context, floatingip_id, status):
"""Update operational status for floating IP in neutron DB."""
return l3_obj.FloatingIP.update_object(

View File

@@ -22,6 +22,7 @@ from neutron_lib.callbacks import registry
from neutron_lib.callbacks import resources
from neutron_lib import constants as n_const
from neutron_lib import context as n_context
from neutron_lib.db import api as db_api
from neutron_lib import exceptions as n_exc
from neutron_lib.exceptions import availability_zone as az_exc
from neutron_lib.plugins import constants as plugin_constants
@@ -288,11 +289,17 @@ class OVNL3RouterPlugin(service_base.ServicePluginBase,
return fip
def update_floatingip_status(self, context, floatingip_id, status):
fip = super(OVNL3RouterPlugin, self).update_floatingip_status(
fip = self.update_floatingip_status_retry(
context, floatingip_id, status)
self._ovn_client.update_floatingip_status(context, fip)
return fip
@db_api.retry_if_session_inactive()
def update_floatingip_status_retry(self, context, floatingip_id, status):
with db_api.CONTEXT_WRITER.using(context):
return super(OVNL3RouterPlugin, self).update_floatingip_status(
context, floatingip_id, status)
def disassociate_floatingips(self, context, port_id, do_notify=True):
fips = self.get_floatingips(context.elevated(),
filters={'port_id': [port_id]})