@@ -1237,32 +1237,82 @@ def test_health_monitor_delete(self):
1237
1237
1238
1238
@mock .patch .object (ovn_helper .OvnProviderHelper ,
1239
1239
'_update_status_to_octavia' )
1240
+ @mock .patch .object (ovn_helper .OvnProviderHelper , 'listener_create' )
1240
1241
@mock .patch .object (ovn_helper .OvnProviderHelper , 'lb_create' )
1241
1242
def test_ensure_loadbalancer_lb_not_found (
1242
- self , mock_lb_create , mock_update_status ):
1243
+ self , mock_lb_create , mock_listener_create , mock_update_status ):
1243
1244
self .mock_find_ovn_lbs_with_retry .side_effect = [
1244
1245
idlutils .RowNotFound ]
1245
- self .driver ._ensure_loadbalancer (self .ref_lb0 )
1246
+ self .driver ._ensure_loadbalancer (self .ref_lb_fully_populated )
1246
1247
mock_lb_create .assert_called_once_with (
1247
- self .driver ._get_loadbalancer_request_info (self .ref_lb0 ),
1248
+ self .driver ._get_loadbalancer_request_info (
1249
+ self .ref_lb_fully_populated ),
1248
1250
)
1251
+ mock_listener_create .assert_called_once_with (
1252
+ self .driver ._get_listener_request_info (
1253
+ self .ref_lb_fully_populated .listeners [0 ]),
1254
+ )
1255
+
1256
+ @mock .patch .object (ovn_helper .OvnProviderHelper ,
1257
+ '_update_status_to_octavia' )
1258
+ @mock .patch .object (ovn_helper .OvnProviderHelper , 'listener_create' )
1259
+ @mock .patch .object (ovn_helper .OvnProviderHelper , 'lb_create' )
1260
+ def test_ensure_loadbalancer_lb_no_listener_not_found (
1261
+ self , mock_lb_create , mock_listener_create , mock_update_status ):
1262
+ self .mock_find_ovn_lbs_with_retry .side_effect = [
1263
+ idlutils .RowNotFound ]
1264
+ self .ref_lb_fully_populated .listeners = data_models .Unset
1265
+ self .driver ._ensure_loadbalancer (self .ref_lb_fully_populated )
1266
+ mock_lb_create .assert_called_once_with (
1267
+ self .driver ._get_loadbalancer_request_info (
1268
+ self .ref_lb_fully_populated ),
1269
+ )
1270
+ mock_listener_create .assert_not_called ()
1249
1271
1250
1272
@mock .patch .object (ovn_helper .OvnProviderHelper ,
1251
1273
'_update_status_to_octavia' )
1252
1274
@mock .patch .object (ovn_helper .OvnProviderHelper ,
1253
1275
'_get_current_operating_statuses' )
1276
+ @mock .patch .object (ovn_helper .OvnProviderHelper , 'listener_sync' )
1254
1277
@mock .patch .object (ovn_helper .OvnProviderHelper , 'lb_sync' )
1255
1278
def test_ensure_loadbalancer_lb_found (
1256
- self , mock_lb_sync , mock_get_status , mock_update_status ):
1279
+ self , mock_lb_sync , mock_listener_sync , mock_get_status ,
1280
+ mock_update_status ):
1257
1281
self .mock_find_ovn_lbs_with_retry .return_value = [
1258
1282
self .ovn_lb ]
1259
- self .driver ._ensure_loadbalancer (self .ref_lb0 )
1283
+ self .driver ._ensure_loadbalancer (self .ref_lb_fully_populated )
1260
1284
mock_lb_sync .assert_called_with (
1261
- self .driver ._get_loadbalancer_request_info (self .ref_lb0 ),
1285
+ self .driver ._get_loadbalancer_request_info (
1286
+ self .ref_lb_fully_populated ),
1287
+ self .ovn_lb
1288
+ )
1289
+ mock_listener_sync .assert_called_with (
1290
+ self .driver ._get_listener_request_info (
1291
+ self .ref_lb_fully_populated .listeners [0 ]),
1262
1292
self .ovn_lb
1263
1293
)
1264
1294
mock_get_status .assert_called_with (self .ovn_lb )
1265
1295
1296
+ @mock .patch .object (ovn_helper .OvnProviderHelper ,
1297
+ '_update_status_to_octavia' )
1298
+ @mock .patch .object (ovn_helper .OvnProviderHelper ,
1299
+ '_get_current_operating_statuses' )
1300
+ @mock .patch .object (ovn_helper .OvnProviderHelper , 'listener_sync' )
1301
+ @mock .patch .object (ovn_helper .OvnProviderHelper , 'lb_sync' )
1302
+ def test_ensure_loadbalancer_lb_no_listener_found (
1303
+ self , mock_lb_sync , mock_listener_sync , mock_get_status ,
1304
+ mock_update_status ):
1305
+ self .mock_find_ovn_lbs_with_retry .return_value = [
1306
+ self .ovn_lb ]
1307
+ self .ref_lb_fully_populated .listeners = data_models .Unset
1308
+ self .driver ._ensure_loadbalancer (self .ref_lb_fully_populated )
1309
+ mock_lb_sync .assert_called_with (
1310
+ self .driver ._get_loadbalancer_request_info (
1311
+ self .ref_lb_fully_populated ),
1312
+ self .ovn_lb
1313
+ )
1314
+ mock_listener_sync .assert_not_called ()
1315
+
1266
1316
@mock .patch .object (ovn_helper .OvnProviderHelper , 'get_octavia_lbs' )
1267
1317
@mock .patch .object (clients , 'get_octavia_client' )
1268
1318
def test_do_sync_no_loadbalancers (self , mock_get_octavia_client ,
@@ -1276,16 +1326,40 @@ def test_do_sync_no_loadbalancers(self, mock_get_octavia_client,
1276
1326
self .driver .do_sync (** lb_filters )
1277
1327
mock_ensure_lb .assert_not_called ()
1278
1328
1329
+ @mock .patch .object (data_models .Listener , 'from_dict' )
1279
1330
@mock .patch .object (o_driver_lib .DriverLibrary , 'get_loadbalancer' )
1280
1331
@mock .patch .object (ovn_helper .OvnProviderHelper , 'get_octavia_lbs' )
1281
1332
@mock .patch .object (clients , 'get_octavia_client' )
1282
1333
def test_do_sync_with_loadbalancers (self ,
1283
1334
mock_get_octavia_client ,
1284
1335
mock_get_octavia_lbs ,
1285
- mock_get_loadbalancer ):
1336
+ mock_get_loadbalancer ,
1337
+ mock_listener_from_dict ):
1286
1338
lb = mock .MagicMock (id = self .ref_lb_fully_sync_populated .name )
1287
1339
mock_get_octavia_lbs .return_value = [lb ]
1288
1340
mock_get_loadbalancer .return_value = self .ref_lb_fully_sync_populated
1341
+ mock_listener_from_dict .return_value = self .ref_listener
1342
+ lb_filters = {}
1343
+ with mock .patch .object (self .driver , '_ensure_loadbalancer' ) \
1344
+ as mock_ensure_lb :
1345
+ self .driver .do_sync (** lb_filters )
1346
+ mock_ensure_lb .assert_any_call (
1347
+ self .ref_lb_fully_sync_populated )
1348
+
1349
+ @mock .patch .object (data_models .Listener , 'from_dict' )
1350
+ @mock .patch .object (o_driver_lib .DriverLibrary , 'get_loadbalancer' )
1351
+ @mock .patch .object (ovn_helper .OvnProviderHelper , 'get_octavia_lbs' )
1352
+ @mock .patch .object (clients , 'get_octavia_client' )
1353
+ def test_do_sync_with_loadbalancers_no_listener (
1354
+ self ,
1355
+ mock_get_octavia_client ,
1356
+ mock_get_octavia_lbs ,
1357
+ mock_get_loadbalancer ,
1358
+ mock_listener_from_dict ):
1359
+ lb = mock .MagicMock (id = self .ref_lb_fully_sync_populated .name )
1360
+ mock_get_octavia_lbs .return_value = [lb , lb ]
1361
+ mock_get_loadbalancer .return_value = self .ref_lb_fully_sync_populated
1362
+ self .ref_lb_fully_sync_populated .listeners = data_models .Unset
1289
1363
lb_filters = {}
1290
1364
with mock .patch .object (self .driver , '_ensure_loadbalancer' ) \
1291
1365
as mock_ensure_lb :
0 commit comments