Skip to content

Commit 32273c3

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Fix intermittent failures in finding metada port in SB DB" into stable/2023.1
2 parents d0cc33a + ec588b0 commit 32273c3

File tree

1 file changed

+22
-4
lines changed

1 file changed

+22
-4
lines changed

neutron/tests/functional/agent/ovn/metadata/test_metadata_agent.py

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,18 @@ def matches(self, event, row, old=None):
5151
ovn_const.OVN_AGENT_METADATA_SB_CFG_KEY, 0)) >= self.sb_cfg
5252

5353

54+
class MetadataPortCreateEvent(event.WaitEvent):
55+
event_name = 'MetadataPortCreateEvent'
56+
57+
def __init__(self, metadata_port, timeout=5):
58+
table = 'Port_Binding'
59+
events = (self.ROW_CREATE,)
60+
conditions = (('logical_port', '=', metadata_port),)
61+
super(MetadataPortCreateEvent, self).__init__(
62+
events, table, conditions, timeout=timeout
63+
)
64+
65+
5466
class TestMetadataAgent(base.TestOVNFunctionalBase):
5567
OVN_BRIDGE = 'br-int'
5668
FAKE_CHASSIS_HOST = 'ovn-host-fake'
@@ -132,8 +144,8 @@ def test_metadata_agent_healthcheck(self):
132144
# chassis with the nb_cfg, 1 revisions when listing the agents.
133145
self.assertTrue(row_event.wait())
134146

135-
def _create_metadata_port(self, txn, lswitch_name):
136-
mdt_port_name = 'ovn-mdt-' + uuidutils.generate_uuid()
147+
def _create_metadata_port(self, txn, lswitch_name, port_name=None):
148+
mdt_port_name = port_name or 'ovn-mdt-' + uuidutils.generate_uuid()
137149
txn.add(
138150
self.nb_api.lsp_add(
139151
lswitch_name,
@@ -144,7 +156,6 @@ def _create_metadata_port(self, txn, lswitch_name):
144156
ovn_const.OVN_CIDRS_EXT_ID_KEY: '192.168.122.123/24',
145157
ovn_const.OVN_DEVID_EXT_ID_KEY: 'ovnmeta-' + lswitch_name
146158
}))
147-
return mdt_port_name
148159

149160
def _update_metadata_port_ip(self, metadata_port_name):
150161
external_ids = {
@@ -219,7 +230,14 @@ def _test_agent_events(self, delete, type_=None, update=False):
219230
if update and type_ == ovn_const.LSP_TYPE_LOCALPORT:
220231
with self.nb_api.transaction(
221232
check_error=True, log_errors=True) as txn:
222-
mdt_port_name = self._create_metadata_port(txn, lswitch_name)
233+
mdt_port_name = 'ovn-mdt-' + uuidutils.generate_uuid()
234+
metadata_port_create_event = MetadataPortCreateEvent(
235+
mdt_port_name)
236+
self.agent.sb_idl.idl.notify_handler.watch_event(
237+
metadata_port_create_event)
238+
self._create_metadata_port(txn, lswitch_name, mdt_port_name)
239+
self.assertTrue(metadata_port_create_event.wait())
240+
223241
self.sb_api.lsp_bind(mdt_port_name, self.chassis_name).execute(
224242
check_error=True, log_errors=True)
225243
self._update_metadata_port_ip(mdt_port_name)

0 commit comments

Comments
 (0)