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.
Files changed (193) hide show
  1. octavia/amphorae/backends/agent/api_server/osutils.py +1 -0
  2. octavia/amphorae/backends/agent/api_server/plug.py +21 -7
  3. octavia/amphorae/backends/agent/api_server/templates/amphora-netns.systemd.j2 +2 -2
  4. octavia/amphorae/backends/agent/api_server/util.py +21 -0
  5. octavia/amphorae/backends/health_daemon/health_daemon.py +9 -3
  6. octavia/amphorae/backends/health_daemon/health_sender.py +2 -0
  7. octavia/amphorae/backends/utils/interface.py +14 -6
  8. octavia/amphorae/backends/utils/interface_file.py +6 -3
  9. octavia/amphorae/backends/utils/keepalivedlvs_query.py +8 -9
  10. octavia/amphorae/drivers/driver_base.py +1 -2
  11. octavia/amphorae/drivers/haproxy/rest_api_driver.py +11 -25
  12. octavia/amphorae/drivers/health/heartbeat_udp.py +34 -24
  13. octavia/amphorae/drivers/keepalived/jinja/jinja_cfg.py +3 -12
  14. octavia/amphorae/drivers/noop_driver/driver.py +3 -5
  15. octavia/api/common/pagination.py +4 -4
  16. octavia/api/drivers/amphora_driver/v2/driver.py +11 -5
  17. octavia/api/drivers/driver_agent/driver_get.py +22 -14
  18. octavia/api/drivers/driver_agent/driver_updater.py +8 -4
  19. octavia/api/drivers/utils.py +4 -2
  20. octavia/api/healthcheck/healthcheck_plugins.py +4 -2
  21. octavia/api/root_controller.py +4 -1
  22. octavia/api/v2/controllers/amphora.py +35 -38
  23. octavia/api/v2/controllers/availability_zone_profiles.py +43 -33
  24. octavia/api/v2/controllers/availability_zones.py +22 -18
  25. octavia/api/v2/controllers/flavor_profiles.py +37 -28
  26. octavia/api/v2/controllers/flavors.py +19 -15
  27. octavia/api/v2/controllers/health_monitor.py +44 -33
  28. octavia/api/v2/controllers/l7policy.py +52 -40
  29. octavia/api/v2/controllers/l7rule.py +68 -55
  30. octavia/api/v2/controllers/listener.py +88 -61
  31. octavia/api/v2/controllers/load_balancer.py +52 -34
  32. octavia/api/v2/controllers/member.py +63 -52
  33. octavia/api/v2/controllers/pool.py +55 -42
  34. octavia/api/v2/controllers/quotas.py +5 -3
  35. octavia/api/v2/types/listener.py +15 -0
  36. octavia/cmd/octavia_worker.py +0 -3
  37. octavia/cmd/status.py +1 -4
  38. octavia/common/clients.py +25 -45
  39. octavia/common/config.py +64 -22
  40. octavia/common/constants.py +3 -2
  41. octavia/common/data_models.py +7 -1
  42. octavia/common/jinja/haproxy/combined_listeners/jinja_cfg.py +12 -1
  43. octavia/common/jinja/haproxy/combined_listeners/templates/macros.j2 +5 -2
  44. octavia/common/jinja/lvs/jinja_cfg.py +4 -2
  45. octavia/common/keystone.py +58 -5
  46. octavia/common/validate.py +35 -0
  47. octavia/compute/drivers/noop_driver/driver.py +6 -0
  48. octavia/controller/healthmanager/health_manager.py +3 -6
  49. octavia/controller/housekeeping/house_keeping.py +36 -37
  50. octavia/controller/worker/amphora_rate_limit.py +5 -4
  51. octavia/controller/worker/task_utils.py +57 -41
  52. octavia/controller/worker/v2/controller_worker.py +160 -103
  53. octavia/controller/worker/v2/flows/listener_flows.py +3 -0
  54. octavia/controller/worker/v2/flows/load_balancer_flows.py +9 -14
  55. octavia/controller/worker/v2/tasks/amphora_driver_tasks.py +152 -91
  56. octavia/controller/worker/v2/tasks/compute_tasks.py +4 -2
  57. octavia/controller/worker/v2/tasks/database_tasks.py +542 -400
  58. octavia/controller/worker/v2/tasks/network_tasks.py +119 -79
  59. octavia/db/api.py +26 -23
  60. octavia/db/base_models.py +2 -2
  61. octavia/db/healthcheck.py +2 -1
  62. octavia/db/migration/alembic_migrations/versions/632152d2d32e_add_http_strict_transport_security_.py +42 -0
  63. octavia/db/models.py +12 -2
  64. octavia/db/prepare.py +2 -0
  65. octavia/db/repositories.py +462 -482
  66. octavia/hacking/checks.py +1 -1
  67. octavia/network/base.py +0 -14
  68. octavia/network/drivers/neutron/allowed_address_pairs.py +92 -135
  69. octavia/network/drivers/neutron/base.py +65 -77
  70. octavia/network/drivers/neutron/utils.py +69 -85
  71. octavia/network/drivers/noop_driver/driver.py +0 -7
  72. octavia/statistics/drivers/update_db.py +10 -10
  73. octavia/tests/common/constants.py +91 -84
  74. octavia/tests/common/sample_data_models.py +13 -1
  75. octavia/tests/fixtures.py +32 -0
  76. octavia/tests/functional/amphorae/backend/agent/api_server/test_server.py +9 -10
  77. octavia/tests/functional/api/drivers/driver_agent/test_driver_agent.py +260 -15
  78. octavia/tests/functional/api/test_root_controller.py +3 -28
  79. octavia/tests/functional/api/v2/base.py +5 -3
  80. octavia/tests/functional/api/v2/test_amphora.py +18 -5
  81. octavia/tests/functional/api/v2/test_availability_zone_profiles.py +1 -0
  82. octavia/tests/functional/api/v2/test_listener.py +51 -19
  83. octavia/tests/functional/api/v2/test_load_balancer.py +10 -1
  84. octavia/tests/functional/db/base.py +31 -16
  85. octavia/tests/functional/db/test_models.py +27 -28
  86. octavia/tests/functional/db/test_repositories.py +407 -50
  87. octavia/tests/unit/amphorae/backends/agent/api_server/test_amphora_info.py +2 -0
  88. octavia/tests/unit/amphorae/backends/agent/api_server/test_osutils.py +1 -1
  89. octavia/tests/unit/amphorae/backends/agent/api_server/test_plug.py +54 -6
  90. octavia/tests/unit/amphorae/backends/agent/api_server/test_util.py +35 -0
  91. octavia/tests/unit/amphorae/backends/health_daemon/test_health_daemon.py +8 -0
  92. octavia/tests/unit/amphorae/backends/health_daemon/test_health_sender.py +18 -0
  93. octavia/tests/unit/amphorae/backends/utils/test_interface.py +81 -0
  94. octavia/tests/unit/amphorae/backends/utils/test_interface_file.py +2 -0
  95. octavia/tests/unit/amphorae/backends/utils/test_keepalivedlvs_query.py +129 -5
  96. octavia/tests/unit/amphorae/drivers/haproxy/test_rest_api_driver_1_0.py +42 -20
  97. octavia/tests/unit/amphorae/drivers/health/test_heartbeat_udp.py +18 -20
  98. octavia/tests/unit/amphorae/drivers/keepalived/jinja/test_jinja_cfg.py +4 -4
  99. octavia/tests/unit/amphorae/drivers/noop_driver/test_driver.py +4 -1
  100. octavia/tests/unit/api/drivers/driver_agent/test_driver_get.py +3 -3
  101. octavia/tests/unit/api/drivers/driver_agent/test_driver_updater.py +11 -13
  102. octavia/tests/unit/base.py +6 -0
  103. octavia/tests/unit/cmd/test_interface.py +2 -2
  104. octavia/tests/unit/cmd/test_status.py +2 -2
  105. octavia/tests/unit/common/jinja/haproxy/combined_listeners/test_jinja_cfg.py +152 -1
  106. octavia/tests/unit/common/sample_configs/sample_configs_combined.py +10 -3
  107. octavia/tests/unit/common/test_clients.py +0 -39
  108. octavia/tests/unit/common/test_keystone.py +54 -0
  109. octavia/tests/unit/common/test_validate.py +67 -0
  110. octavia/tests/unit/controller/healthmanager/test_health_manager.py +8 -22
  111. octavia/tests/unit/controller/housekeeping/test_house_keeping.py +3 -64
  112. octavia/tests/unit/controller/worker/test_amphora_rate_limit.py +1 -1
  113. octavia/tests/unit/controller/worker/test_task_utils.py +44 -24
  114. octavia/tests/unit/controller/worker/v2/flows/test_load_balancer_flows.py +0 -1
  115. octavia/tests/unit/controller/worker/v2/tasks/test_amphora_driver_tasks.py +49 -26
  116. octavia/tests/unit/controller/worker/v2/tasks/test_database_tasks.py +399 -196
  117. octavia/tests/unit/controller/worker/v2/tasks/test_database_tasks_quota.py +37 -64
  118. octavia/tests/unit/controller/worker/v2/tasks/test_network_tasks.py +3 -14
  119. octavia/tests/unit/controller/worker/v2/test_controller_worker.py +2 -2
  120. octavia/tests/unit/network/drivers/neutron/test_allowed_address_pairs.py +456 -561
  121. octavia/tests/unit/network/drivers/neutron/test_base.py +181 -194
  122. octavia/tests/unit/network/drivers/neutron/test_utils.py +14 -30
  123. octavia/tests/unit/statistics/drivers/test_update_db.py +7 -5
  124. {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/README.rst +1 -1
  125. {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/AUTHORS +4 -0
  126. {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/METADATA +4 -4
  127. {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/RECORD +141 -189
  128. {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/entry_points.txt +1 -2
  129. octavia-13.0.0.0rc1.dist-info/pbr.json +1 -0
  130. octavia/api/drivers/amphora_driver/v1/__init__.py +0 -11
  131. octavia/api/drivers/amphora_driver/v1/driver.py +0 -547
  132. octavia/controller/queue/v1/__init__.py +0 -11
  133. octavia/controller/queue/v1/consumer.py +0 -64
  134. octavia/controller/queue/v1/endpoints.py +0 -160
  135. octavia/controller/worker/v1/__init__.py +0 -11
  136. octavia/controller/worker/v1/controller_worker.py +0 -1157
  137. octavia/controller/worker/v1/flows/__init__.py +0 -11
  138. octavia/controller/worker/v1/flows/amphora_flows.py +0 -610
  139. octavia/controller/worker/v1/flows/health_monitor_flows.py +0 -105
  140. octavia/controller/worker/v1/flows/l7policy_flows.py +0 -94
  141. octavia/controller/worker/v1/flows/l7rule_flows.py +0 -100
  142. octavia/controller/worker/v1/flows/listener_flows.py +0 -128
  143. octavia/controller/worker/v1/flows/load_balancer_flows.py +0 -692
  144. octavia/controller/worker/v1/flows/member_flows.py +0 -230
  145. octavia/controller/worker/v1/flows/pool_flows.py +0 -127
  146. octavia/controller/worker/v1/tasks/__init__.py +0 -11
  147. octavia/controller/worker/v1/tasks/amphora_driver_tasks.py +0 -453
  148. octavia/controller/worker/v1/tasks/cert_task.py +0 -51
  149. octavia/controller/worker/v1/tasks/compute_tasks.py +0 -335
  150. octavia/controller/worker/v1/tasks/database_tasks.py +0 -2756
  151. octavia/controller/worker/v1/tasks/lifecycle_tasks.py +0 -173
  152. octavia/controller/worker/v1/tasks/model_tasks.py +0 -41
  153. octavia/controller/worker/v1/tasks/network_tasks.py +0 -970
  154. octavia/controller/worker/v1/tasks/retry_tasks.py +0 -74
  155. octavia/tests/unit/api/drivers/amphora_driver/v1/__init__.py +0 -11
  156. octavia/tests/unit/api/drivers/amphora_driver/v1/test_driver.py +0 -824
  157. octavia/tests/unit/controller/queue/v1/__init__.py +0 -11
  158. octavia/tests/unit/controller/queue/v1/test_consumer.py +0 -61
  159. octavia/tests/unit/controller/queue/v1/test_endpoints.py +0 -189
  160. octavia/tests/unit/controller/worker/v1/__init__.py +0 -11
  161. octavia/tests/unit/controller/worker/v1/flows/__init__.py +0 -11
  162. octavia/tests/unit/controller/worker/v1/flows/test_amphora_flows.py +0 -474
  163. octavia/tests/unit/controller/worker/v1/flows/test_health_monitor_flows.py +0 -72
  164. octavia/tests/unit/controller/worker/v1/flows/test_l7policy_flows.py +0 -67
  165. octavia/tests/unit/controller/worker/v1/flows/test_l7rule_flows.py +0 -67
  166. octavia/tests/unit/controller/worker/v1/flows/test_listener_flows.py +0 -91
  167. octavia/tests/unit/controller/worker/v1/flows/test_load_balancer_flows.py +0 -431
  168. octavia/tests/unit/controller/worker/v1/flows/test_member_flows.py +0 -106
  169. octavia/tests/unit/controller/worker/v1/flows/test_pool_flows.py +0 -77
  170. octavia/tests/unit/controller/worker/v1/tasks/__init__.py +0 -11
  171. octavia/tests/unit/controller/worker/v1/tasks/test_amphora_driver_tasks.py +0 -792
  172. octavia/tests/unit/controller/worker/v1/tasks/test_cert_task.py +0 -46
  173. octavia/tests/unit/controller/worker/v1/tasks/test_compute_tasks.py +0 -634
  174. octavia/tests/unit/controller/worker/v1/tasks/test_database_tasks.py +0 -2615
  175. octavia/tests/unit/controller/worker/v1/tasks/test_database_tasks_quota.py +0 -415
  176. octavia/tests/unit/controller/worker/v1/tasks/test_lifecycle_tasks.py +0 -401
  177. octavia/tests/unit/controller/worker/v1/tasks/test_model_tasks.py +0 -44
  178. octavia/tests/unit/controller/worker/v1/tasks/test_network_tasks.py +0 -1788
  179. octavia/tests/unit/controller/worker/v1/tasks/test_retry_tasks.py +0 -47
  180. octavia/tests/unit/controller/worker/v1/test_controller_worker.py +0 -2096
  181. octavia-12.0.0.0rc2.dist-info/pbr.json +0 -1
  182. {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/LICENSE +0 -0
  183. {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/README.rst +0 -0
  184. {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/diskimage-create.sh +0 -0
  185. {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/image-tests.sh +0 -0
  186. {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/requirements.txt +0 -0
  187. {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/test-requirements.txt +0 -0
  188. {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/tox.ini +0 -0
  189. {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/version.txt +0 -0
  190. {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/scripts/octavia-wsgi +0 -0
  191. {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/LICENSE +0 -0
  192. {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/WHEEL +0 -0
  193. {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.v1.tasks.amphora_driver_tasks.LOG')
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(_session_mock,
183
+ expected_db_calls = [mock.call(mock_session,
180
184
  id=listeners[0].id,
181
185
  provisioning_status=constants.ERROR),
182
- mock.call(_session_mock,
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
- _session_mock,
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
- _session_mock,
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
- _session_mock,
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
- _session_mock,
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
- _session_mock,
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
- _session_mock,
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
- def test_amphorae_post_network_plug(self, mock_lb_get,
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
- _session_mock,
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
- _session_mock,
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
- def test_amphora_post_vip_plug(self, mock_lb_get,
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=vip_subnet, vrrp_port=vrrp_port,
564
- additional_vip_data=[])
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
- _session_mock,
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
- _session_mock,
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=vip_subnet, vrrp_port=vrrp_port,
632
- additional_vip_data=[])
656
+ vrrp_port, vip_subnet, additional_vip_data=[])
633
657
 
634
- call_kwargs = mock_driver.post_vip_plug.call_args[1]
635
- vip_subnet_arg = call_kwargs.get(constants.VIP_SUBNET)
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=vip_subnet, vrrp_port=vrrp_port,
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 = call_kwargs.get(constants.VIP_SUBNET)
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=vip_subnet, vrrp_port=vrrp_port,
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,