octavia 12.0.0.0rc2__py3-none-any.whl → 13.0.0.0rc1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- octavia/amphorae/backends/agent/api_server/osutils.py +1 -0
- octavia/amphorae/backends/agent/api_server/plug.py +21 -7
- octavia/amphorae/backends/agent/api_server/templates/amphora-netns.systemd.j2 +2 -2
- octavia/amphorae/backends/agent/api_server/util.py +21 -0
- octavia/amphorae/backends/health_daemon/health_daemon.py +9 -3
- octavia/amphorae/backends/health_daemon/health_sender.py +2 -0
- octavia/amphorae/backends/utils/interface.py +14 -6
- octavia/amphorae/backends/utils/interface_file.py +6 -3
- octavia/amphorae/backends/utils/keepalivedlvs_query.py +8 -9
- octavia/amphorae/drivers/driver_base.py +1 -2
- octavia/amphorae/drivers/haproxy/rest_api_driver.py +11 -25
- octavia/amphorae/drivers/health/heartbeat_udp.py +34 -24
- octavia/amphorae/drivers/keepalived/jinja/jinja_cfg.py +3 -12
- octavia/amphorae/drivers/noop_driver/driver.py +3 -5
- octavia/api/common/pagination.py +4 -4
- octavia/api/drivers/amphora_driver/v2/driver.py +11 -5
- octavia/api/drivers/driver_agent/driver_get.py +22 -14
- octavia/api/drivers/driver_agent/driver_updater.py +8 -4
- octavia/api/drivers/utils.py +4 -2
- octavia/api/healthcheck/healthcheck_plugins.py +4 -2
- octavia/api/root_controller.py +4 -1
- octavia/api/v2/controllers/amphora.py +35 -38
- octavia/api/v2/controllers/availability_zone_profiles.py +43 -33
- octavia/api/v2/controllers/availability_zones.py +22 -18
- octavia/api/v2/controllers/flavor_profiles.py +37 -28
- octavia/api/v2/controllers/flavors.py +19 -15
- octavia/api/v2/controllers/health_monitor.py +44 -33
- octavia/api/v2/controllers/l7policy.py +52 -40
- octavia/api/v2/controllers/l7rule.py +68 -55
- octavia/api/v2/controllers/listener.py +88 -61
- octavia/api/v2/controllers/load_balancer.py +52 -34
- octavia/api/v2/controllers/member.py +63 -52
- octavia/api/v2/controllers/pool.py +55 -42
- octavia/api/v2/controllers/quotas.py +5 -3
- octavia/api/v2/types/listener.py +15 -0
- octavia/cmd/octavia_worker.py +0 -3
- octavia/cmd/status.py +1 -4
- octavia/common/clients.py +25 -45
- octavia/common/config.py +64 -22
- octavia/common/constants.py +3 -2
- octavia/common/data_models.py +7 -1
- octavia/common/jinja/haproxy/combined_listeners/jinja_cfg.py +12 -1
- octavia/common/jinja/haproxy/combined_listeners/templates/macros.j2 +5 -2
- octavia/common/jinja/lvs/jinja_cfg.py +4 -2
- octavia/common/keystone.py +58 -5
- octavia/common/validate.py +35 -0
- octavia/compute/drivers/noop_driver/driver.py +6 -0
- octavia/controller/healthmanager/health_manager.py +3 -6
- octavia/controller/housekeeping/house_keeping.py +36 -37
- octavia/controller/worker/amphora_rate_limit.py +5 -4
- octavia/controller/worker/task_utils.py +57 -41
- octavia/controller/worker/v2/controller_worker.py +160 -103
- octavia/controller/worker/v2/flows/listener_flows.py +3 -0
- octavia/controller/worker/v2/flows/load_balancer_flows.py +9 -14
- octavia/controller/worker/v2/tasks/amphora_driver_tasks.py +152 -91
- octavia/controller/worker/v2/tasks/compute_tasks.py +4 -2
- octavia/controller/worker/v2/tasks/database_tasks.py +542 -400
- octavia/controller/worker/v2/tasks/network_tasks.py +119 -79
- octavia/db/api.py +26 -23
- octavia/db/base_models.py +2 -2
- octavia/db/healthcheck.py +2 -1
- octavia/db/migration/alembic_migrations/versions/632152d2d32e_add_http_strict_transport_security_.py +42 -0
- octavia/db/models.py +12 -2
- octavia/db/prepare.py +2 -0
- octavia/db/repositories.py +462 -482
- octavia/hacking/checks.py +1 -1
- octavia/network/base.py +0 -14
- octavia/network/drivers/neutron/allowed_address_pairs.py +92 -135
- octavia/network/drivers/neutron/base.py +65 -77
- octavia/network/drivers/neutron/utils.py +69 -85
- octavia/network/drivers/noop_driver/driver.py +0 -7
- octavia/statistics/drivers/update_db.py +10 -10
- octavia/tests/common/constants.py +91 -84
- octavia/tests/common/sample_data_models.py +13 -1
- octavia/tests/fixtures.py +32 -0
- octavia/tests/functional/amphorae/backend/agent/api_server/test_server.py +9 -10
- octavia/tests/functional/api/drivers/driver_agent/test_driver_agent.py +260 -15
- octavia/tests/functional/api/test_root_controller.py +3 -28
- octavia/tests/functional/api/v2/base.py +5 -3
- octavia/tests/functional/api/v2/test_amphora.py +18 -5
- octavia/tests/functional/api/v2/test_availability_zone_profiles.py +1 -0
- octavia/tests/functional/api/v2/test_listener.py +51 -19
- octavia/tests/functional/api/v2/test_load_balancer.py +10 -1
- octavia/tests/functional/db/base.py +31 -16
- octavia/tests/functional/db/test_models.py +27 -28
- octavia/tests/functional/db/test_repositories.py +407 -50
- octavia/tests/unit/amphorae/backends/agent/api_server/test_amphora_info.py +2 -0
- octavia/tests/unit/amphorae/backends/agent/api_server/test_osutils.py +1 -1
- octavia/tests/unit/amphorae/backends/agent/api_server/test_plug.py +54 -6
- octavia/tests/unit/amphorae/backends/agent/api_server/test_util.py +35 -0
- octavia/tests/unit/amphorae/backends/health_daemon/test_health_daemon.py +8 -0
- octavia/tests/unit/amphorae/backends/health_daemon/test_health_sender.py +18 -0
- octavia/tests/unit/amphorae/backends/utils/test_interface.py +81 -0
- octavia/tests/unit/amphorae/backends/utils/test_interface_file.py +2 -0
- octavia/tests/unit/amphorae/backends/utils/test_keepalivedlvs_query.py +129 -5
- octavia/tests/unit/amphorae/drivers/haproxy/test_rest_api_driver_1_0.py +42 -20
- octavia/tests/unit/amphorae/drivers/health/test_heartbeat_udp.py +18 -20
- octavia/tests/unit/amphorae/drivers/keepalived/jinja/test_jinja_cfg.py +4 -4
- octavia/tests/unit/amphorae/drivers/noop_driver/test_driver.py +4 -1
- octavia/tests/unit/api/drivers/driver_agent/test_driver_get.py +3 -3
- octavia/tests/unit/api/drivers/driver_agent/test_driver_updater.py +11 -13
- octavia/tests/unit/base.py +6 -0
- octavia/tests/unit/cmd/test_interface.py +2 -2
- octavia/tests/unit/cmd/test_status.py +2 -2
- octavia/tests/unit/common/jinja/haproxy/combined_listeners/test_jinja_cfg.py +152 -1
- octavia/tests/unit/common/sample_configs/sample_configs_combined.py +10 -3
- octavia/tests/unit/common/test_clients.py +0 -39
- octavia/tests/unit/common/test_keystone.py +54 -0
- octavia/tests/unit/common/test_validate.py +67 -0
- octavia/tests/unit/controller/healthmanager/test_health_manager.py +8 -22
- octavia/tests/unit/controller/housekeeping/test_house_keeping.py +3 -64
- octavia/tests/unit/controller/worker/test_amphora_rate_limit.py +1 -1
- octavia/tests/unit/controller/worker/test_task_utils.py +44 -24
- octavia/tests/unit/controller/worker/v2/flows/test_load_balancer_flows.py +0 -1
- octavia/tests/unit/controller/worker/v2/tasks/test_amphora_driver_tasks.py +49 -26
- octavia/tests/unit/controller/worker/v2/tasks/test_database_tasks.py +399 -196
- octavia/tests/unit/controller/worker/v2/tasks/test_database_tasks_quota.py +37 -64
- octavia/tests/unit/controller/worker/v2/tasks/test_network_tasks.py +3 -14
- octavia/tests/unit/controller/worker/v2/test_controller_worker.py +2 -2
- octavia/tests/unit/network/drivers/neutron/test_allowed_address_pairs.py +456 -561
- octavia/tests/unit/network/drivers/neutron/test_base.py +181 -194
- octavia/tests/unit/network/drivers/neutron/test_utils.py +14 -30
- octavia/tests/unit/statistics/drivers/test_update_db.py +7 -5
- {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/README.rst +1 -1
- {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/AUTHORS +4 -0
- {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/METADATA +4 -4
- {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/RECORD +141 -189
- {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/entry_points.txt +1 -2
- octavia-13.0.0.0rc1.dist-info/pbr.json +1 -0
- octavia/api/drivers/amphora_driver/v1/__init__.py +0 -11
- octavia/api/drivers/amphora_driver/v1/driver.py +0 -547
- octavia/controller/queue/v1/__init__.py +0 -11
- octavia/controller/queue/v1/consumer.py +0 -64
- octavia/controller/queue/v1/endpoints.py +0 -160
- octavia/controller/worker/v1/__init__.py +0 -11
- octavia/controller/worker/v1/controller_worker.py +0 -1157
- octavia/controller/worker/v1/flows/__init__.py +0 -11
- octavia/controller/worker/v1/flows/amphora_flows.py +0 -610
- octavia/controller/worker/v1/flows/health_monitor_flows.py +0 -105
- octavia/controller/worker/v1/flows/l7policy_flows.py +0 -94
- octavia/controller/worker/v1/flows/l7rule_flows.py +0 -100
- octavia/controller/worker/v1/flows/listener_flows.py +0 -128
- octavia/controller/worker/v1/flows/load_balancer_flows.py +0 -692
- octavia/controller/worker/v1/flows/member_flows.py +0 -230
- octavia/controller/worker/v1/flows/pool_flows.py +0 -127
- octavia/controller/worker/v1/tasks/__init__.py +0 -11
- octavia/controller/worker/v1/tasks/amphora_driver_tasks.py +0 -453
- octavia/controller/worker/v1/tasks/cert_task.py +0 -51
- octavia/controller/worker/v1/tasks/compute_tasks.py +0 -335
- octavia/controller/worker/v1/tasks/database_tasks.py +0 -2756
- octavia/controller/worker/v1/tasks/lifecycle_tasks.py +0 -173
- octavia/controller/worker/v1/tasks/model_tasks.py +0 -41
- octavia/controller/worker/v1/tasks/network_tasks.py +0 -970
- octavia/controller/worker/v1/tasks/retry_tasks.py +0 -74
- octavia/tests/unit/api/drivers/amphora_driver/v1/__init__.py +0 -11
- octavia/tests/unit/api/drivers/amphora_driver/v1/test_driver.py +0 -824
- octavia/tests/unit/controller/queue/v1/__init__.py +0 -11
- octavia/tests/unit/controller/queue/v1/test_consumer.py +0 -61
- octavia/tests/unit/controller/queue/v1/test_endpoints.py +0 -189
- octavia/tests/unit/controller/worker/v1/__init__.py +0 -11
- octavia/tests/unit/controller/worker/v1/flows/__init__.py +0 -11
- octavia/tests/unit/controller/worker/v1/flows/test_amphora_flows.py +0 -474
- octavia/tests/unit/controller/worker/v1/flows/test_health_monitor_flows.py +0 -72
- octavia/tests/unit/controller/worker/v1/flows/test_l7policy_flows.py +0 -67
- octavia/tests/unit/controller/worker/v1/flows/test_l7rule_flows.py +0 -67
- octavia/tests/unit/controller/worker/v1/flows/test_listener_flows.py +0 -91
- octavia/tests/unit/controller/worker/v1/flows/test_load_balancer_flows.py +0 -431
- octavia/tests/unit/controller/worker/v1/flows/test_member_flows.py +0 -106
- octavia/tests/unit/controller/worker/v1/flows/test_pool_flows.py +0 -77
- octavia/tests/unit/controller/worker/v1/tasks/__init__.py +0 -11
- octavia/tests/unit/controller/worker/v1/tasks/test_amphora_driver_tasks.py +0 -792
- octavia/tests/unit/controller/worker/v1/tasks/test_cert_task.py +0 -46
- octavia/tests/unit/controller/worker/v1/tasks/test_compute_tasks.py +0 -634
- octavia/tests/unit/controller/worker/v1/tasks/test_database_tasks.py +0 -2615
- octavia/tests/unit/controller/worker/v1/tasks/test_database_tasks_quota.py +0 -415
- octavia/tests/unit/controller/worker/v1/tasks/test_lifecycle_tasks.py +0 -401
- octavia/tests/unit/controller/worker/v1/tasks/test_model_tasks.py +0 -44
- octavia/tests/unit/controller/worker/v1/tasks/test_network_tasks.py +0 -1788
- octavia/tests/unit/controller/worker/v1/tasks/test_retry_tasks.py +0 -47
- octavia/tests/unit/controller/worker/v1/test_controller_worker.py +0 -2096
- octavia-12.0.0.0rc2.dist-info/pbr.json +0 -1
- {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/LICENSE +0 -0
- {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/README.rst +0 -0
- {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/diskimage-create.sh +0 -0
- {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/image-tests.sh +0 -0
- {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/requirements.txt +0 -0
- {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/test-requirements.txt +0 -0
- {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/tox.ini +0 -0
- {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/version.txt +0 -0
- {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/scripts/octavia-wsgi +0 -0
- {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/LICENSE +0 -0
- {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/WHEEL +0 -0
- {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/top_level.txt +0 -0
@@ -71,7 +71,7 @@ _session_mock = mock.MagicMock()
|
|
71
71
|
@mock.patch('octavia.db.repositories.ListenerRepository.get',
|
72
72
|
return_value=_listener_mock)
|
73
73
|
@mock.patch('octavia.db.api.get_session', return_value=_session_mock)
|
74
|
-
@mock.patch('octavia.controller.worker.
|
74
|
+
@mock.patch('octavia.controller.worker.v2.tasks.amphora_driver_tasks.LOG')
|
75
75
|
@mock.patch('oslo_utils.uuidutils.generate_uuid', return_value=AMP_ID)
|
76
76
|
@mock.patch('stevedore.driver.DriverManager.driver')
|
77
77
|
class TestAmphoraDriverTasks(base.TestCase):
|
@@ -148,7 +148,9 @@ class TestAmphoraDriverTasks(base.TestCase):
|
|
148
148
|
_session_mock, AMP_ID, status=constants.ERROR)
|
149
149
|
|
150
150
|
@mock.patch('octavia.db.repositories.LoadBalancerRepository.get')
|
151
|
+
@mock.patch('octavia.db.api.session')
|
151
152
|
def test_listeners_update(self,
|
153
|
+
mock_get_session_ctx,
|
152
154
|
mock_lb_get,
|
153
155
|
mock_driver,
|
154
156
|
mock_generate_uuid,
|
@@ -174,12 +176,14 @@ class TestAmphoraDriverTasks(base.TestCase):
|
|
174
176
|
listeners_update_obj.execute(None)
|
175
177
|
mock_driver.update.assert_not_called()
|
176
178
|
|
179
|
+
mock_session = mock_get_session_ctx().begin().__enter__()
|
180
|
+
|
177
181
|
# Test the revert
|
178
182
|
amp = listeners_update_obj.revert(_LB_mock)
|
179
|
-
expected_db_calls = [mock.call(
|
183
|
+
expected_db_calls = [mock.call(mock_session,
|
180
184
|
id=listeners[0].id,
|
181
185
|
provisioning_status=constants.ERROR),
|
182
|
-
mock.call(
|
186
|
+
mock.call(mock_session,
|
183
187
|
id=listeners[1].id,
|
184
188
|
provisioning_status=constants.ERROR)]
|
185
189
|
repo.ListenerRepository.update.assert_has_calls(expected_db_calls)
|
@@ -262,7 +266,9 @@ class TestAmphoraDriverTasks(base.TestCase):
|
|
262
266
|
listeners_start_obj.revert(_LB_mock)
|
263
267
|
mock_prov_status_error.assert_called_once_with('12345')
|
264
268
|
|
269
|
+
@mock.patch('octavia.db.api.session')
|
265
270
|
def test_listener_delete(self,
|
271
|
+
mock_get_session_ctx,
|
266
272
|
mock_driver,
|
267
273
|
mock_generate_uuid,
|
268
274
|
mock_log,
|
@@ -278,10 +284,12 @@ class TestAmphoraDriverTasks(base.TestCase):
|
|
278
284
|
|
279
285
|
mock_driver.delete.assert_called_once_with(_listener_mock)
|
280
286
|
|
287
|
+
mock_session = mock_get_session_ctx().begin().__enter__()
|
288
|
+
|
281
289
|
# Test the revert
|
282
290
|
amp = listener_delete_obj.revert(listener_dict)
|
283
291
|
repo.ListenerRepository.update.assert_called_once_with(
|
284
|
-
|
292
|
+
mock_session,
|
285
293
|
id=LISTENER_ID,
|
286
294
|
provisioning_status=constants.ERROR)
|
287
295
|
self.assertIsNone(amp)
|
@@ -291,7 +299,7 @@ class TestAmphoraDriverTasks(base.TestCase):
|
|
291
299
|
mock_listener_repo_update.side_effect = Exception('fail')
|
292
300
|
amp = listener_delete_obj.revert(listener_dict)
|
293
301
|
repo.ListenerRepository.update.assert_called_once_with(
|
294
|
-
|
302
|
+
mock_session,
|
295
303
|
id=LISTENER_ID,
|
296
304
|
provisioning_status=constants.ERROR)
|
297
305
|
self.assertIsNone(amp)
|
@@ -330,7 +338,9 @@ class TestAmphoraDriverTasks(base.TestCase):
|
|
330
338
|
mock_driver.get_diagnostics.assert_called_once_with(
|
331
339
|
_amphora_mock)
|
332
340
|
|
341
|
+
@mock.patch('octavia.db.api.session')
|
333
342
|
def test_amphora_finalize(self,
|
343
|
+
mock_get_session_ctx,
|
334
344
|
mock_driver,
|
335
345
|
mock_generate_uuid,
|
336
346
|
mock_log,
|
@@ -347,10 +357,12 @@ class TestAmphoraDriverTasks(base.TestCase):
|
|
347
357
|
mock_driver.finalize_amphora.assert_called_once_with(
|
348
358
|
_db_amphora_mock)
|
349
359
|
|
360
|
+
mock_session = mock_get_session_ctx().begin().__enter__()
|
361
|
+
|
350
362
|
# Test revert
|
351
363
|
amp = amphora_finalize_obj.revert(None, _amphora_mock)
|
352
364
|
repo.AmphoraRepository.update.assert_called_once_with(
|
353
|
-
|
365
|
+
mock_session,
|
354
366
|
id=AMP_ID,
|
355
367
|
status=constants.ERROR)
|
356
368
|
self.assertIsNone(amp)
|
@@ -360,7 +372,7 @@ class TestAmphoraDriverTasks(base.TestCase):
|
|
360
372
|
mock_amphora_repo_update.side_effect = Exception('fail')
|
361
373
|
amp = amphora_finalize_obj.revert(None, _amphora_mock)
|
362
374
|
repo.AmphoraRepository.update.assert_called_once_with(
|
363
|
-
|
375
|
+
mock_session,
|
364
376
|
id=AMP_ID,
|
365
377
|
status=constants.ERROR)
|
366
378
|
self.assertIsNone(amp)
|
@@ -371,7 +383,9 @@ class TestAmphoraDriverTasks(base.TestCase):
|
|
371
383
|
failure.Failure.from_exception(Exception('boom')), _amphora_mock)
|
372
384
|
repo.AmphoraRepository.update.assert_not_called()
|
373
385
|
|
386
|
+
@mock.patch('octavia.db.api.session')
|
374
387
|
def test_amphora_post_network_plug(self,
|
388
|
+
mock_get_session_ctx,
|
375
389
|
mock_driver,
|
376
390
|
mock_generate_uuid,
|
377
391
|
mock_log,
|
@@ -396,10 +410,12 @@ class TestAmphoraDriverTasks(base.TestCase):
|
|
396
410
|
network_data_models.Port(**port_mock),
|
397
411
|
_amphora_network_config_mock)
|
398
412
|
|
413
|
+
mock_session = mock_get_session_ctx().begin().__enter__()
|
414
|
+
|
399
415
|
# Test revert
|
400
416
|
amp = amphora_post_network_plug_obj.revert(None, _amphora_mock)
|
401
417
|
repo.AmphoraRepository.update.assert_called_once_with(
|
402
|
-
|
418
|
+
mock_session,
|
403
419
|
id=AMP_ID,
|
404
420
|
status=constants.ERROR)
|
405
421
|
|
@@ -410,7 +426,7 @@ class TestAmphoraDriverTasks(base.TestCase):
|
|
410
426
|
mock_amphora_repo_update.side_effect = Exception('fail')
|
411
427
|
amp = amphora_post_network_plug_obj.revert(None, _amphora_mock)
|
412
428
|
repo.AmphoraRepository.update.assert_called_once_with(
|
413
|
-
|
429
|
+
mock_session,
|
414
430
|
id=AMP_ID,
|
415
431
|
status=constants.ERROR)
|
416
432
|
|
@@ -456,7 +472,10 @@ class TestAmphoraDriverTasks(base.TestCase):
|
|
456
472
|
self.assertEqual(hr1['nexthop'], hr2.nexthop)
|
457
473
|
|
458
474
|
@mock.patch('octavia.db.repositories.LoadBalancerRepository.get')
|
459
|
-
|
475
|
+
@mock.patch('octavia.db.api.session')
|
476
|
+
def test_amphorae_post_network_plug(self,
|
477
|
+
mock_get_session_ctx,
|
478
|
+
mock_lb_get,
|
460
479
|
mock_driver,
|
461
480
|
mock_generate_uuid,
|
462
481
|
mock_log,
|
@@ -496,11 +515,13 @@ class TestAmphoraDriverTasks(base.TestCase):
|
|
496
515
|
_amphora_network_config_mock)
|
497
516
|
mock_driver.post_network_plug.assert_not_called()
|
498
517
|
|
518
|
+
mock_session = mock_get_session_ctx().begin().__enter__()
|
519
|
+
|
499
520
|
# Test revert
|
500
521
|
amp = amphora_post_network_plug_obj.revert(None, _LB_mock,
|
501
522
|
_deltas_mock)
|
502
523
|
repo.AmphoraRepository.update.assert_called_once_with(
|
503
|
-
|
524
|
+
mock_session,
|
504
525
|
id=AMP_ID,
|
505
526
|
status=constants.ERROR)
|
506
527
|
|
@@ -512,7 +533,7 @@ class TestAmphoraDriverTasks(base.TestCase):
|
|
512
533
|
amp = amphora_post_network_plug_obj.revert(None, _LB_mock,
|
513
534
|
_deltas_mock)
|
514
535
|
repo.AmphoraRepository.update.assert_called_once_with(
|
515
|
-
|
536
|
+
mock_session,
|
516
537
|
id=AMP_ID,
|
517
538
|
status=constants.ERROR)
|
518
539
|
|
@@ -527,7 +548,10 @@ class TestAmphoraDriverTasks(base.TestCase):
|
|
527
548
|
|
528
549
|
@mock.patch('octavia.db.repositories.LoadBalancerRepository.update')
|
529
550
|
@mock.patch('octavia.db.repositories.LoadBalancerRepository.get')
|
530
|
-
|
551
|
+
@mock.patch('octavia.db.api.session')
|
552
|
+
def test_amphora_post_vip_plug(self,
|
553
|
+
mock_get_session_ctx,
|
554
|
+
mock_lb_get,
|
531
555
|
mock_loadbalancer_repo_update,
|
532
556
|
mock_driver,
|
533
557
|
mock_generate_uuid,
|
@@ -560,13 +584,14 @@ class TestAmphoraDriverTasks(base.TestCase):
|
|
560
584
|
|
561
585
|
mock_driver.post_vip_plug.assert_called_once_with(
|
562
586
|
_db_amphora_mock, _db_load_balancer_mock, amphorae_net_config_mock,
|
563
|
-
vip_subnet
|
564
|
-
|
587
|
+
vrrp_port, vip_subnet, additional_vip_data=[])
|
588
|
+
|
589
|
+
mock_session = mock_get_session_ctx().begin().__enter__()
|
565
590
|
|
566
591
|
# Test revert
|
567
592
|
amp = amphora_post_vip_plug_obj.revert(None, _amphora_mock, _LB_mock)
|
568
593
|
repo.AmphoraRepository.update.assert_called_once_with(
|
569
|
-
|
594
|
+
mock_session,
|
570
595
|
id=AMP_ID,
|
571
596
|
status=constants.ERROR)
|
572
597
|
repo.LoadBalancerRepository.update.assert_not_called()
|
@@ -580,7 +605,7 @@ class TestAmphoraDriverTasks(base.TestCase):
|
|
580
605
|
mock_loadbalancer_repo_update.side_effect = Exception('fail')
|
581
606
|
amp = amphora_post_vip_plug_obj.revert(None, _amphora_mock, _LB_mock)
|
582
607
|
repo.AmphoraRepository.update.assert_called_once_with(
|
583
|
-
|
608
|
+
mock_session,
|
584
609
|
id=AMP_ID,
|
585
610
|
status=constants.ERROR)
|
586
611
|
repo.LoadBalancerRepository.update.assert_not_called()
|
@@ -628,11 +653,10 @@ class TestAmphoraDriverTasks(base.TestCase):
|
|
628
653
|
|
629
654
|
mock_driver.post_vip_plug.assert_called_once_with(
|
630
655
|
_db_amphora_mock, _db_load_balancer_mock, amphorae_net_config_mock,
|
631
|
-
vip_subnet
|
632
|
-
additional_vip_data=[])
|
656
|
+
vrrp_port, vip_subnet, additional_vip_data=[])
|
633
657
|
|
634
|
-
|
635
|
-
vip_subnet_arg =
|
658
|
+
call_args = mock_driver.post_vip_plug.call_args[0]
|
659
|
+
vip_subnet_arg = call_args[4]
|
636
660
|
self.assertEqual(2, len(vip_subnet_arg.host_routes))
|
637
661
|
for hr1, hr2 in zip(host_routes, vip_subnet_arg.host_routes):
|
638
662
|
self.assertEqual(hr1['destination'], hr2.destination)
|
@@ -691,11 +715,11 @@ class TestAmphoraDriverTasks(base.TestCase):
|
|
691
715
|
|
692
716
|
mock_driver.post_vip_plug.assert_called_once_with(
|
693
717
|
_db_amphora_mock, _db_load_balancer_mock, amphorae_net_config_mock,
|
694
|
-
vip_subnet
|
695
|
-
additional_vip_data=additional_vip_data)
|
718
|
+
vrrp_port, vip_subnet, additional_vip_data=additional_vip_data)
|
696
719
|
|
720
|
+
call_args = mock_driver.post_vip_plug.call_args[0]
|
697
721
|
call_kwargs = mock_driver.post_vip_plug.call_args[1]
|
698
|
-
vip_subnet_arg =
|
722
|
+
vip_subnet_arg = call_args[4]
|
699
723
|
self.assertEqual(2, len(vip_subnet_arg.host_routes))
|
700
724
|
for hr1, hr2 in zip(host_routes, vip_subnet_arg.host_routes):
|
701
725
|
self.assertEqual(hr1['destination'], hr2.destination)
|
@@ -741,8 +765,7 @@ class TestAmphoraDriverTasks(base.TestCase):
|
|
741
765
|
|
742
766
|
mock_driver.post_vip_plug.assert_called_once_with(
|
743
767
|
_db_amphora_mock, _db_load_balancer_mock, amphorae_net_config_mock,
|
744
|
-
vip_subnet
|
745
|
-
additional_vip_data=[])
|
768
|
+
vrrp_port, vip_subnet, additional_vip_data=[])
|
746
769
|
|
747
770
|
def test_amphora_cert_upload(self,
|
748
771
|
mock_driver,
|