@@ -51,6 +51,18 @@ def matches(self, event, row, old=None):
51
51
ovn_const .OVN_AGENT_METADATA_SB_CFG_KEY , 0 )) >= self .sb_cfg
52
52
53
53
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
+
54
66
class TestMetadataAgent (base .TestOVNFunctionalBase ):
55
67
OVN_BRIDGE = 'br-int'
56
68
FAKE_CHASSIS_HOST = 'ovn-host-fake'
@@ -132,8 +144,8 @@ def test_metadata_agent_healthcheck(self):
132
144
# chassis with the nb_cfg, 1 revisions when listing the agents.
133
145
self .assertTrue (row_event .wait ())
134
146
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 ()
137
149
txn .add (
138
150
self .nb_api .lsp_add (
139
151
lswitch_name ,
@@ -144,7 +156,6 @@ def _create_metadata_port(self, txn, lswitch_name):
144
156
ovn_const .OVN_CIDRS_EXT_ID_KEY : '192.168.122.123/24' ,
145
157
ovn_const .OVN_DEVID_EXT_ID_KEY : 'ovnmeta-' + lswitch_name
146
158
}))
147
- return mdt_port_name
148
159
149
160
def _update_metadata_port_ip (self , metadata_port_name ):
150
161
external_ids = {
@@ -219,7 +230,14 @@ def _test_agent_events(self, delete, type_=None, update=False):
219
230
if update and type_ == ovn_const .LSP_TYPE_LOCALPORT :
220
231
with self .nb_api .transaction (
221
232
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
+
223
241
self .sb_api .lsp_bind (mdt_port_name , self .chassis_name ).execute (
224
242
check_error = True , log_errors = True )
225
243
self ._update_metadata_port_ip (mdt_port_name )
0 commit comments