[OVN] Wait for WaitForDataPathBindingCreateEvent event in functional tests

There is a bug in OVN functional tests, where it looks for datapath binding
of just created network.
In rare conditions datapath binding entry could not be in place in time,
because it is a ovn-northd responsibility to create it and we don't lock
this process in neutron api.

Change-Id: Ice115623491ad5b50397a0338f0a7780dc05d24c
Closes-Bug: #1884986
(cherry picked from commit 598e0376c6)
This commit is contained in:
Maciej Jozefczyk 2020-06-29 10:55:14 +00:00 committed by Maciej Józefczyk
parent f4172a9ab9
commit 8341a87bd0
1 changed files with 15 additions and 2 deletions

View File

@ -38,6 +38,17 @@ class WaitForMACBindingDeleteEvent(event.WaitEvent):
events, table, conditions, timeout=15)
class WaitForDataPathBindingCreateEvent(event.WaitEvent):
event_name = 'WaitForDataPathBindingCreateEvent'
def __init__(self, net_name):
table = 'Datapath_Binding'
events = (self.ROW_CREATE,)
conditions = (('external_ids', '=', {'name2': net_name}),)
super(WaitForDataPathBindingCreateEvent, self).__init__(
events, table, conditions, timeout=15)
class DistributedLockTestEvent(event.WaitEvent):
ONETIME = False
COUNTER = 0
@ -124,10 +135,12 @@ class TestNBDbMonitor(base.TestOVNFunctionalBase):
* Delete the FIP.
* Check that the MAC_Binding entry gets deleted.
"""
self._make_network(self.fmt, 'network1', True)
net_name = 'network1'
self._make_network(self.fmt, net_name, True)
row_event = WaitForDataPathBindingCreateEvent(net_name)
dp = self.sb_api.db_find(
'Datapath_Binding',
('external_ids', '=', {'name2': 'network1'})).execute()
('external_ids', '=', {'name2': net_name})).execute()
macb_id = self.sb_api.db_create('MAC_Binding', datapath=dp[0]['_uuid'],
ip='100.0.0.21').execute()
port = self.create_port()