[OVN] Check LSP.up status before setting the port host info

Before executing updating the Logical_Swith_Port host information, it
is needed to check the current status of the port. If it doesn't match
with the event calling this update, the host information is not updated.

Closes-Bug: #2085543
Change-Id: I92afb190375caf27c815f9fe1cb627e87c49d4ca
(cherry picked from commit c0bdb0c8a3)
This commit is contained in:
Rodolfo Alonso Hernandez 2024-10-30 18:08:15 +00:00
parent 264306492f
commit 8d6ad2f4ec
2 changed files with 13 additions and 0 deletions

View File

@ -297,7 +297,14 @@ class OVNClient(object):
# NOTE(ralonsoh): OVN subports don't have host ID information.
return
port_up = self._nb_idl.lsp_get_up(db_port.id).execute(
check_error=True)
if up:
if not port_up:
LOG.warning('Logical_Switch_Port %s host information not '
'updated, the port state is down')
return
if not db_port.port_bindings:
return
@ -319,6 +326,11 @@ class OVNClient(object):
self._nb_idl.db_set(
'Logical_Switch_Port', db_port.id, ext_ids))
else:
if port_up:
LOG.warning('Logical_Switch_Port %s host information not '
'removed, the port state is up')
return
cmd.append(
self._nb_idl.db_remove(
'Logical_Switch_Port', db_port.id, 'external_ids',

View File

@ -245,6 +245,7 @@ class TestOVNClient(TestOVNClientBase):
context = mock.MagicMock()
port_id = 'fake-port-id'
db_port = mock.Mock(id=port_id)
self.nb_idl.lsp_get_up.return_value.execute.return_value = False
self.ovn_client.update_lsp_host_info(context, db_port, up=False)