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
@@ -92,6 +92,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
92
92
  FAKE_UUID_1 = uuidutils.generate_uuid()
93
93
  FAKE_UUID_2 = uuidutils.generate_uuid()
94
94
  FAKE_UUID_3 = uuidutils.generate_uuid()
95
+ FAKE_UUID_4 = uuidutils.generate_uuid()
95
96
  FAKE_IP = '192.0.2.44'
96
97
 
97
98
  def setUp(self):
@@ -103,7 +104,8 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
103
104
  provisioning_status=constants.ACTIVE,
104
105
  operating_status=constants.ONLINE, enabled=True)
105
106
  self.listener = self.repos.listener.create(
106
- self.session, protocol=constants.PROTOCOL_HTTP, protocol_port=80,
107
+ self.session, id=self.FAKE_UUID_4,
108
+ protocol=constants.PROTOCOL_HTTP, protocol_port=80,
107
109
  enabled=True, provisioning_status=constants.ACTIVE,
108
110
  operating_status=constants.ONLINE,
109
111
  load_balancer_id=self.load_balancer.id)
@@ -112,6 +114,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
112
114
  load_balancer_id=self.load_balancer.id,
113
115
  compute_id=self.FAKE_UUID_3, status=constants.ACTIVE,
114
116
  vrrp_ip=self.FAKE_IP, lb_network_ip=self.FAKE_IP)
117
+ self.session.commit()
115
118
 
116
119
  def test_all_repos_has_correct_repos(self):
117
120
  repo_attr_names = ('load_balancer', 'vip', 'health_monitor',
@@ -163,6 +166,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
163
166
  'ip_address': '192.0.2.2'}]
164
167
  lb_dm = self.repos.create_load_balancer_and_vip(self.session, lb, vip,
165
168
  additional_vips)
169
+ self.session.commit()
166
170
  lb_dm_dict = lb_dm.to_dict()
167
171
  del lb_dm_dict['vip']
168
172
  del lb_dm_dict['additional_vips']
@@ -193,6 +197,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
193
197
  'alpn_protocols': None}
194
198
  pool_dm = self.repos.create_pool_on_load_balancer(
195
199
  self.session, pool, listener_id=self.listener.id)
200
+ self.session.commit()
196
201
  pool_dm_dict = pool_dm.to_dict()
197
202
  # These are not defined in the sample pool dict but will
198
203
  # be in the live data.
@@ -234,6 +239,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
234
239
  pool.update({'session_persistence': sp})
235
240
  pool_dm = self.repos.create_pool_on_load_balancer(
236
241
  self.session, pool, listener_id=self.listener.id)
242
+ self.session.commit()
237
243
  pool_dm_dict = pool_dm.to_dict()
238
244
  # These are not defined in the sample pool dict but will
239
245
  # be in the live data.
@@ -277,6 +283,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
277
283
  update_pool = {'protocol': constants.PROTOCOL_TCP, 'name': 'up_pool'}
278
284
  new_pool_dm = self.repos.update_pool_and_sp(
279
285
  self.session, pool_dm.id, update_pool)
286
+ self.session.commit()
280
287
  pool_dm_dict = new_pool_dm.to_dict()
281
288
  # These are not defined in the sample pool dict but will
282
289
  # be in the live data.
@@ -322,6 +329,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
322
329
  update_pool.update({'session_persistence': update_sp})
323
330
  new_pool_dm = self.repos.update_pool_and_sp(
324
331
  self.session, pool_dm.id, update_pool)
332
+ self.session.commit()
325
333
  pool_dm_dict = new_pool_dm.to_dict()
326
334
  # These are not defined in the sample pool dict but will
327
335
  # be in the live data.
@@ -354,6 +362,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
354
362
  'id': uuidutils.generate_uuid()}
355
363
  pool_dm = self.repos.create_pool_on_load_balancer(
356
364
  self.session, pool, listener_id=self.listener.id)
365
+ self.session.commit()
357
366
  update_pool = {'protocol': constants.PROTOCOL_TCP, 'name': 'up_pool'}
358
367
  update_sp = {'type': constants.SESSION_PERSISTENCE_HTTP_COOKIE,
359
368
  'cookie_name': 'monster_cookie',
@@ -362,6 +371,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
362
371
  update_pool.update({'session_persistence': update_sp})
363
372
  new_pool_dm = self.repos.update_pool_and_sp(
364
373
  self.session, pool_dm.id, update_pool)
374
+ self.session.commit()
365
375
  sp_dm_dict = new_pool_dm.session_persistence.to_dict()
366
376
  del sp_dm_dict['pool']
367
377
  update_sp['pool_id'] = pool_dm.id
@@ -382,6 +392,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
382
392
  'session_persistence': None}
383
393
  new_pool_dm = self.repos.update_pool_and_sp(
384
394
  self.session, pool_dm.id, update_pool)
395
+ self.session.commit()
385
396
  self.assertIsNone(new_pool_dm.session_persistence)
386
397
 
387
398
  def test_update_pool_with_existing_sp_delete_sp(self):
@@ -398,10 +409,12 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
398
409
  pool.update({'session_persistence': sp})
399
410
  pool_dm = self.repos.create_pool_on_load_balancer(
400
411
  self.session, pool, listener_id=self.listener.id)
412
+ self.session.commit()
401
413
  update_pool = {'protocol': constants.PROTOCOL_TCP, 'name': 'up_pool',
402
414
  'session_persistence': {}}
403
415
  new_pool_dm = self.repos.update_pool_and_sp(
404
416
  self.session, pool_dm.id, update_pool)
417
+ self.session.commit()
405
418
  self.assertIsNone(new_pool_dm.session_persistence)
406
419
 
407
420
  def test_update_pool_with_cert(self):
@@ -420,6 +433,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
420
433
  update_pool = {'tls_certificate_id': uuidutils.generate_uuid()}
421
434
  new_pool_dm = self.repos.update_pool_and_sp(
422
435
  self.session, pool_dm.id, update_pool)
436
+ self.session.commit()
423
437
  pool_dm_dict = new_pool_dm.to_dict()
424
438
  # These are not defined in the sample pool dict but will
425
439
  # be in the live data.
@@ -460,11 +474,12 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
460
474
  'id': uuidutils.generate_uuid()}
461
475
 
462
476
  session = db_api.get_session()
463
- lock_session = db_api.get_session(autocommit=False)
477
+ lock_session = db_api.get_session()
464
478
  lbs = lock_session.query(db_models.LoadBalancer).filter_by(
465
479
  project_id=project_id).all()
466
480
  self.assertEqual(0, len(lbs)) # Initially: 0
467
481
  self.repos.create_load_balancer_and_vip(lock_session, lb, vip)
482
+ self.session.commit()
468
483
  lbs = lock_session.query(db_models.LoadBalancer).filter_by(
469
484
  project_id=project_id).all()
470
485
  self.assertEqual(1, len(lbs)) # After create: 1
@@ -473,6 +488,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
473
488
  project_id=project_id).all()
474
489
  self.assertEqual(0, len(lbs)) # After rollback: 0
475
490
  self.repos.create_load_balancer_and_vip(lock_session, lb, vip)
491
+ self.session.commit()
476
492
  lbs = lock_session.query(db_models.LoadBalancer).filter_by(
477
493
  project_id=project_id).all()
478
494
  self.assertEqual(1, len(lbs)) # After create: 1
@@ -484,6 +500,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
484
500
  session.query(db_models.LoadBalancer).filter(
485
501
  db_models.LoadBalancer.project_id == project_id).count()
486
502
  self.repos.create_load_balancer_and_vip(lock_session, lb, vip)
503
+ self.session.commit()
487
504
  lbs = lock_session.query(db_models.LoadBalancer).filter_by(
488
505
  project_id=project_id).all()
489
506
  self.assertEqual(1, len(lbs)) # After create: 1
@@ -510,6 +527,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
510
527
  self.repos.check_quota_met,
511
528
  self.session, self.session,
512
529
  data_models.LoadBalancer, None)
530
+ self.session.commit()
513
531
 
514
532
  # Test non-quota object
515
533
  project_id = uuidutils.generate_uuid()
@@ -518,6 +536,8 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
518
536
  self.session,
519
537
  data_models.SessionPersistence,
520
538
  project_id))
539
+ self.session.commit()
540
+
521
541
  # Test DB deadlock case
522
542
  project_id = uuidutils.generate_uuid()
523
543
  mock_session = mock.MagicMock()
@@ -527,6 +547,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
527
547
  self.repos.check_quota_met,
528
548
  self.session, mock_session,
529
549
  data_models.LoadBalancer, project_id)
550
+ self.session.commit()
530
551
 
531
552
  # ### Test load balancer quota
532
553
  # Test with no pre-existing quota record default 0
@@ -536,6 +557,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
536
557
  self.session,
537
558
  data_models.LoadBalancer,
538
559
  project_id))
560
+ self.session.commit()
539
561
  self.assertIsNone(self.repos.quotas.get(
540
562
  self.session, project_id=project_id).in_use_load_balancer)
541
563
 
@@ -546,6 +568,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
546
568
  self.session,
547
569
  data_models.LoadBalancer,
548
570
  project_id))
571
+ self.session.commit()
549
572
  self.assertEqual(1, self.repos.quotas.get(
550
573
  self.session, project_id=project_id).in_use_load_balancer)
551
574
  # Test above project is now at quota
@@ -553,6 +576,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
553
576
  self.session,
554
577
  data_models.LoadBalancer,
555
578
  project_id))
579
+ self.session.commit()
556
580
  self.assertEqual(1, self.repos.quotas.get(
557
581
  self.session, project_id=project_id).in_use_load_balancer)
558
582
 
@@ -564,6 +588,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
564
588
  self.session,
565
589
  data_models.LoadBalancer,
566
590
  project_id))
591
+ self.session.commit()
567
592
  self.assertEqual(1, self.repos.quotas.get(
568
593
  self.session, project_id=project_id).in_use_load_balancer)
569
594
  # Test above project adding another load balancer
@@ -584,10 +609,12 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
584
609
  provisioning_status=constants.ACTIVE,
585
610
  operating_status=constants.ONLINE,
586
611
  enabled=True)
612
+ self.session.commit()
587
613
  self.assertTrue(self.repos.check_quota_met(self.session,
588
614
  self.session,
589
615
  data_models.LoadBalancer,
590
616
  project_id))
617
+ self.session.commit()
591
618
 
592
619
  # Test upgrade case with pre-quota deleted load balancers
593
620
  project_id = uuidutils.generate_uuid()
@@ -599,10 +626,12 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
599
626
  provisioning_status=constants.DELETED,
600
627
  operating_status=constants.ONLINE,
601
628
  enabled=True)
629
+ self.session.commit()
602
630
  self.assertFalse(self.repos.check_quota_met(self.session,
603
631
  self.session,
604
632
  data_models.LoadBalancer,
605
633
  project_id))
634
+ self.session.commit()
606
635
  self.assertEqual(1, self.repos.quotas.get(
607
636
  self.session, project_id=project_id).in_use_load_balancer)
608
637
 
@@ -611,20 +640,24 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
611
640
  conf.config(group='quotas', default_load_balancer_quota=10)
612
641
  quota = {'load_balancer': 0}
613
642
  self.repos.quotas.update(self.session, project_id, quota=quota)
643
+ self.session.commit()
614
644
  self.assertTrue(self.repos.check_quota_met(self.session,
615
645
  self.session,
616
646
  data_models.LoadBalancer,
617
647
  project_id))
648
+ self.session.commit()
618
649
 
619
650
  # Test pre-existing quota with quota of one
620
651
  project_id = uuidutils.generate_uuid()
621
652
  conf.config(group='quotas', default_load_balancer_quota=0)
622
653
  quota = {'load_balancer': 1}
623
654
  self.repos.quotas.update(self.session, project_id, quota=quota)
655
+ self.session.commit()
624
656
  self.assertFalse(self.repos.check_quota_met(self.session,
625
657
  self.session,
626
658
  data_models.LoadBalancer,
627
659
  project_id))
660
+ self.session.commit()
628
661
  self.assertEqual(1, self.repos.quotas.get(
629
662
  self.session, project_id=project_id).in_use_load_balancer)
630
663
  # Test above project is now at quota
@@ -632,6 +665,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
632
665
  self.session,
633
666
  data_models.LoadBalancer,
634
667
  project_id))
668
+ self.session.commit()
635
669
  self.assertEqual(1, self.repos.quotas.get(
636
670
  self.session, project_id=project_id).in_use_load_balancer)
637
671
 
@@ -640,10 +674,12 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
640
674
  conf.config(group='quotas', default_load_balancer_quota=0)
641
675
  quota = {'load_balancer': constants.QUOTA_UNLIMITED}
642
676
  self.repos.quotas.update(self.session, project_id, quota=quota)
677
+ self.session.commit()
643
678
  self.assertFalse(self.repos.check_quota_met(self.session,
644
679
  self.session,
645
680
  data_models.LoadBalancer,
646
681
  project_id))
682
+ self.session.commit()
647
683
  self.assertEqual(1, self.repos.quotas.get(
648
684
  self.session, project_id=project_id).in_use_load_balancer)
649
685
  # Test above project adding another load balancer
@@ -651,6 +687,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
651
687
  self.session,
652
688
  data_models.LoadBalancer,
653
689
  project_id))
690
+ self.session.commit()
654
691
  self.assertEqual(2, self.repos.quotas.get(
655
692
  self.session, project_id=project_id).in_use_load_balancer)
656
693
 
@@ -662,6 +699,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
662
699
  self.session,
663
700
  data_models.Listener,
664
701
  project_id))
702
+ self.session.commit()
665
703
  self.assertIsNone(self.repos.quotas.get(
666
704
  self.session, project_id=project_id).in_use_listener)
667
705
 
@@ -672,6 +710,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
672
710
  self.session,
673
711
  data_models.Listener,
674
712
  project_id))
713
+ self.session.commit()
675
714
  self.assertEqual(1, self.repos.quotas.get(
676
715
  self.session, project_id=project_id).in_use_listener)
677
716
  # Test above project is now at quota
@@ -679,6 +718,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
679
718
  self.session,
680
719
  data_models.Listener,
681
720
  project_id))
721
+ self.session.commit()
682
722
  self.assertEqual(1, self.repos.quotas.get(
683
723
  self.session, project_id=project_id).in_use_listener)
684
724
 
@@ -690,6 +730,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
690
730
  self.session,
691
731
  data_models.Listener,
692
732
  project_id))
733
+ self.session.commit()
693
734
  self.assertEqual(1, self.repos.quotas.get(
694
735
  self.session, project_id=project_id).in_use_listener)
695
736
  # Test above project adding another listener
@@ -697,6 +738,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
697
738
  self.session,
698
739
  data_models.Listener,
699
740
  project_id))
741
+ self.session.commit()
700
742
  self.assertEqual(2, self.repos.quotas.get(
701
743
  self.session, project_id=project_id).in_use_listener)
702
744
 
@@ -710,15 +752,19 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
710
752
  provisioning_status=constants.ACTIVE,
711
753
  operating_status=constants.ONLINE,
712
754
  enabled=True)
755
+ self.session.commit()
713
756
  self.repos.listener.create(
714
- self.session, protocol=constants.PROTOCOL_HTTP, protocol_port=80,
757
+ self.session, id=uuidutils.generate_uuid(),
758
+ protocol=constants.PROTOCOL_HTTP, protocol_port=80,
715
759
  enabled=True, provisioning_status=constants.ACTIVE,
716
760
  operating_status=constants.ONLINE, project_id=project_id,
717
761
  load_balancer_id=lb.id)
762
+ self.session.commit()
718
763
  self.assertTrue(self.repos.check_quota_met(self.session,
719
764
  self.session,
720
765
  data_models.Listener,
721
766
  project_id))
767
+ self.session.commit()
722
768
 
723
769
  # Test upgrade case with pre-quota deleted listener
724
770
  project_id = uuidutils.generate_uuid()
@@ -730,15 +776,19 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
730
776
  provisioning_status=constants.ACTIVE,
731
777
  operating_status=constants.ONLINE,
732
778
  enabled=True)
779
+ self.session.commit()
733
780
  self.repos.listener.create(
734
- self.session, protocol=constants.PROTOCOL_HTTP, protocol_port=80,
781
+ self.session, id=uuidutils.generate_uuid(),
782
+ protocol=constants.PROTOCOL_HTTP, protocol_port=80,
735
783
  enabled=True, provisioning_status=constants.DELETED,
736
784
  operating_status=constants.ONLINE, project_id=project_id,
737
785
  load_balancer_id=lb.id)
786
+ self.session.commit()
738
787
  self.assertFalse(self.repos.check_quota_met(self.session,
739
788
  self.session,
740
789
  data_models.Listener,
741
790
  project_id))
791
+ self.session.commit()
742
792
  self.assertEqual(1, self.repos.quotas.get(
743
793
  self.session, project_id=project_id).in_use_listener)
744
794
 
@@ -747,20 +797,24 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
747
797
  conf.config(group='quotas', default_listener_quota=10)
748
798
  quota = {'listener': 0}
749
799
  self.repos.quotas.update(self.session, project_id, quota=quota)
800
+ self.session.commit()
750
801
  self.assertTrue(self.repos.check_quota_met(self.session,
751
802
  self.session,
752
803
  data_models.Listener,
753
804
  project_id))
805
+ self.session.commit()
754
806
 
755
807
  # Test pre-existing quota with quota of one
756
808
  project_id = uuidutils.generate_uuid()
757
809
  conf.config(group='quotas', default_listener_quota=0)
758
810
  quota = {'listener': 1}
759
811
  self.repos.quotas.update(self.session, project_id, quota=quota)
812
+ self.session.commit()
760
813
  self.assertFalse(self.repos.check_quota_met(self.session,
761
814
  self.session,
762
815
  data_models.Listener,
763
816
  project_id))
817
+ self.session.commit()
764
818
  self.assertEqual(1, self.repos.quotas.get(
765
819
  self.session, project_id=project_id).in_use_listener)
766
820
  # Test above project is now at quota
@@ -768,6 +822,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
768
822
  self.session,
769
823
  data_models.Listener,
770
824
  project_id))
825
+ self.session.commit()
771
826
  self.assertEqual(1, self.repos.quotas.get(
772
827
  self.session, project_id=project_id).in_use_listener)
773
828
 
@@ -776,10 +831,12 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
776
831
  conf.config(group='quotas', default_listener_quota=0)
777
832
  quota = {'listener': constants.QUOTA_UNLIMITED}
778
833
  self.repos.quotas.update(self.session, project_id, quota=quota)
834
+ self.session.commit()
779
835
  self.assertFalse(self.repos.check_quota_met(self.session,
780
836
  self.session,
781
837
  data_models.Listener,
782
838
  project_id))
839
+ self.session.commit()
783
840
  self.assertEqual(1, self.repos.quotas.get(
784
841
  self.session, project_id=project_id).in_use_listener)
785
842
  # Test above project adding another listener
@@ -787,6 +844,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
787
844
  self.session,
788
845
  data_models.Listener,
789
846
  project_id))
847
+ self.session.commit()
790
848
  self.assertEqual(2, self.repos.quotas.get(
791
849
  self.session, project_id=project_id).in_use_listener)
792
850
 
@@ -798,6 +856,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
798
856
  self.session,
799
857
  data_models.Pool,
800
858
  project_id))
859
+ self.session.commit()
801
860
  self.assertIsNone(self.repos.quotas.get(
802
861
  self.session, project_id=project_id).in_use_pool)
803
862
 
@@ -808,6 +867,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
808
867
  self.session,
809
868
  data_models.Pool,
810
869
  project_id))
870
+ self.session.commit()
811
871
  self.assertEqual(1, self.repos.quotas.get(
812
872
  self.session, project_id=project_id).in_use_pool)
813
873
  # Test above project is now at quota
@@ -815,6 +875,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
815
875
  self.session,
816
876
  data_models.Pool,
817
877
  project_id))
878
+ self.session.commit()
818
879
  self.assertEqual(1, self.repos.quotas.get(
819
880
  self.session, project_id=project_id).in_use_pool)
820
881
 
@@ -826,6 +887,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
826
887
  self.session,
827
888
  data_models.Pool,
828
889
  project_id))
890
+ self.session.commit()
829
891
  self.assertEqual(1, self.repos.quotas.get(
830
892
  self.session, project_id=project_id).in_use_pool)
831
893
  # Test above project adding another pool
@@ -833,6 +895,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
833
895
  self.session,
834
896
  data_models.Pool,
835
897
  project_id))
898
+ self.session.commit()
836
899
  self.assertEqual(2, self.repos.quotas.get(
837
900
  self.session, project_id=project_id).in_use_pool)
838
901
 
@@ -846,6 +909,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
846
909
  provisioning_status=constants.ACTIVE,
847
910
  operating_status=constants.ONLINE,
848
911
  enabled=True)
912
+ self.session.commit()
849
913
  self.repos.pool.create(
850
914
  self.session, id=uuidutils.generate_uuid(),
851
915
  project_id=project_id, name="pool1",
@@ -854,10 +918,12 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
854
918
  provisioning_status=constants.ACTIVE,
855
919
  operating_status=constants.ONLINE,
856
920
  enabled=True, load_balancer_id=lb.id)
921
+ self.session.commit()
857
922
  self.assertTrue(self.repos.check_quota_met(self.session,
858
923
  self.session,
859
924
  data_models.Pool,
860
925
  project_id))
926
+ self.session.commit()
861
927
 
862
928
  # Test upgrade case with pre-quota deleted pool
863
929
  project_id = uuidutils.generate_uuid()
@@ -869,6 +935,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
869
935
  provisioning_status=constants.ACTIVE,
870
936
  operating_status=constants.ONLINE,
871
937
  enabled=True)
938
+ self.session.commit()
872
939
  self.repos.pool.create(
873
940
  self.session, id=uuidutils.generate_uuid(),
874
941
  project_id=project_id, name="pool1",
@@ -877,10 +944,12 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
877
944
  provisioning_status=constants.DELETED,
878
945
  operating_status=constants.ONLINE,
879
946
  enabled=True, load_balancer_id=lb.id)
947
+ self.session.commit()
880
948
  self.assertFalse(self.repos.check_quota_met(self.session,
881
949
  self.session,
882
950
  data_models.Pool,
883
951
  project_id))
952
+ self.session.commit()
884
953
  self.assertEqual(1, self.repos.quotas.get(
885
954
  self.session, project_id=project_id).in_use_pool)
886
955
 
@@ -893,6 +962,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
893
962
  self.session,
894
963
  data_models.Pool,
895
964
  project_id))
965
+ self.session.commit()
896
966
 
897
967
  # Test pre-existing quota with quota of one
898
968
  project_id = uuidutils.generate_uuid()
@@ -903,6 +973,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
903
973
  self.session,
904
974
  data_models.Pool,
905
975
  project_id))
976
+ self.session.commit()
906
977
  self.assertEqual(1, self.repos.quotas.get(
907
978
  self.session, project_id=project_id).in_use_pool)
908
979
  # Test above project is now at quota
@@ -910,6 +981,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
910
981
  self.session,
911
982
  data_models.Pool,
912
983
  project_id))
984
+ self.session.commit()
913
985
  self.assertEqual(1, self.repos.quotas.get(
914
986
  self.session, project_id=project_id).in_use_pool)
915
987
 
@@ -918,10 +990,12 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
918
990
  conf.config(group='quotas', default_pool_quota=0)
919
991
  quota = {'pool': constants.QUOTA_UNLIMITED}
920
992
  self.repos.quotas.update(self.session, project_id, quota=quota)
993
+ self.session.commit()
921
994
  self.assertFalse(self.repos.check_quota_met(self.session,
922
995
  self.session,
923
996
  data_models.Pool,
924
997
  project_id))
998
+ self.session.commit()
925
999
  self.assertEqual(1, self.repos.quotas.get(
926
1000
  self.session, project_id=project_id).in_use_pool)
927
1001
  # Test above project adding another pool
@@ -929,6 +1003,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
929
1003
  self.session,
930
1004
  data_models.Pool,
931
1005
  project_id))
1006
+ self.session.commit()
932
1007
  self.assertEqual(2, self.repos.quotas.get(
933
1008
  self.session, project_id=project_id).in_use_pool)
934
1009
 
@@ -940,6 +1015,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
940
1015
  self.session,
941
1016
  data_models.HealthMonitor,
942
1017
  project_id))
1018
+ self.session.commit()
943
1019
  self.assertIsNone(self.repos.quotas.get(
944
1020
  self.session, project_id=project_id).in_use_health_monitor)
945
1021
 
@@ -950,6 +1026,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
950
1026
  self.session,
951
1027
  data_models.HealthMonitor,
952
1028
  project_id))
1029
+ self.session.commit()
953
1030
  self.assertEqual(1, self.repos.quotas.get(
954
1031
  self.session, project_id=project_id).in_use_health_monitor)
955
1032
  # Test above project is now at quota
@@ -957,6 +1034,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
957
1034
  self.session,
958
1035
  data_models.HealthMonitor,
959
1036
  project_id))
1037
+ self.session.commit()
960
1038
  self.assertEqual(1, self.repos.quotas.get(
961
1039
  self.session, project_id=project_id).in_use_health_monitor)
962
1040
 
@@ -968,6 +1046,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
968
1046
  self.session,
969
1047
  data_models.HealthMonitor,
970
1048
  project_id))
1049
+ self.session.commit()
971
1050
  self.assertEqual(1, self.repos.quotas.get(
972
1051
  self.session, project_id=project_id).in_use_health_monitor)
973
1052
  # Test above project adding another health monitor
@@ -975,6 +1054,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
975
1054
  self.session,
976
1055
  data_models.HealthMonitor,
977
1056
  project_id))
1057
+ self.session.commit()
978
1058
  self.assertEqual(2, self.repos.quotas.get(
979
1059
  self.session, project_id=project_id).in_use_health_monitor)
980
1060
 
@@ -988,6 +1068,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
988
1068
  provisioning_status=constants.ACTIVE,
989
1069
  operating_status=constants.ONLINE,
990
1070
  enabled=True)
1071
+ self.session.commit()
991
1072
  pool = self.repos.pool.create(
992
1073
  self.session, id=uuidutils.generate_uuid(),
993
1074
  project_id=project_id, name="pool1",
@@ -996,6 +1077,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
996
1077
  provisioning_status=constants.ACTIVE,
997
1078
  operating_status=constants.ONLINE,
998
1079
  enabled=True, load_balancer_id=lb.id)
1080
+ self.session.commit()
999
1081
  self.repos.health_monitor.create(
1000
1082
  self.session, project_id=project_id,
1001
1083
  name="health_mon1", type=constants.HEALTH_MONITOR_HTTP,
@@ -1003,10 +1085,12 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1003
1085
  provisioning_status=constants.ACTIVE,
1004
1086
  operating_status=constants.ONLINE,
1005
1087
  enabled=True, pool_id=pool.id)
1088
+ self.session.commit()
1006
1089
  self.assertTrue(self.repos.check_quota_met(self.session,
1007
1090
  self.session,
1008
1091
  data_models.HealthMonitor,
1009
1092
  project_id))
1093
+ self.session.commit()
1010
1094
 
1011
1095
  # Test upgrade case with pre-quota deleted health monitor
1012
1096
  project_id = uuidutils.generate_uuid()
@@ -1018,6 +1102,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1018
1102
  provisioning_status=constants.ACTIVE,
1019
1103
  operating_status=constants.ONLINE,
1020
1104
  enabled=True)
1105
+ self.session.commit()
1021
1106
  pool = self.repos.pool.create(
1022
1107
  self.session, id=uuidutils.generate_uuid(),
1023
1108
  project_id=project_id, name="pool1",
@@ -1026,6 +1111,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1026
1111
  provisioning_status=constants.ACTIVE,
1027
1112
  operating_status=constants.ONLINE,
1028
1113
  enabled=True, load_balancer_id=lb.id)
1114
+ self.session.commit()
1029
1115
  self.repos.health_monitor.create(
1030
1116
  self.session, project_id=project_id,
1031
1117
  name="health_mon1", type=constants.HEALTH_MONITOR_HTTP,
@@ -1033,10 +1119,12 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1033
1119
  provisioning_status=constants.DELETED,
1034
1120
  operating_status=constants.OFFLINE,
1035
1121
  enabled=True, pool_id=pool.id)
1122
+ self.session.commit()
1036
1123
  self.assertFalse(self.repos.check_quota_met(self.session,
1037
1124
  self.session,
1038
1125
  data_models.HealthMonitor,
1039
1126
  project_id))
1127
+ self.session.commit()
1040
1128
  self.assertEqual(1, self.repos.quotas.get(
1041
1129
  self.session, project_id=project_id).in_use_health_monitor)
1042
1130
 
@@ -1045,10 +1133,12 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1045
1133
  conf.config(group='quotas', default_health_monitor_quota=10)
1046
1134
  quota = {'health_monitor': 0}
1047
1135
  self.repos.quotas.update(self.session, project_id, quota=quota)
1136
+ self.session.commit()
1048
1137
  self.assertTrue(self.repos.check_quota_met(self.session,
1049
1138
  self.session,
1050
1139
  data_models.HealthMonitor,
1051
1140
  project_id))
1141
+ self.session.commit()
1052
1142
 
1053
1143
  # Test pre-existing quota with quota of one
1054
1144
  project_id = uuidutils.generate_uuid()
@@ -1059,6 +1149,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1059
1149
  self.session,
1060
1150
  data_models.HealthMonitor,
1061
1151
  project_id))
1152
+ self.session.commit()
1062
1153
  self.assertEqual(1, self.repos.quotas.get(
1063
1154
  self.session, project_id=project_id).in_use_health_monitor)
1064
1155
  # Test above project is now at quota
@@ -1066,6 +1157,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1066
1157
  self.session,
1067
1158
  data_models.HealthMonitor,
1068
1159
  project_id))
1160
+ self.session.commit()
1069
1161
  self.assertEqual(1, self.repos.quotas.get(
1070
1162
  self.session, project_id=project_id).in_use_health_monitor)
1071
1163
 
@@ -1074,10 +1166,12 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1074
1166
  conf.config(group='quotas', default_health_monitor_quota=0)
1075
1167
  quota = {'health_monitor': constants.QUOTA_UNLIMITED}
1076
1168
  self.repos.quotas.update(self.session, project_id, quota=quota)
1169
+ self.session.commit()
1077
1170
  self.assertFalse(self.repos.check_quota_met(self.session,
1078
1171
  self.session,
1079
1172
  data_models.HealthMonitor,
1080
1173
  project_id))
1174
+ self.session.commit()
1081
1175
  self.assertEqual(1, self.repos.quotas.get(
1082
1176
  self.session, project_id=project_id).in_use_health_monitor)
1083
1177
  # Test above project adding another health monitor
@@ -1085,6 +1179,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1085
1179
  self.session,
1086
1180
  data_models.HealthMonitor,
1087
1181
  project_id))
1182
+ self.session.commit()
1088
1183
  self.assertEqual(2, self.repos.quotas.get(
1089
1184
  self.session, project_id=project_id).in_use_health_monitor)
1090
1185
 
@@ -1096,6 +1191,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1096
1191
  self.session,
1097
1192
  data_models.Member,
1098
1193
  project_id))
1194
+ self.session.commit()
1099
1195
  self.assertIsNone(self.repos.quotas.get(
1100
1196
  self.session, project_id=project_id).in_use_member)
1101
1197
 
@@ -1106,6 +1202,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1106
1202
  self.session,
1107
1203
  data_models.Member,
1108
1204
  project_id))
1205
+ self.session.commit()
1109
1206
  self.assertEqual(1, self.repos.quotas.get(
1110
1207
  self.session, project_id=project_id).in_use_member)
1111
1208
  # Test above project is now at quota
@@ -1113,6 +1210,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1113
1210
  self.session,
1114
1211
  data_models.Member,
1115
1212
  project_id))
1213
+ self.session.commit()
1116
1214
  self.assertEqual(1, self.repos.quotas.get(
1117
1215
  self.session, project_id=project_id).in_use_member)
1118
1216
 
@@ -1124,6 +1222,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1124
1222
  self.session,
1125
1223
  data_models.Member,
1126
1224
  project_id))
1225
+ self.session.commit()
1127
1226
  self.assertEqual(1, self.repos.quotas.get(
1128
1227
  self.session, project_id=project_id).in_use_member)
1129
1228
  # Test above project adding another member
@@ -1131,6 +1230,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1131
1230
  self.session,
1132
1231
  data_models.Member,
1133
1232
  project_id))
1233
+ self.session.commit()
1134
1234
  self.assertEqual(2, self.repos.quotas.get(
1135
1235
  self.session, project_id=project_id).in_use_member)
1136
1236
 
@@ -1144,6 +1244,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1144
1244
  provisioning_status=constants.ACTIVE,
1145
1245
  operating_status=constants.ONLINE,
1146
1246
  enabled=True)
1247
+ self.session.commit()
1147
1248
  pool = self.repos.pool.create(
1148
1249
  self.session, id=uuidutils.generate_uuid(),
1149
1250
  project_id=project_id, name="pool1",
@@ -1152,16 +1253,20 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1152
1253
  provisioning_status=constants.ACTIVE,
1153
1254
  operating_status=constants.ONLINE,
1154
1255
  enabled=True, load_balancer_id=lb.id)
1256
+ self.session.commit()
1155
1257
  self.repos.member.create(
1156
- self.session, project_id=project_id,
1258
+ self.session, id=uuidutils.generate_uuid(),
1259
+ project_id=project_id,
1157
1260
  ip_address='192.0.2.1', protocol_port=80,
1158
1261
  provisioning_status=constants.ACTIVE,
1159
1262
  operating_status=constants.ONLINE,
1160
1263
  enabled=True, pool_id=pool.id, backup=False)
1264
+ self.session.commit()
1161
1265
  self.assertTrue(self.repos.check_quota_met(self.session,
1162
1266
  self.session,
1163
1267
  data_models.Member,
1164
1268
  project_id))
1269
+ self.session.commit()
1165
1270
 
1166
1271
  # Test upgrade case with pre-quota deleted member
1167
1272
  project_id = uuidutils.generate_uuid()
@@ -1173,6 +1278,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1173
1278
  provisioning_status=constants.ACTIVE,
1174
1279
  operating_status=constants.ONLINE,
1175
1280
  enabled=True)
1281
+ self.session.commit()
1176
1282
  pool = self.repos.pool.create(
1177
1283
  self.session, id=uuidutils.generate_uuid(),
1178
1284
  project_id=project_id, name="pool1",
@@ -1181,16 +1287,20 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1181
1287
  provisioning_status=constants.ACTIVE,
1182
1288
  operating_status=constants.ONLINE,
1183
1289
  enabled=True, load_balancer_id=lb.id)
1290
+ self.session.commit()
1184
1291
  self.repos.member.create(
1185
- self.session, project_id=project_id,
1292
+ self.session, id=uuidutils.generate_uuid(),
1293
+ project_id=project_id,
1186
1294
  ip_address='192.0.2.1', protocol_port=80,
1187
1295
  provisioning_status=constants.DELETED,
1188
1296
  operating_status=constants.ONLINE,
1189
1297
  enabled=True, pool_id=pool.id, backup=False)
1298
+ self.session.commit()
1190
1299
  self.assertFalse(self.repos.check_quota_met(self.session,
1191
1300
  self.session,
1192
1301
  data_models.Member,
1193
1302
  project_id))
1303
+ self.session.commit()
1194
1304
  self.assertEqual(1, self.repos.quotas.get(
1195
1305
  self.session, project_id=project_id).in_use_member)
1196
1306
 
@@ -1199,20 +1309,24 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1199
1309
  conf.config(group='quotas', default_member_quota=10)
1200
1310
  quota = {'member': 0}
1201
1311
  self.repos.quotas.update(self.session, project_id, quota=quota)
1312
+ self.session.commit()
1202
1313
  self.assertTrue(self.repos.check_quota_met(self.session,
1203
1314
  self.session,
1204
1315
  data_models.Member,
1205
1316
  project_id))
1317
+ self.session.commit()
1206
1318
 
1207
1319
  # Test pre-existing quota with quota of one
1208
1320
  project_id = uuidutils.generate_uuid()
1209
1321
  conf.config(group='quotas', default_member_quota=0)
1210
1322
  quota = {'member': 1}
1211
1323
  self.repos.quotas.update(self.session, project_id, quota=quota)
1324
+ self.session.commit()
1212
1325
  self.assertFalse(self.repos.check_quota_met(self.session,
1213
1326
  self.session,
1214
1327
  data_models.Member,
1215
1328
  project_id))
1329
+ self.session.commit()
1216
1330
  self.assertEqual(1, self.repos.quotas.get(
1217
1331
  self.session, project_id=project_id).in_use_member)
1218
1332
  # Test above project is now at quota
@@ -1220,6 +1334,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1220
1334
  self.session,
1221
1335
  data_models.Member,
1222
1336
  project_id))
1337
+ self.session.commit()
1223
1338
  self.assertEqual(1, self.repos.quotas.get(
1224
1339
  self.session, project_id=project_id).in_use_member)
1225
1340
 
@@ -1228,10 +1343,12 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1228
1343
  conf.config(group='quotas', default_member_quota=0)
1229
1344
  quota = {'member': constants.QUOTA_UNLIMITED}
1230
1345
  self.repos.quotas.update(self.session, project_id, quota=quota)
1346
+ self.session.commit()
1231
1347
  self.assertFalse(self.repos.check_quota_met(self.session,
1232
1348
  self.session,
1233
1349
  data_models.Member,
1234
1350
  project_id))
1351
+ self.session.commit()
1235
1352
  self.assertEqual(1, self.repos.quotas.get(
1236
1353
  self.session, project_id=project_id).in_use_member)
1237
1354
  # Test above project adding another member
@@ -1239,6 +1356,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1239
1356
  self.session,
1240
1357
  data_models.Member,
1241
1358
  project_id))
1359
+ self.session.commit()
1242
1360
  self.assertEqual(2, self.repos.quotas.get(
1243
1361
  self.session, project_id=project_id).in_use_member)
1244
1362
 
@@ -1250,6 +1368,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1250
1368
  self.session,
1251
1369
  data_models.L7Policy,
1252
1370
  project_id))
1371
+ self.session.commit()
1253
1372
  self.assertIsNone(self.repos.quotas.get(
1254
1373
  self.session, project_id=project_id).in_use_l7policy)
1255
1374
 
@@ -1260,6 +1379,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1260
1379
  self.session,
1261
1380
  data_models.L7Policy,
1262
1381
  project_id))
1382
+ self.session.commit()
1263
1383
  self.assertEqual(1, self.repos.quotas.get(
1264
1384
  self.session, project_id=project_id).in_use_l7policy)
1265
1385
  # Test above project is now at quota
@@ -1267,6 +1387,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1267
1387
  self.session,
1268
1388
  data_models.L7Policy,
1269
1389
  project_id))
1390
+ self.session.commit()
1270
1391
  self.assertEqual(1, self.repos.quotas.get(
1271
1392
  self.session, project_id=project_id).in_use_l7policy)
1272
1393
 
@@ -1278,6 +1399,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1278
1399
  self.session,
1279
1400
  data_models.L7Policy,
1280
1401
  project_id))
1402
+ self.session.commit()
1281
1403
  self.assertEqual(1, self.repos.quotas.get(
1282
1404
  self.session, project_id=project_id).in_use_l7policy)
1283
1405
  # Test above project adding another l7policy
@@ -1285,6 +1407,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1285
1407
  self.session,
1286
1408
  data_models.L7Policy,
1287
1409
  project_id))
1410
+ self.session.commit()
1288
1411
  self.assertEqual(2, self.repos.quotas.get(
1289
1412
  self.session, project_id=project_id).in_use_l7policy)
1290
1413
 
@@ -1298,21 +1421,26 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1298
1421
  provisioning_status=constants.ACTIVE,
1299
1422
  operating_status=constants.ONLINE,
1300
1423
  enabled=True)
1424
+ self.session.commit()
1301
1425
  listener = self.repos.listener.create(
1302
- self.session, protocol=constants.PROTOCOL_HTTP, protocol_port=80,
1426
+ self.session, id=uuidutils.generate_uuid(),
1427
+ protocol=constants.PROTOCOL_HTTP, protocol_port=80,
1303
1428
  enabled=True, provisioning_status=constants.ACTIVE,
1304
1429
  operating_status=constants.ONLINE, project_id=project_id,
1305
1430
  load_balancer_id=lb.id)
1431
+ self.session.commit()
1306
1432
  self.repos.l7policy.create(
1307
1433
  self.session, name='l7policy', enabled=True, position=1,
1308
1434
  action=constants.L7POLICY_ACTION_REJECT,
1309
1435
  provisioning_status=constants.ACTIVE, listener_id=listener.id,
1310
1436
  operating_status=constants.ONLINE, project_id=project_id,
1311
1437
  id=uuidutils.generate_uuid())
1438
+ self.session.commit()
1312
1439
  self.assertTrue(self.repos.check_quota_met(self.session,
1313
1440
  self.session,
1314
1441
  data_models.L7Policy,
1315
1442
  project_id))
1443
+ self.session.commit()
1316
1444
 
1317
1445
  # Test upgrade case with pre-quota deleted l7policy
1318
1446
  project_id = uuidutils.generate_uuid()
@@ -1324,21 +1452,26 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1324
1452
  provisioning_status=constants.ACTIVE,
1325
1453
  operating_status=constants.ONLINE,
1326
1454
  enabled=True)
1455
+ self.session.commit()
1327
1456
  listener = self.repos.listener.create(
1328
- self.session, protocol=constants.PROTOCOL_HTTP, protocol_port=80,
1457
+ self.session, id=uuidutils.generate_uuid(),
1458
+ protocol=constants.PROTOCOL_HTTP, protocol_port=80,
1329
1459
  enabled=True, provisioning_status=constants.ACTIVE,
1330
1460
  operating_status=constants.ONLINE, project_id=project_id,
1331
1461
  load_balancer_id=lb.id)
1462
+ self.session.commit()
1332
1463
  self.repos.l7policy.create(
1333
1464
  self.session, name='l7policy', enabled=True, position=1,
1334
1465
  action=constants.L7POLICY_ACTION_REJECT,
1335
1466
  provisioning_status=constants.DELETED, listener_id=listener.id,
1336
1467
  operating_status=constants.ONLINE, project_id=project_id,
1337
1468
  id=uuidutils.generate_uuid())
1469
+ self.session.commit()
1338
1470
  self.assertFalse(self.repos.check_quota_met(self.session,
1339
1471
  self.session,
1340
1472
  data_models.L7Policy,
1341
1473
  project_id))
1474
+ self.session.commit()
1342
1475
  self.assertEqual(1, self.repos.quotas.get(
1343
1476
  self.session, project_id=project_id).in_use_l7policy)
1344
1477
 
@@ -1347,20 +1480,24 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1347
1480
  conf.config(group='quotas', default_l7policy_quota=10)
1348
1481
  quota = {'l7policy': 0}
1349
1482
  self.repos.quotas.update(self.session, project_id, quota=quota)
1483
+ self.session.commit()
1350
1484
  self.assertTrue(self.repos.check_quota_met(self.session,
1351
1485
  self.session,
1352
1486
  data_models.L7Policy,
1353
1487
  project_id))
1488
+ self.session.commit()
1354
1489
 
1355
1490
  # Test pre-existing quota with quota of one
1356
1491
  project_id = uuidutils.generate_uuid()
1357
1492
  conf.config(group='quotas', default_l7policy_quota=0)
1358
1493
  quota = {'l7policy': 1}
1359
1494
  self.repos.quotas.update(self.session, project_id, quota=quota)
1495
+ self.session.commit()
1360
1496
  self.assertFalse(self.repos.check_quota_met(self.session,
1361
1497
  self.session,
1362
1498
  data_models.L7Policy,
1363
1499
  project_id))
1500
+ self.session.commit()
1364
1501
  self.assertEqual(1, self.repos.quotas.get(
1365
1502
  self.session, project_id=project_id).in_use_l7policy)
1366
1503
  # Test above project is now at quota
@@ -1368,6 +1505,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1368
1505
  self.session,
1369
1506
  data_models.L7Policy,
1370
1507
  project_id))
1508
+ self.session.commit()
1371
1509
  self.assertEqual(1, self.repos.quotas.get(
1372
1510
  self.session, project_id=project_id).in_use_l7policy)
1373
1511
 
@@ -1376,10 +1514,12 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1376
1514
  conf.config(group='quotas', default_l7policy_quota=0)
1377
1515
  quota = {'l7policy': constants.QUOTA_UNLIMITED}
1378
1516
  self.repos.quotas.update(self.session, project_id, quota=quota)
1517
+ self.session.commit()
1379
1518
  self.assertFalse(self.repos.check_quota_met(self.session,
1380
1519
  self.session,
1381
1520
  data_models.L7Policy,
1382
1521
  project_id))
1522
+ self.session.commit()
1383
1523
  self.assertEqual(1, self.repos.quotas.get(
1384
1524
  self.session, project_id=project_id).in_use_l7policy)
1385
1525
  # Test above project adding another l7policy
@@ -1387,6 +1527,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1387
1527
  self.session,
1388
1528
  data_models.L7Policy,
1389
1529
  project_id))
1530
+ self.session.commit()
1390
1531
  self.assertEqual(2, self.repos.quotas.get(
1391
1532
  self.session, project_id=project_id).in_use_l7policy)
1392
1533
 
@@ -1398,6 +1539,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1398
1539
  self.session,
1399
1540
  data_models.L7Rule,
1400
1541
  project_id))
1542
+ self.session.commit()
1401
1543
  self.assertIsNone(self.repos.quotas.get(
1402
1544
  self.session, project_id=project_id).in_use_l7rule)
1403
1545
 
@@ -1408,6 +1550,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1408
1550
  self.session,
1409
1551
  data_models.L7Rule,
1410
1552
  project_id))
1553
+ self.session.commit()
1411
1554
  self.assertEqual(1, self.repos.quotas.get(
1412
1555
  self.session, project_id=project_id).in_use_l7rule)
1413
1556
  # Test above project is now at quota
@@ -1415,6 +1558,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1415
1558
  self.session,
1416
1559
  data_models.L7Rule,
1417
1560
  project_id))
1561
+ self.session.commit()
1418
1562
  self.assertEqual(1, self.repos.quotas.get(
1419
1563
  self.session, project_id=project_id).in_use_l7rule)
1420
1564
 
@@ -1426,6 +1570,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1426
1570
  self.session,
1427
1571
  data_models.L7Rule,
1428
1572
  project_id))
1573
+ self.session.commit()
1429
1574
  self.assertEqual(1, self.repos.quotas.get(
1430
1575
  self.session, project_id=project_id).in_use_l7rule)
1431
1576
  # Test above project adding another l7rule
@@ -1433,6 +1578,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1433
1578
  self.session,
1434
1579
  data_models.L7Rule,
1435
1580
  project_id))
1581
+ self.session.commit()
1436
1582
  self.assertEqual(2, self.repos.quotas.get(
1437
1583
  self.session, project_id=project_id).in_use_l7rule)
1438
1584
 
@@ -1446,27 +1592,33 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1446
1592
  provisioning_status=constants.ACTIVE,
1447
1593
  operating_status=constants.ONLINE,
1448
1594
  enabled=True)
1595
+ self.session.commit()
1449
1596
  listener = self.repos.listener.create(
1450
- self.session, protocol=constants.PROTOCOL_HTTP, protocol_port=80,
1597
+ self.session, id=uuidutils.generate_uuid(),
1598
+ protocol=constants.PROTOCOL_HTTP, protocol_port=80,
1451
1599
  enabled=True, provisioning_status=constants.ACTIVE,
1452
1600
  operating_status=constants.ONLINE, project_id=project_id,
1453
1601
  load_balancer_id=lb.id)
1602
+ self.session.commit()
1454
1603
  l7policy = self.repos.l7policy.create(
1455
1604
  self.session, name='l7policy', enabled=True, position=1,
1456
1605
  action=constants.L7POLICY_ACTION_REJECT,
1457
1606
  provisioning_status=constants.ACTIVE, listener_id=listener.id,
1458
1607
  operating_status=constants.ONLINE, project_id=project_id,
1459
1608
  id=uuidutils.generate_uuid())
1609
+ self.session.commit()
1460
1610
  self.repos.l7rule.create(
1461
1611
  self.session, id=uuidutils.generate_uuid(),
1462
1612
  l7policy_id=l7policy.id, type=constants.L7RULE_TYPE_HOST_NAME,
1463
1613
  compare_type=constants.L7RULE_COMPARE_TYPE_EQUAL_TO, enabled=True,
1464
1614
  provisioning_status=constants.ACTIVE, value='hostname',
1465
1615
  operating_status=constants.ONLINE, project_id=project_id)
1616
+ self.session.commit()
1466
1617
  self.assertTrue(self.repos.check_quota_met(self.session,
1467
1618
  self.session,
1468
1619
  data_models.L7Rule,
1469
1620
  project_id))
1621
+ self.session.commit()
1470
1622
 
1471
1623
  # Test upgrade case with pre-quota deleted l7rule
1472
1624
  project_id = uuidutils.generate_uuid()
@@ -1478,27 +1630,33 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1478
1630
  provisioning_status=constants.ACTIVE,
1479
1631
  operating_status=constants.ONLINE,
1480
1632
  enabled=True)
1633
+ self.session.commit()
1481
1634
  listener = self.repos.listener.create(
1482
- self.session, protocol=constants.PROTOCOL_HTTP, protocol_port=80,
1635
+ self.session, id=uuidutils.generate_uuid(),
1636
+ protocol=constants.PROTOCOL_HTTP, protocol_port=80,
1483
1637
  enabled=True, provisioning_status=constants.ACTIVE,
1484
1638
  operating_status=constants.ONLINE, project_id=project_id,
1485
1639
  load_balancer_id=lb.id)
1640
+ self.session.commit()
1486
1641
  l7policy = self.repos.l7policy.create(
1487
1642
  self.session, name='l7policy', enabled=True, position=1,
1488
1643
  action=constants.L7POLICY_ACTION_REJECT,
1489
1644
  provisioning_status=constants.ACTIVE, listener_id=listener.id,
1490
1645
  operating_status=constants.ONLINE, project_id=project_id,
1491
1646
  id=uuidutils.generate_uuid())
1647
+ self.session.commit()
1492
1648
  self.repos.l7rule.create(
1493
1649
  self.session, id=uuidutils.generate_uuid(),
1494
1650
  l7policy_id=l7policy.id, type=constants.L7RULE_TYPE_HOST_NAME,
1495
1651
  compare_type=constants.L7RULE_COMPARE_TYPE_EQUAL_TO, enabled=True,
1496
1652
  provisioning_status=constants.DELETED, value='hostname',
1497
1653
  operating_status=constants.ONLINE, project_id=project_id)
1654
+ self.session.commit()
1498
1655
  self.assertFalse(self.repos.check_quota_met(self.session,
1499
1656
  self.session,
1500
1657
  data_models.L7Rule,
1501
1658
  project_id))
1659
+ self.session.commit()
1502
1660
  self.assertEqual(1, self.repos.quotas.get(
1503
1661
  self.session, project_id=project_id).in_use_l7rule)
1504
1662
 
@@ -1507,20 +1665,24 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1507
1665
  conf.config(group='quotas', default_l7rule_quota=10)
1508
1666
  quota = {'l7rule': 0}
1509
1667
  self.repos.quotas.update(self.session, project_id, quota=quota)
1668
+ self.session.commit()
1510
1669
  self.assertTrue(self.repos.check_quota_met(self.session,
1511
1670
  self.session,
1512
1671
  data_models.L7Rule,
1513
1672
  project_id))
1673
+ self.session.commit()
1514
1674
 
1515
1675
  # Test pre-existing quota with quota of one
1516
1676
  project_id = uuidutils.generate_uuid()
1517
1677
  conf.config(group='quotas', default_l7rule_quota=0)
1518
1678
  quota = {'l7rule': 1}
1519
1679
  self.repos.quotas.update(self.session, project_id, quota=quota)
1680
+ self.session.commit()
1520
1681
  self.assertFalse(self.repos.check_quota_met(self.session,
1521
1682
  self.session,
1522
1683
  data_models.L7Rule,
1523
1684
  project_id))
1685
+ self.session.commit()
1524
1686
  self.assertEqual(1, self.repos.quotas.get(
1525
1687
  self.session, project_id=project_id).in_use_l7rule)
1526
1688
  # Test above project is now at quota
@@ -1528,6 +1690,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1528
1690
  self.session,
1529
1691
  data_models.L7Rule,
1530
1692
  project_id))
1693
+ self.session.commit()
1531
1694
  self.assertEqual(1, self.repos.quotas.get(
1532
1695
  self.session, project_id=project_id).in_use_l7rule)
1533
1696
 
@@ -1536,10 +1699,12 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1536
1699
  conf.config(group='quotas', default_l7rule_quota=0)
1537
1700
  quota = {'l7rule': constants.QUOTA_UNLIMITED}
1538
1701
  self.repos.quotas.update(self.session, project_id, quota=quota)
1702
+ self.session.commit()
1539
1703
  self.assertFalse(self.repos.check_quota_met(self.session,
1540
1704
  self.session,
1541
1705
  data_models.L7Rule,
1542
1706
  project_id))
1707
+ self.session.commit()
1543
1708
  self.assertEqual(1, self.repos.quotas.get(
1544
1709
  self.session, project_id=project_id).in_use_l7rule)
1545
1710
  # Test above project adding another l7rule
@@ -1547,6 +1712,7 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
1547
1712
  self.session,
1548
1713
  data_models.L7Rule,
1549
1714
  project_id))
1715
+ self.session.commit()
1550
1716
  self.assertEqual(2, self.repos.quotas.get(
1551
1717
  self.session, project_id=project_id).in_use_l7rule)
1552
1718
 
@@ -1952,6 +2118,7 @@ class PoolRepositoryTest(BaseRepositoryTest):
1952
2118
  lb_algorithm=constants.LB_ALGORITHM_ROUND_ROBIN,
1953
2119
  provisioning_status=constants.ACTIVE,
1954
2120
  operating_status=constants.ONLINE, enabled=True, tags=['test_tag'])
2121
+ self.session.commit()
1955
2122
  return pool
1956
2123
 
1957
2124
  def test_get(self):
@@ -1959,7 +2126,8 @@ class PoolRepositoryTest(BaseRepositoryTest):
1959
2126
  project_id=self.FAKE_UUID_2)
1960
2127
  new_pool = self.pool_repo.get(self.session, id=pool.id)
1961
2128
  self.assertIsInstance(new_pool, data_models.Pool)
1962
- self.assertEqual(pool, new_pool)
2129
+ self.assertEqual(pool.id, new_pool.id)
2130
+ self.assertEqual(pool.project_id, new_pool.project_id)
1963
2131
 
1964
2132
  def test_get_all(self):
1965
2133
  pool_one = self.create_pool(pool_id=self.FAKE_UUID_1,
@@ -1970,8 +2138,10 @@ class PoolRepositoryTest(BaseRepositoryTest):
1970
2138
  project_id=self.FAKE_UUID_2)
1971
2139
  self.assertIsInstance(pool_list, list)
1972
2140
  self.assertEqual(2, len(pool_list))
1973
- self.assertEqual(pool_one, pool_list[0])
1974
- self.assertEqual(pool_two, pool_list[1])
2141
+ self.assertEqual(pool_one.id, pool_list[0].id)
2142
+ self.assertEqual(pool_one.project_id, pool_list[0].project_id)
2143
+ self.assertEqual(pool_two.id, pool_list[1].id)
2144
+ self.assertEqual(pool_two.project_id, pool_list[1].project_id)
1975
2145
 
1976
2146
  def test_create(self):
1977
2147
  pool = self.create_pool(pool_id=self.FAKE_UUID_1,
@@ -1989,6 +2159,7 @@ class PoolRepositoryTest(BaseRepositoryTest):
1989
2159
  project_id=self.FAKE_UUID_2)
1990
2160
  self.pool_repo.update(self.session, pool.id,
1991
2161
  description="other_pool_description")
2162
+ self.session.commit()
1992
2163
  new_pool = self.pool_repo.get(self.session, id=self.FAKE_UUID_1)
1993
2164
  self.assertEqual("other_pool_description", new_pool.description)
1994
2165
 
@@ -1996,6 +2167,7 @@ class PoolRepositoryTest(BaseRepositoryTest):
1996
2167
  pool = self.create_pool(pool_id=self.FAKE_UUID_1,
1997
2168
  project_id=self.FAKE_UUID_2)
1998
2169
  self.pool_repo.delete(self.session, id=pool.id)
2170
+ self.session.commit()
1999
2171
  self.assertIsNone(self.pool_repo.get(self.session, id=pool.id))
2000
2172
 
2001
2173
  def test_delete_with_member(self):
@@ -2009,26 +2181,37 @@ class PoolRepositoryTest(BaseRepositoryTest):
2009
2181
  provisioning_status=constants.ACTIVE,
2010
2182
  operating_status=constants.ONLINE,
2011
2183
  backup=False)
2184
+ self.session.commit()
2012
2185
  new_pool = self.pool_repo.get(self.session, id=pool.id)
2013
2186
  self.assertEqual(1, len(new_pool.members))
2014
- self.assertEqual(member, new_pool.members[0])
2187
+ self.assertEqual(member.id, new_pool.members[0].id)
2188
+ self.assertEqual(member.ip_address, new_pool.members[0].ip_address)
2015
2189
  self.pool_repo.delete(self.session, id=pool.id)
2190
+ self.session.commit()
2016
2191
  self.assertIsNone(self.pool_repo.get(self.session, id=pool.id))
2017
2192
  self.assertIsNone(self.member_repo.get(self.session, id=member.id))
2018
2193
 
2019
2194
  def test_delete_with_health_monitor(self):
2020
2195
  pool = self.create_pool(pool_id=self.FAKE_UUID_1,
2021
2196
  project_id=self.FAKE_UUID_2)
2022
- hm = self.hm_repo.create(self.session, pool_id=pool.id,
2197
+ hm = self.hm_repo.create(self.session, id=uuidutils.generate_uuid(),
2198
+ pool_id=pool.id,
2023
2199
  type=constants.HEALTH_MONITOR_HTTP,
2024
2200
  delay=1, timeout=1, fall_threshold=1,
2025
2201
  rise_threshold=1, enabled=True,
2026
2202
  provisioning_status=constants.ACTIVE,
2027
2203
  operating_status=constants.ONLINE)
2204
+ self.session.commit()
2028
2205
  new_pool = self.pool_repo.get(self.session, id=pool.id)
2029
- self.assertEqual(pool, new_pool)
2030
- self.assertEqual(hm, new_pool.health_monitor)
2206
+ self.assertEqual(pool.id, new_pool.id)
2207
+ self.assertEqual(pool.name, new_pool.name)
2208
+ self.assertEqual(pool.project_id, new_pool.project_id)
2209
+ self.assertEqual(hm.id, new_pool.health_monitor.id)
2210
+ self.assertEqual(hm.name, new_pool.health_monitor.name)
2211
+ self.assertEqual(hm.type, new_pool.health_monitor.type)
2212
+ self.assertEqual(hm.pool_id, new_pool.health_monitor.pool_id)
2031
2213
  self.pool_repo.delete(self.session, id=pool.id)
2214
+ self.session.commit()
2032
2215
  self.assertIsNone(self.pool_repo.get(self.session, id=pool.id))
2033
2216
  self.assertIsNone(self.hm_repo.get(self.session, pool_id=hm.pool_id))
2034
2217
 
@@ -2039,17 +2222,22 @@ class PoolRepositoryTest(BaseRepositoryTest):
2039
2222
  self.session, pool_id=pool.id,
2040
2223
  type=constants.SESSION_PERSISTENCE_HTTP_COOKIE,
2041
2224
  cookie_name="cookie_name")
2225
+ self.session.commit()
2042
2226
  new_pool = self.pool_repo.get(self.session, id=pool.id)
2043
- self.assertEqual(pool, new_pool)
2044
- self.assertEqual(sp, new_pool.session_persistence)
2227
+ self.assertEqual(pool.id, new_pool.id)
2228
+ self.assertEqual(pool.project_id, new_pool.project_id)
2229
+ self.assertEqual(sp.pool_id, new_pool.session_persistence.pool_id)
2045
2230
  self.pool_repo.delete(self.session, id=new_pool.id)
2231
+ self.session.commit()
2046
2232
  self.assertIsNone(self.pool_repo.get(self.session, id=pool.id))
2047
2233
  self.assertIsNone(self.sp_repo.get(self.session, pool_id=sp.pool_id))
2048
2234
 
2049
2235
  def test_delete_with_all_children(self):
2050
2236
  pool = self.create_pool(pool_id=self.FAKE_UUID_1,
2051
2237
  project_id=self.FAKE_UUID_2)
2052
- hm = self.hm_repo.create(self.session, pool_id=pool.id,
2238
+ hm = self.hm_repo.create(self.session,
2239
+ id=uuidutils.generate_uuid(),
2240
+ pool_id=pool.id,
2053
2241
  type=constants.HEALTH_MONITOR_HTTP,
2054
2242
  delay=1, timeout=1, fall_threshold=1,
2055
2243
  rise_threshold=1, enabled=True,
@@ -2068,14 +2256,22 @@ class PoolRepositoryTest(BaseRepositoryTest):
2068
2256
  self.session, pool_id=pool.id,
2069
2257
  type=constants.SESSION_PERSISTENCE_HTTP_COOKIE,
2070
2258
  cookie_name="cookie_name")
2259
+ self.session.commit()
2071
2260
  new_pool = self.pool_repo.get(self.session, id=pool.id)
2072
- self.assertEqual(pool, new_pool)
2261
+ self.assertEqual(pool.id, new_pool.id)
2262
+ self.assertEqual(pool.project_id, new_pool.project_id)
2073
2263
  self.assertEqual(1, len(new_pool.members))
2074
2264
  new_member = self.member_repo.get(self.session, id=member.id)
2075
- self.assertEqual(new_member, new_pool.members[0])
2076
- self.assertEqual(hm, new_pool.health_monitor)
2077
- self.assertEqual(sp, new_pool.session_persistence)
2265
+ self.assertEqual(new_member.id, new_pool.members[0].id)
2266
+ self.assertEqual(new_member.pool_id, new_pool.members[0].pool_id)
2267
+ self.assertEqual(new_member.ip_address, new_pool.members[0].ip_address)
2268
+ self.assertEqual(hm.id, new_pool.health_monitor.id)
2269
+ self.assertEqual(hm.type, new_pool.health_monitor.type)
2270
+ self.assertEqual(hm.pool_id, new_pool.health_monitor.pool_id)
2271
+ self.assertEqual(sp.type, new_pool.session_persistence.type)
2272
+ self.assertEqual(sp.pool_id, new_pool.session_persistence.pool_id)
2078
2273
  self.pool_repo.delete(self.session, id=pool.id)
2274
+ self.session.commit()
2079
2275
  self.assertIsNone(self.pool_repo.get(self.session, id=pool.id))
2080
2276
  self.assertIsNone(self.member_repo.get(self.session, id=member.id))
2081
2277
  self.assertIsNone(self.hm_repo.get(self.session, pool_id=hm.pool_id))
@@ -2095,6 +2291,7 @@ class PoolRepositoryTest(BaseRepositoryTest):
2095
2291
  rise_threshold=1, enabled=True,
2096
2292
  provisioning_status=constants.ACTIVE,
2097
2293
  operating_status=constants.ONLINE)
2294
+ self.session.commit()
2098
2295
 
2099
2296
  hm_count, member_count = (
2100
2297
  self.pool_repo.get_children_count(self.session, pool.id))
@@ -2119,6 +2316,7 @@ class PoolRepositoryTest(BaseRepositoryTest):
2119
2316
  operating_status=constants.ONLINE,
2120
2317
  enabled=True,
2121
2318
  backup=False)
2319
+ self.session.commit()
2122
2320
 
2123
2321
  hm_count, member_count = (
2124
2322
  self.pool_repo.get_children_count(self.session, pool.id))
@@ -2137,6 +2335,7 @@ class MemberRepositoryTest(BaseRepositoryTest):
2137
2335
  lb_algorithm=constants.LB_ALGORITHM_ROUND_ROBIN,
2138
2336
  provisioning_status=constants.ACTIVE,
2139
2337
  operating_status=constants.ONLINE, enabled=True, tags=['test_tag'])
2338
+ self.session.commit()
2140
2339
 
2141
2340
  def create_member(self, member_id, project_id, pool_id, ip_address):
2142
2341
  member = self.member_repo.create(self.session, id=member_id,
@@ -2148,6 +2347,7 @@ class MemberRepositoryTest(BaseRepositoryTest):
2148
2347
  provisioning_status=constants.ACTIVE,
2149
2348
  enabled=True,
2150
2349
  backup=False)
2350
+ self.session.commit()
2151
2351
  return member
2152
2352
 
2153
2353
  def test_get(self):
@@ -2155,7 +2355,9 @@ class MemberRepositoryTest(BaseRepositoryTest):
2155
2355
  self.pool.id, "192.0.2.1")
2156
2356
  new_member = self.member_repo.get(self.session, id=member.id)
2157
2357
  self.assertIsInstance(new_member, data_models.Member)
2158
- self.assertEqual(member, new_member)
2358
+ self.assertEqual(member.id, new_member.id)
2359
+ self.assertEqual(member.pool_id, new_member.pool_id)
2360
+ self.assertEqual(member.ip_address, new_member.ip_address)
2159
2361
 
2160
2362
  def test_get_all(self):
2161
2363
  member_one = self.create_member(self.FAKE_UUID_1, self.FAKE_UUID_2,
@@ -2166,8 +2368,12 @@ class MemberRepositoryTest(BaseRepositoryTest):
2166
2368
  project_id=self.FAKE_UUID_2)
2167
2369
  self.assertIsInstance(member_list, list)
2168
2370
  self.assertEqual(2, len(member_list))
2169
- self.assertEqual(member_one, member_list[0])
2170
- self.assertEqual(member_two, member_list[1])
2371
+ self.assertEqual(member_one.id, member_list[0].id)
2372
+ self.assertEqual(member_one.pool_id, member_list[0].pool_id)
2373
+ self.assertEqual(member_one.ip_address, member_list[0].ip_address)
2374
+ self.assertEqual(member_two.id, member_list[1].id)
2375
+ self.assertEqual(member_two.pool_id, member_list[1].pool_id)
2376
+ self.assertEqual(member_two.ip_address, member_list[1].ip_address)
2171
2377
 
2172
2378
  def test_create(self):
2173
2379
  member = self.create_member(self.FAKE_UUID_1, self.FAKE_UUID_2,
@@ -2187,6 +2393,7 @@ class MemberRepositoryTest(BaseRepositoryTest):
2187
2393
  self.pool.id, "192.0.2.1")
2188
2394
  self.member_repo.update(self.session, id=member.id,
2189
2395
  ip_address=ip_address_change)
2396
+ self.session.commit()
2190
2397
  new_member = self.member_repo.get(self.session, id=member.id)
2191
2398
  self.assertEqual(ip_address_change, new_member.ip_address)
2192
2399
 
@@ -2194,6 +2401,7 @@ class MemberRepositoryTest(BaseRepositoryTest):
2194
2401
  member = self.create_member(self.FAKE_UUID_1, self.FAKE_UUID_2,
2195
2402
  self.pool.id, "192.0.2.1")
2196
2403
  self.member_repo.delete(self.session, id=member.id)
2404
+ self.session.commit()
2197
2405
  self.assertIsNone(self.member_repo.get(self.session, id=member.id))
2198
2406
  new_pool = self.pool_repo.get(self.session, id=self.pool.id)
2199
2407
  self.assertIsNotNone(new_pool)
@@ -2208,6 +2416,7 @@ class MemberRepositoryTest(BaseRepositoryTest):
2208
2416
  self.session,
2209
2417
  pool_id=self.pool.id,
2210
2418
  operating_status=constants.OFFLINE)
2419
+ self.session.commit()
2211
2420
  new_member1 = self.member_repo.get(self.session, id=member1.id)
2212
2421
  new_member2 = self.member_repo.get(self.session, id=member2.id)
2213
2422
  self.assertEqual(constants.OFFLINE, new_member1.operating_status)
@@ -2275,6 +2484,7 @@ class TestListenerRepositoryTest(BaseRepositoryTest):
2275
2484
  provisioning_status=constants.ACTIVE,
2276
2485
  operating_status=constants.ONLINE, enabled=True,
2277
2486
  server_group_id=self.FAKE_UUID_1)
2487
+ self.session.commit()
2278
2488
 
2279
2489
  def create_listener(self, listener_id, port, default_pool_id=None,
2280
2490
  provisioning_status=constants.ACTIVE):
@@ -2286,6 +2496,7 @@ class TestListenerRepositoryTest(BaseRepositoryTest):
2286
2496
  default_pool_id=default_pool_id, operating_status=constants.ONLINE,
2287
2497
  provisioning_status=provisioning_status, enabled=True,
2288
2498
  peer_port=1025, tags=['test_tag'])
2499
+ self.session.commit()
2289
2500
  return listener
2290
2501
 
2291
2502
  def create_amphora(self, amphora_id, loadbalancer_id):
@@ -2295,6 +2506,7 @@ class TestListenerRepositoryTest(BaseRepositoryTest):
2295
2506
  status=constants.ACTIVE,
2296
2507
  vrrp_ip=self.FAKE_IP,
2297
2508
  lb_network_ip=self.FAKE_IP)
2509
+ self.session.commit()
2298
2510
  return amphora
2299
2511
 
2300
2512
  def create_loadbalancer(self, lb_id):
@@ -2304,13 +2516,17 @@ class TestListenerRepositoryTest(BaseRepositoryTest):
2304
2516
  provisioning_status=constants.ACTIVE,
2305
2517
  operating_status=constants.ONLINE,
2306
2518
  enabled=True)
2519
+ self.session.commit()
2307
2520
  return lb
2308
2521
 
2309
2522
  def test_get(self):
2310
2523
  listener = self.create_listener(self.FAKE_UUID_1, 80)
2311
2524
  new_listener = self.listener_repo.get(self.session, id=listener.id)
2312
2525
  self.assertIsInstance(new_listener, data_models.Listener)
2313
- self.assertEqual(listener, new_listener)
2526
+ self.assertEqual(listener.id, new_listener.id)
2527
+ self.assertEqual(listener.name, new_listener.name)
2528
+ self.assertEqual(listener.protocol, new_listener.protocol)
2529
+ self.assertEqual(listener.protocol_port, new_listener.protocol_port)
2314
2530
 
2315
2531
  def test_get_all(self):
2316
2532
  listener_one = self.create_listener(self.FAKE_UUID_1, 80)
@@ -2319,8 +2535,8 @@ class TestListenerRepositoryTest(BaseRepositoryTest):
2319
2535
  self.session, project_id=self.FAKE_UUID_2)
2320
2536
  self.assertIsInstance(listener_list, list)
2321
2537
  self.assertEqual(2, len(listener_list))
2322
- self.assertEqual(listener_one, listener_list[0])
2323
- self.assertEqual(listener_two, listener_list[1])
2538
+ self.assertEqual(listener_one.id, listener_list[0].id)
2539
+ self.assertEqual(listener_two.id, listener_list[1].id)
2324
2540
 
2325
2541
  def test_create(self):
2326
2542
  listener = self.create_listener(self.FAKE_UUID_1, 80)
@@ -2345,6 +2561,7 @@ class TestListenerRepositoryTest(BaseRepositoryTest):
2345
2561
  load_balancer_id=lb.id, protocol=constants.PROTOCOL_HTTP,
2346
2562
  protocol_port=80, provisioning_status=constants.ACTIVE,
2347
2563
  operating_status=constants.ONLINE, enabled=True)
2564
+ self.session.commit()
2348
2565
  new_listener = self.listener_repo.get(self.session, id=listener.id)
2349
2566
  self.assertEqual(1025, new_listener.peer_port)
2350
2567
 
@@ -2356,12 +2573,14 @@ class TestListenerRepositoryTest(BaseRepositoryTest):
2356
2573
  load_balancer_id=lb.id, protocol=constants.PROTOCOL_HTTP,
2357
2574
  protocol_port=80, provisioning_status=constants.ACTIVE,
2358
2575
  operating_status=constants.ONLINE, enabled=True)
2576
+ self.session.commit()
2359
2577
  listener_b = self.listener_repo.create(
2360
2578
  self.session, id=uuidutils.generate_uuid(),
2361
2579
  project_id=self.FAKE_UUID_2,
2362
2580
  load_balancer_id=lb.id, protocol=constants.PROTOCOL_HTTP,
2363
2581
  protocol_port=81, provisioning_status=constants.ACTIVE,
2364
2582
  operating_status=constants.ONLINE, enabled=True)
2583
+ self.session.commit()
2365
2584
  new_listener_a = self.listener_repo.get(self.session, id=listener_a.id)
2366
2585
  new_listener_b = self.listener_repo.get(self.session, id=listener_b.id)
2367
2586
  self.assertEqual(1025, new_listener_a.peer_port)
@@ -2373,6 +2592,7 @@ class TestListenerRepositoryTest(BaseRepositoryTest):
2373
2592
  name="lb_name2", description="lb_description2",
2374
2593
  provisioning_status=constants.ACTIVE,
2375
2594
  operating_status=constants.ONLINE, enabled=True)
2595
+ self.session.commit()
2376
2596
  pool = self.pool_repo.create(
2377
2597
  self.session, id=self.FAKE_UUID_4, project_id=self.FAKE_UUID_2,
2378
2598
  name="pool_test", description="pool_description",
@@ -2381,6 +2601,7 @@ class TestListenerRepositoryTest(BaseRepositoryTest):
2381
2601
  provisioning_status=constants.ACTIVE,
2382
2602
  operating_status=constants.ONLINE, enabled=True,
2383
2603
  load_balancer_id=load_balancer2.id)
2604
+ self.session.commit()
2384
2605
  self.assertRaises(exceptions.NotFound, self.create_listener,
2385
2606
  self.FAKE_UUID_1, 80, default_pool_id=pool.id)
2386
2607
 
@@ -2394,6 +2615,7 @@ class TestListenerRepositoryTest(BaseRepositoryTest):
2394
2615
  container2_dm = data_models.SNI(**container2)
2395
2616
  self.sni_repo.create(self.session, **container1)
2396
2617
  self.sni_repo.create(self.session, **container2)
2618
+ self.session.commit()
2397
2619
  new_listener = self.listener_repo.get(self.session, id=listener.id)
2398
2620
  self.assertIn(container1_dm, new_listener.sni_containers)
2399
2621
  self.assertIn(container2_dm, new_listener.sni_containers)
@@ -2401,8 +2623,10 @@ class TestListenerRepositoryTest(BaseRepositoryTest):
2401
2623
  def test_update(self):
2402
2624
  name_change = "new_listener_name"
2403
2625
  listener = self.create_listener(self.FAKE_UUID_1, 80)
2626
+ self.session.commit()
2404
2627
  self.listener_repo.update(self.session, listener.id,
2405
2628
  name=name_change)
2629
+ self.session.commit()
2406
2630
  new_listener = self.listener_repo.get(self.session, id=listener.id)
2407
2631
  self.assertEqual(name_change, new_listener.name)
2408
2632
 
@@ -2413,6 +2637,7 @@ class TestListenerRepositoryTest(BaseRepositoryTest):
2413
2637
  container1_dm = data_models.SNI(**container1)
2414
2638
  self.listener_repo.update(self.session, listener.id,
2415
2639
  sni_containers=[self.FAKE_UUID_2])
2640
+ self.session.commit()
2416
2641
  new_listener = self.listener_repo.get(self.session, id=listener.id)
2417
2642
  self.assertIn(container1_dm, new_listener.sni_containers)
2418
2643
 
@@ -2429,10 +2654,12 @@ class TestListenerRepositoryTest(BaseRepositoryTest):
2429
2654
  listener = self.create_listener(self.FAKE_UUID_1, 80)
2430
2655
  sni = self.sni_repo.create(self.session, listener_id=listener.id,
2431
2656
  tls_container_id=self.FAKE_UUID_3)
2657
+ self.session.commit()
2432
2658
  new_listener = self.listener_repo.get(self.session, id=listener.id)
2433
2659
  self.assertIsNotNone(new_listener)
2434
2660
  self.assertEqual(sni, new_listener.sni_containers[0])
2435
2661
  self.listener_repo.delete(self.session, id=new_listener.id)
2662
+ self.session.commit()
2436
2663
  self.assertIsNone(self.listener_repo.get(self.session, id=listener.id))
2437
2664
  self.assertIsNone(self.sni_repo.get(self.session,
2438
2665
  listener_id=listener.id))
@@ -2445,11 +2672,13 @@ class TestListenerRepositoryTest(BaseRepositoryTest):
2445
2672
  self.session, listener_id=listener.id, amphora_id=amphora.id,
2446
2673
  bytes_in=1, bytes_out=1,
2447
2674
  active_connections=1, total_connections=1, request_errors=1)
2675
+ self.session.commit()
2448
2676
  new_listener = self.listener_repo.get(self.session, id=listener.id)
2449
2677
  self.assertIsNotNone(new_listener)
2450
2678
  self.assertIsNotNone(self.listener_stats_repo.get(
2451
2679
  self.session, listener_id=listener.id))
2452
2680
  self.listener_repo.delete(self.session, id=listener.id)
2681
+ self.session.commit()
2453
2682
  self.assertIsNone(self.listener_repo.get(self.session, id=listener.id))
2454
2683
  # ListenerStatistics should stick around
2455
2684
  self.assertIsNotNone(self.listener_stats_repo.get(
@@ -2464,12 +2693,15 @@ class TestListenerRepositoryTest(BaseRepositoryTest):
2464
2693
  provisioning_status=constants.ACTIVE,
2465
2694
  operating_status=constants.ONLINE, enabled=True,
2466
2695
  load_balancer_id=self.load_balancer.id)
2696
+ self.session.commit()
2467
2697
  listener = self.create_listener(self.FAKE_UUID_1, 80,
2468
2698
  default_pool_id=pool.id)
2699
+ pool = self.pool_repo.get(self.session, id=pool.id)
2469
2700
  new_listener = self.listener_repo.get(self.session, id=listener.id)
2470
2701
  self.assertIsNotNone(new_listener)
2471
2702
  self.assertEqual(pool, new_listener.default_pool)
2472
2703
  self.listener_repo.delete(self.session, id=new_listener.id)
2704
+ self.session.commit()
2473
2705
  self.assertIsNone(self.listener_repo.get(self.session, id=listener.id))
2474
2706
  # Pool should stick around
2475
2707
  self.assertIsNotNone(self.pool_repo.get(self.session, id=pool.id))
@@ -2483,6 +2715,7 @@ class TestListenerRepositoryTest(BaseRepositoryTest):
2483
2715
  provisioning_status=constants.ACTIVE,
2484
2716
  operating_status=constants.ONLINE, enabled=True,
2485
2717
  load_balancer_id=self.load_balancer.id)
2718
+ self.session.commit()
2486
2719
  listener = self.create_listener(self.FAKE_UUID_1, 80,
2487
2720
  default_pool_id=pool.id)
2488
2721
  sni = self.sni_repo.create(self.session, listener_id=listener.id,
@@ -2494,11 +2727,14 @@ class TestListenerRepositoryTest(BaseRepositoryTest):
2494
2727
  amphora_id=amphora.id,
2495
2728
  bytes_in=1, bytes_out=1,
2496
2729
  active_connections=1, total_connections=1, request_errors=1)
2730
+ self.session.commit()
2731
+ pool = self.pool_repo.get(self.session, id=pool.id)
2497
2732
  new_listener = self.listener_repo.get(self.session, id=listener.id)
2498
2733
  self.assertIsNotNone(new_listener)
2499
2734
  self.assertEqual(pool, new_listener.default_pool)
2500
2735
  self.assertEqual(sni, new_listener.sni_containers[0])
2501
2736
  self.listener_repo.delete(self.session, id=listener.id)
2737
+ self.session.commit()
2502
2738
  self.assertIsNone(self.listener_repo.get(self.session, id=listener.id))
2503
2739
  self.assertIsNone(self.sni_repo.get(self.session,
2504
2740
  listener_id=listener.id))
@@ -2517,12 +2753,17 @@ class TestListenerRepositoryTest(BaseRepositoryTest):
2517
2753
  provisioning_status=constants.ACTIVE,
2518
2754
  operating_status=constants.ONLINE, enabled=True,
2519
2755
  load_balancer_id=self.load_balancer.id)
2756
+ self.session.commit()
2520
2757
  listener = self.create_listener(self.FAKE_UUID_1, 80,
2521
2758
  default_pool_id=pool.id)
2522
2759
  new_listener = self.listener_repo.get(self.session, id=listener.id)
2523
2760
  self.assertIsNotNone(new_listener)
2524
- self.assertEqual(pool, new_listener.default_pool)
2761
+ self.assertEqual(pool.id, new_listener.default_pool.id)
2762
+ self.assertEqual(pool.load_balancer_id,
2763
+ new_listener.default_pool.load_balancer_id)
2764
+ self.assertEqual(pool.project_id, new_listener.default_pool.project_id)
2525
2765
  self.pool_repo.delete(self.session, id=pool.id)
2766
+ self.session.commit()
2526
2767
  new_listener = self.listener_repo.get(self.session, id=listener.id)
2527
2768
  self.assertIsNone(new_listener.default_pool)
2528
2769
 
@@ -2531,6 +2772,7 @@ class TestListenerRepositoryTest(BaseRepositoryTest):
2531
2772
  provisioning_status=constants.ACTIVE)
2532
2773
  self.listener_repo.prov_status_active_if_not_error(self.session,
2533
2774
  listener.id)
2775
+ self.session.commit()
2534
2776
  new_listener = self.listener_repo.get(self.session, id=listener.id)
2535
2777
  self.assertEqual(constants.ACTIVE, new_listener.provisioning_status)
2536
2778
 
@@ -2539,6 +2781,7 @@ class TestListenerRepositoryTest(BaseRepositoryTest):
2539
2781
  provisioning_status=constants.ERROR)
2540
2782
  self.listener_repo.prov_status_active_if_not_error(self.session,
2541
2783
  listener.id)
2784
+ self.session.commit()
2542
2785
  new_listener = self.listener_repo.get(self.session, id=listener.id)
2543
2786
  self.assertEqual(constants.ERROR, new_listener.provisioning_status)
2544
2787
 
@@ -2547,6 +2790,7 @@ class TestListenerRepositoryTest(BaseRepositoryTest):
2547
2790
  self.FAKE_UUID_1, 80, provisioning_status=constants.PENDING_UPDATE)
2548
2791
  self.listener_repo.prov_status_active_if_not_error(self.session,
2549
2792
  listener.id)
2793
+ self.session.commit()
2550
2794
  new_listener = self.listener_repo.get(self.session, id=listener.id)
2551
2795
  self.assertEqual(constants.ACTIVE, new_listener.provisioning_status)
2552
2796
 
@@ -2556,6 +2800,7 @@ class TestListenerRepositoryTest(BaseRepositoryTest):
2556
2800
  # Should not raise an exception nor change any status
2557
2801
  self.listener_repo.prov_status_active_if_not_error(self.session,
2558
2802
  'bogus_id')
2803
+ self.session.commit()
2559
2804
  new_listener = self.listener_repo.get(self.session, id=listener.id)
2560
2805
  self.assertEqual(constants.PENDING_UPDATE,
2561
2806
  new_listener.provisioning_status)
@@ -2586,12 +2831,14 @@ class ListenerStatisticsRepositoryTest(BaseRepositoryTest):
2586
2831
  status=constants.ACTIVE,
2587
2832
  vrrp_ip=self.FAKE_IP,
2588
2833
  lb_network_ip=self.FAKE_IP)
2834
+ self.session.commit()
2589
2835
 
2590
2836
  def create_listener_stats(self, listener_id, amphora_id):
2591
2837
  stats = self.listener_stats_repo.create(
2592
2838
  self.session, listener_id=listener_id, amphora_id=amphora_id,
2593
2839
  bytes_in=1, bytes_out=1,
2594
2840
  active_connections=1, total_connections=1, request_errors=1)
2841
+ self.session.commit()
2595
2842
  return stats
2596
2843
 
2597
2844
  def test_get(self):
@@ -2617,6 +2864,7 @@ class ListenerStatisticsRepositoryTest(BaseRepositoryTest):
2617
2864
  stats = self.create_listener_stats(self.listener.id, self.amphora.id)
2618
2865
  self.listener_stats_repo.update(self.session, stats.listener_id,
2619
2866
  bytes_in=bytes_in_change)
2867
+ self.session.commit()
2620
2868
  new_stats = self.listener_stats_repo.get(self.session,
2621
2869
  listener_id=stats.listener_id)
2622
2870
  self.assertIsInstance(new_stats, data_models.ListenerStatistics)
@@ -2626,6 +2874,7 @@ class ListenerStatisticsRepositoryTest(BaseRepositoryTest):
2626
2874
  stats = self.create_listener_stats(self.listener.id, self.amphora.id)
2627
2875
  self.listener_stats_repo.delete(self.session,
2628
2876
  listener_id=stats.listener_id)
2877
+ self.session.commit()
2629
2878
  self.assertIsNone(self.listener_stats_repo.get(
2630
2879
  self.session, listener_id=stats.listener_id))
2631
2880
  new_listener = self.listener_repo.get(self.session,
@@ -2652,6 +2901,7 @@ class ListenerStatisticsRepositoryTest(BaseRepositoryTest):
2652
2901
  request_errors=request_errors
2653
2902
  )
2654
2903
  self.listener_stats_repo.replace(self.session, stats_obj)
2904
+ self.session.commit()
2655
2905
  obj = self.listener_stats_repo.get(self.session,
2656
2906
  listener_id=self.listener.id)
2657
2907
  self.assertIsNotNone(obj)
@@ -2679,6 +2929,7 @@ class ListenerStatisticsRepositoryTest(BaseRepositoryTest):
2679
2929
  request_errors=request_errors_2
2680
2930
  )
2681
2931
  self.listener_stats_repo.replace(self.session, stats_obj_2)
2932
+ self.session.commit()
2682
2933
  obj = self.listener_stats_repo.get(self.session,
2683
2934
  listener_id=self.listener.id)
2684
2935
  self.assertIsNotNone(obj)
@@ -2700,6 +2951,7 @@ class ListenerStatisticsRepositoryTest(BaseRepositoryTest):
2700
2951
  request_errors=request_errors
2701
2952
  )
2702
2953
  self.listener_stats_repo.replace(self.session, stats_obj)
2954
+ self.session.commit()
2703
2955
  obj = self.listener_stats_repo.get(self.session,
2704
2956
  listener_id=self.listener.id,
2705
2957
  amphora_id=self.listener.id)
@@ -2731,6 +2983,7 @@ class ListenerStatisticsRepositoryTest(BaseRepositoryTest):
2731
2983
  request_errors=request_errors
2732
2984
  )
2733
2985
  self.listener_stats_repo.increment(self.session, delta_stats)
2986
+ self.session.commit()
2734
2987
  obj = self.listener_stats_repo.get(self.session,
2735
2988
  listener_id=self.listener.id)
2736
2989
  self.assertIsNotNone(obj)
@@ -2758,6 +3011,7 @@ class ListenerStatisticsRepositoryTest(BaseRepositoryTest):
2758
3011
  request_errors=request_errors_2
2759
3012
  )
2760
3013
  self.listener_stats_repo.increment(self.session, delta_stats_2)
3014
+ self.session.commit()
2761
3015
  obj = self.listener_stats_repo.get(self.session,
2762
3016
  listener_id=self.listener.id)
2763
3017
  self.assertIsNotNone(obj)
@@ -2779,6 +3033,7 @@ class ListenerStatisticsRepositoryTest(BaseRepositoryTest):
2779
3033
  request_errors=request_errors
2780
3034
  )
2781
3035
  self.listener_stats_repo.increment(self.session, stats_obj)
3036
+ self.session.commit()
2782
3037
  obj = self.listener_stats_repo.get(self.session,
2783
3038
  listener_id=self.listener.id,
2784
3039
  amphora_id=self.listener.id)
@@ -2810,6 +3065,7 @@ class HealthMonitorRepositoryTest(BaseRepositoryTest):
2810
3065
  lb_algorithm=constants.LB_ALGORITHM_ROUND_ROBIN,
2811
3066
  provisioning_status=constants.ACTIVE,
2812
3067
  operating_status=constants.ONLINE, enabled=True)
3068
+ self.session.commit()
2813
3069
 
2814
3070
  def create_health_monitor(self, hm_id, pool_id):
2815
3071
  health_monitor = self.hm_repo.create(
@@ -2820,6 +3076,7 @@ class HealthMonitorRepositoryTest(BaseRepositoryTest):
2820
3076
  provisioning_status=constants.ACTIVE,
2821
3077
  operating_status=constants.ONLINE,
2822
3078
  expected_codes="200", enabled=True, tags=['test_tag'])
3079
+ self.session.commit()
2823
3080
  self.assertEqual(hm_id, health_monitor.id)
2824
3081
  return health_monitor
2825
3082
 
@@ -2827,7 +3084,9 @@ class HealthMonitorRepositoryTest(BaseRepositoryTest):
2827
3084
  hm = self.create_health_monitor(self.FAKE_UUID_3, self.pool.id)
2828
3085
  new_hm = self.hm_repo.get(self.session, id=hm.id)
2829
3086
  self.assertIsInstance(new_hm, data_models.HealthMonitor)
2830
- self.assertEqual(hm, new_hm)
3087
+ self.assertEqual(hm.id, new_hm.id)
3088
+ self.assertEqual(hm.pool_id, new_hm.pool_id)
3089
+ self.assertEqual(hm.type, new_hm.type)
2831
3090
 
2832
3091
  def test_create(self):
2833
3092
  hm = self.create_health_monitor(self.FAKE_UUID_3, self.pool.id)
@@ -2848,12 +3107,14 @@ class HealthMonitorRepositoryTest(BaseRepositoryTest):
2848
3107
  hm = self.create_health_monitor(self.FAKE_UUID_3, self.pool.id)
2849
3108
  self.hm_repo.update(
2850
3109
  self.session, hm.id, delay=delay_change)
3110
+ self.session.commit()
2851
3111
  new_hm = self.hm_repo.get(self.session, id=hm.id)
2852
3112
  self.assertEqual(delay_change, new_hm.delay)
2853
3113
 
2854
3114
  def test_delete(self):
2855
3115
  hm = self.create_health_monitor(self.FAKE_UUID_3, self.pool.id)
2856
3116
  self.hm_repo.delete(self.session, id=hm.id)
3117
+ self.session.commit()
2857
3118
  self.assertIsNone(self.hm_repo.get(self.session, id=hm.id))
2858
3119
  new_pool = self.pool_repo.get(self.session, id=self.pool.id)
2859
3120
  self.assertIsNotNone(new_pool)
@@ -2873,13 +3134,15 @@ class LoadBalancerRepositoryTest(BaseRepositoryTest):
2873
3134
  )
2874
3135
  settings.update(**overrides)
2875
3136
  lb = self.lb_repo.create(self.session, **settings)
3137
+ self.session.commit()
2876
3138
  return lb
2877
3139
 
2878
3140
  def test_get(self):
2879
3141
  lb = self.create_loadbalancer(self.FAKE_UUID_1)
2880
3142
  new_lb = self.lb_repo.get(self.session, id=lb.id)
2881
3143
  self.assertIsInstance(new_lb, data_models.LoadBalancer)
2882
- self.assertEqual(lb, new_lb)
3144
+ self.assertEqual(lb.id, new_lb.id)
3145
+ self.assertEqual(lb.project_id, new_lb.project_id)
2883
3146
 
2884
3147
  def test_get_all(self):
2885
3148
  lb_one = self.create_loadbalancer(self.FAKE_UUID_1)
@@ -2887,8 +3150,10 @@ class LoadBalancerRepositoryTest(BaseRepositoryTest):
2887
3150
  lb_list, _ = self.lb_repo.get_all(self.session,
2888
3151
  project_id=self.FAKE_UUID_2)
2889
3152
  self.assertEqual(2, len(lb_list))
2890
- self.assertEqual(lb_one, lb_list[0])
2891
- self.assertEqual(lb_two, lb_list[1])
3153
+ self.assertEqual(lb_one.id, lb_list[0].id)
3154
+ self.assertEqual(lb_one.project_id, lb_list[0].project_id)
3155
+ self.assertEqual(lb_two.id, lb_list[1].id)
3156
+ self.assertEqual(lb_two.project_id, lb_list[1].project_id)
2892
3157
 
2893
3158
  def test_create(self):
2894
3159
  lb = self.create_loadbalancer(self.FAKE_UUID_1)
@@ -2904,12 +3169,14 @@ class LoadBalancerRepositoryTest(BaseRepositoryTest):
2904
3169
  name_change = "load_balancer_name"
2905
3170
  lb = self.create_loadbalancer(self.FAKE_UUID_1)
2906
3171
  self.lb_repo.update(self.session, lb.id, name=name_change)
3172
+ self.session.commit()
2907
3173
  new_lb = self.lb_repo.get(self.session, id=lb.id)
2908
3174
  self.assertEqual(name_change, new_lb.name)
2909
3175
 
2910
3176
  def test_delete(self):
2911
3177
  lb = self.create_loadbalancer(self.FAKE_UUID_1)
2912
3178
  self.lb_repo.delete(self.session, id=lb.id)
3179
+ self.session.commit()
2913
3180
  self.assertIsNone(self.lb_repo.get(self.session, id=lb.id))
2914
3181
 
2915
3182
  def test_delete_with_amphora(self):
@@ -2923,8 +3190,12 @@ class LoadBalancerRepositoryTest(BaseRepositoryTest):
2923
3190
  new_lb = self.lb_repo.get(self.session, id=lb.id)
2924
3191
  self.assertIsNotNone(new_lb)
2925
3192
  self.assertEqual(1, len(new_lb.amphorae))
2926
- self.assertEqual(amphora, new_lb.amphorae[0])
3193
+ self.assertEqual(amphora.id, new_lb.amphorae[0].id)
3194
+ self.assertEqual(amphora.load_balancer_id,
3195
+ new_lb.amphorae[0].load_balancer_id)
3196
+ self.assertEqual(amphora.compute_id, new_lb.amphorae[0].compute_id)
2927
3197
  self.lb_repo.delete(self.session, id=new_lb.id)
3198
+ self.session.commit()
2928
3199
  self.assertIsNone(self.lb_repo.get(self.session, id=lb.id))
2929
3200
  new_amphora = self.amphora_repo.get(self.session, id=amphora.id)
2930
3201
  self.assertIsNotNone(new_amphora)
@@ -2936,18 +3207,22 @@ class LoadBalancerRepositoryTest(BaseRepositoryTest):
2936
3207
  load_balancer_id=lb.id,
2937
3208
  compute_id=self.FAKE_UUID_3,
2938
3209
  status=constants.ACTIVE)
3210
+ self.session.commit()
2939
3211
  amphora_2 = self.amphora_repo.create(self.session, id=self.FAKE_UUID_3,
2940
3212
  load_balancer_id=lb.id,
2941
3213
  compute_id=self.FAKE_UUID_3,
2942
3214
  lb_network_ip=self.FAKE_IP,
2943
3215
  vrrp_ip=self.FAKE_IP,
2944
3216
  status=constants.ACTIVE)
3217
+ self.session.commit()
2945
3218
  new_lb = self.lb_repo.get(self.session, id=lb.id)
2946
3219
  self.assertIsNotNone(new_lb)
2947
3220
  self.assertEqual(2, len(new_lb.amphorae))
2948
- self.assertIn(amphora_1, new_lb.amphorae)
2949
- self.assertIn(amphora_2, new_lb.amphorae)
3221
+ amphora_ids = [amp.id for amp in new_lb.amphorae]
3222
+ self.assertIn(amphora_1.id, amphora_ids)
3223
+ self.assertIn(amphora_2.id, amphora_ids)
2950
3224
  self.lb_repo.delete(self.session, id=new_lb.id)
3225
+ self.session.commit()
2951
3226
  self.assertIsNone(self.lb_repo.get(self.session, id=lb.id))
2952
3227
  new_amphora_1 = self.amphora_repo.get(self.session, id=amphora_1.id)
2953
3228
  new_amphora_2 = self.amphora_repo.get(self.session, id=amphora_2.id)
@@ -2960,11 +3235,13 @@ class LoadBalancerRepositoryTest(BaseRepositoryTest):
2960
3235
  lb = self.create_loadbalancer(self.FAKE_UUID_1)
2961
3236
  vip = self.vip_repo.create(self.session, load_balancer_id=lb.id,
2962
3237
  ip_address="192.0.2.1")
3238
+ self.session.commit()
2963
3239
  new_lb = self.lb_repo.get(self.session, id=lb.id)
2964
3240
  self.assertIsNotNone(new_lb)
2965
3241
  self.assertIsNotNone(new_lb.vip)
2966
3242
  self.assertEqual(vip, new_lb.vip)
2967
3243
  self.lb_repo.delete(self.session, id=new_lb.id)
3244
+ self.session.commit()
2968
3245
  self.assertIsNone(self.lb_repo.get(self.session, id=lb.id))
2969
3246
  self.assertIsNone(self.vip_repo.get(self.session,
2970
3247
  load_balancer_id=lb.id))
@@ -2978,11 +3255,16 @@ class LoadBalancerRepositoryTest(BaseRepositoryTest):
2978
3255
  protocol_port=80, connection_limit=1,
2979
3256
  provisioning_status=constants.ACTIVE,
2980
3257
  operating_status=constants.ONLINE, enabled=True)
3258
+ self.session.commit()
2981
3259
  new_lb = self.lb_repo.get(self.session, id=lb.id)
2982
3260
  self.assertIsNotNone(new_lb)
2983
3261
  self.assertEqual(1, len(new_lb.listeners))
2984
- self.assertEqual(listener, new_lb.listeners[0])
3262
+ self.assertEqual(listener.id, new_lb.listeners[0].id)
3263
+ self.assertEqual(listener.load_balancer_id,
3264
+ new_lb.listeners[0].load_balancer_id)
3265
+ self.assertEqual(listener.project_id, new_lb.listeners[0].project_id)
2985
3266
  self.lb_repo.delete(self.session, id=new_lb.id)
3267
+ self.session.commit()
2986
3268
  self.assertIsNone(self.lb_repo.get(self.session, id=lb.id))
2987
3269
  self.assertIsNone(self.listener_repo.get(self.session, id=listener.id))
2988
3270
 
@@ -2995,6 +3277,7 @@ class LoadBalancerRepositoryTest(BaseRepositoryTest):
2995
3277
  protocol_port=80, connection_limit=1,
2996
3278
  provisioning_status=constants.ACTIVE,
2997
3279
  operating_status=constants.ONLINE, enabled=True)
3280
+ self.session.commit()
2998
3281
  listener_2 = self.listener_repo.create(
2999
3282
  self.session, id=self.FAKE_UUID_3, project_id=self.FAKE_UUID_2,
3000
3283
  name="listener_name", description="listener_description",
@@ -3002,12 +3285,15 @@ class LoadBalancerRepositoryTest(BaseRepositoryTest):
3002
3285
  protocol_port=443, connection_limit=1,
3003
3286
  provisioning_status=constants.ACTIVE,
3004
3287
  operating_status=constants.ONLINE, enabled=True)
3288
+ self.session.commit()
3005
3289
  new_lb = self.lb_repo.get(self.session, id=lb.id)
3006
3290
  self.assertIsNotNone(new_lb)
3007
3291
  self.assertEqual(2, len(new_lb.listeners))
3008
- self.assertIn(listener_1, new_lb.listeners)
3009
- self.assertIn(listener_2, new_lb.listeners)
3292
+ listener_ids = [lstnr.id for lstnr in new_lb.listeners]
3293
+ self.assertIn(listener_1.id, listener_ids)
3294
+ self.assertIn(listener_2.id, listener_ids)
3010
3295
  self.lb_repo.delete(self.session, id=new_lb.id)
3296
+ self.session.commit()
3011
3297
  self.assertIsNone(self.lb_repo.get(self.session, id=lb.id))
3012
3298
  self.assertIsNone(self.listener_repo.get(self.session,
3013
3299
  id=listener_1.id))
@@ -3016,13 +3302,16 @@ class LoadBalancerRepositoryTest(BaseRepositoryTest):
3016
3302
 
3017
3303
  def test_delete_with_all_children(self):
3018
3304
  lb = self.create_loadbalancer(self.FAKE_UUID_1)
3305
+ self.session.commit()
3019
3306
  amphora = self.amphora_repo.create(self.session, id=self.FAKE_UUID_1,
3020
3307
  load_balancer_id=lb.id,
3021
3308
  compute_id=self.FAKE_UUID_3,
3022
3309
  lb_network_ip=self.FAKE_IP,
3023
3310
  status=constants.ACTIVE)
3311
+ self.session.commit()
3024
3312
  vip = self.vip_repo.create(self.session, load_balancer_id=lb.id,
3025
3313
  ip_address="192.0.2.1")
3314
+ self.session.commit()
3026
3315
  listener = self.listener_repo.create(
3027
3316
  self.session, id=self.FAKE_UUID_1, project_id=self.FAKE_UUID_2,
3028
3317
  name="listener_name", description="listener_description",
@@ -3030,15 +3319,24 @@ class LoadBalancerRepositoryTest(BaseRepositoryTest):
3030
3319
  protocol_port=80, connection_limit=1,
3031
3320
  provisioning_status=constants.ACTIVE,
3032
3321
  operating_status=constants.ONLINE, enabled=True)
3322
+ self.session.commit()
3033
3323
  new_lb = self.lb_repo.get(self.session, id=lb.id)
3034
3324
  self.assertIsNotNone(new_lb)
3035
3325
  self.assertIsNotNone(new_lb.vip)
3036
3326
  self.assertEqual(vip, new_lb.vip)
3037
3327
  self.assertEqual(1, len(new_lb.amphorae))
3038
3328
  self.assertEqual(1, len(new_lb.listeners))
3039
- self.assertEqual(amphora, new_lb.amphorae[0])
3040
- self.assertEqual(listener, new_lb.listeners[0])
3329
+ self.assertEqual(amphora.id, new_lb.amphorae[0].id)
3330
+ self.assertEqual(amphora.load_balancer_id,
3331
+ new_lb.amphorae[0].load_balancer_id)
3332
+ self.assertEqual(amphora.compute_id, new_lb.amphorae[0].compute_id)
3333
+ self.assertEqual(listener.id, new_lb.listeners[0].id)
3334
+ self.assertEqual(listener.name, new_lb.listeners[0].name)
3335
+ self.assertEqual(listener.protocol, new_lb.listeners[0].protocol)
3336
+ self.assertEqual(listener.protocol_port,
3337
+ new_lb.listeners[0].protocol_port)
3041
3338
  self.lb_repo.delete(self.session, id=new_lb.id)
3339
+ self.session.commit()
3042
3340
  self.assertIsNone(self.lb_repo.get(self.session, id=lb.id))
3043
3341
  new_amphora = self.amphora_repo.get(self.session, id=amphora.id)
3044
3342
  self.assertIsNotNone(new_amphora)
@@ -3053,6 +3351,7 @@ class LoadBalancerRepositoryTest(BaseRepositoryTest):
3053
3351
  provisioning_status=constants.PENDING_CREATE,
3054
3352
  operating_status=constants.OFFLINE,
3055
3353
  enabled=True)
3354
+ self.session.commit()
3056
3355
  self.assertFalse(self.lb_repo.test_and_set_provisioning_status(
3057
3356
  self.session, lb_id, constants.PENDING_UPDATE))
3058
3357
  lb = self.lb_repo.get(self.session, id=lb_id)
@@ -3064,6 +3363,7 @@ class LoadBalancerRepositoryTest(BaseRepositoryTest):
3064
3363
  provisioning_status=constants.PENDING_CREATE,
3065
3364
  operating_status=constants.OFFLINE,
3066
3365
  enabled=True)
3366
+ self.session.commit()
3067
3367
  self.assertRaises(exceptions.ImmutableObject,
3068
3368
  self.lb_repo.test_and_set_provisioning_status,
3069
3369
  self.session, lb_id,
@@ -3078,8 +3378,10 @@ class LoadBalancerRepositoryTest(BaseRepositoryTest):
3078
3378
  provisioning_status=constants.ACTIVE,
3079
3379
  operating_status=constants.OFFLINE,
3080
3380
  enabled=True)
3381
+ self.session.commit()
3081
3382
  self.lb_repo.test_and_set_provisioning_status(
3082
3383
  self.session, lb_id, constants.PENDING_UPDATE)
3384
+ self.session.commit()
3083
3385
  lb = self.lb_repo.get(self.session, id=lb_id)
3084
3386
  self.assertEqual(constants.PENDING_UPDATE, lb.provisioning_status)
3085
3387
 
@@ -3089,17 +3391,44 @@ class LoadBalancerRepositoryTest(BaseRepositoryTest):
3089
3391
  provisioning_status=constants.ERROR,
3090
3392
  operating_status=constants.OFFLINE,
3091
3393
  enabled=True)
3394
+ self.session.commit()
3092
3395
  self.lb_repo.test_and_set_provisioning_status(
3093
3396
  self.session, lb_id, constants.PENDING_DELETE)
3397
+ self.session.commit()
3094
3398
  lb = self.lb_repo.get(self.session, id=lb_id)
3095
3399
  self.assertEqual(constants.PENDING_DELETE, lb.provisioning_status)
3096
3400
 
3401
+ def test_test_and_set_provisioning_status_concurrent(self):
3402
+ lb_id = uuidutils.generate_uuid()
3403
+ self.lb_repo.create(self.session, id=lb_id,
3404
+ provisioning_status=constants.ACTIVE,
3405
+ operating_status=constants.ONLINE,
3406
+ enabled=True)
3407
+ self.session.commit()
3408
+
3409
+ # Create a concurrent session
3410
+ session2 = self._get_db_engine_session()[1]
3411
+
3412
+ # Load LB into session2's identity map
3413
+ session2.query(db_models.LoadBalancer).filter_by(
3414
+ id=lb_id).one()
3415
+
3416
+ # Update provisioning status in lock_session1
3417
+ self.lb_repo.test_and_set_provisioning_status(
3418
+ self.session, lb_id, constants.PENDING_UPDATE)
3419
+ self.session.commit()
3420
+
3421
+ # Assert concurrent updates are rejected
3422
+ self.assertFalse(self.lb_repo.test_and_set_provisioning_status(
3423
+ self.session, lb_id, constants.PENDING_UPDATE))
3424
+
3097
3425
  def test_set_status_for_failover_immutable(self):
3098
3426
  lb_id = uuidutils.generate_uuid()
3099
3427
  self.lb_repo.create(self.session, id=lb_id,
3100
3428
  provisioning_status=constants.PENDING_CREATE,
3101
3429
  operating_status=constants.OFFLINE,
3102
3430
  enabled=True)
3431
+ self.session.commit()
3103
3432
  self.assertFalse(self.lb_repo.set_status_for_failover(
3104
3433
  self.session, lb_id, constants.PENDING_UPDATE))
3105
3434
  lb = self.lb_repo.get(self.session, id=lb_id)
@@ -3111,6 +3440,7 @@ class LoadBalancerRepositoryTest(BaseRepositoryTest):
3111
3440
  provisioning_status=constants.PENDING_CREATE,
3112
3441
  operating_status=constants.OFFLINE,
3113
3442
  enabled=True)
3443
+ self.session.commit()
3114
3444
  self.assertRaises(exceptions.ImmutableObject,
3115
3445
  self.lb_repo.set_status_for_failover,
3116
3446
  self.session, lb_id,
@@ -3125,8 +3455,10 @@ class LoadBalancerRepositoryTest(BaseRepositoryTest):
3125
3455
  provisioning_status=constants.ACTIVE,
3126
3456
  operating_status=constants.OFFLINE,
3127
3457
  enabled=True)
3458
+ self.session.commit()
3128
3459
  self.lb_repo.set_status_for_failover(
3129
3460
  self.session, lb_id, constants.PENDING_UPDATE)
3461
+ self.session.commit()
3130
3462
  lb = self.lb_repo.get(self.session, id=lb_id)
3131
3463
  self.assertEqual(constants.PENDING_UPDATE, lb.provisioning_status)
3132
3464
 
@@ -3136,8 +3468,10 @@ class LoadBalancerRepositoryTest(BaseRepositoryTest):
3136
3468
  provisioning_status=constants.ERROR,
3137
3469
  operating_status=constants.OFFLINE,
3138
3470
  enabled=True)
3471
+ self.session.commit()
3139
3472
  self.lb_repo.set_status_for_failover(
3140
3473
  self.session, lb_id, constants.PENDING_UPDATE)
3474
+ self.session.commit()
3141
3475
  lb = self.lb_repo.get(self.session, id=lb_id)
3142
3476
  self.assertEqual(constants.PENDING_UPDATE, lb.provisioning_status)
3143
3477
 
@@ -3279,6 +3613,7 @@ class AmphoraRepositoryTest(BaseRepositoryTest):
3279
3613
  name="lb_name", description="lb_description",
3280
3614
  provisioning_status=constants.ACTIVE,
3281
3615
  operating_status=constants.ONLINE, enabled=True)
3616
+ self.session.commit()
3282
3617
 
3283
3618
  def create_amphora(self, amphora_id, **overrides):
3284
3619
  settings = {
@@ -3294,13 +3629,17 @@ class AmphoraRepositoryTest(BaseRepositoryTest):
3294
3629
  }
3295
3630
  settings.update(overrides)
3296
3631
  amphora = self.amphora_repo.create(self.session, **settings)
3632
+ self.session.commit()
3297
3633
  return amphora
3298
3634
 
3299
3635
  def test_get(self):
3300
3636
  amphora = self.create_amphora(self.FAKE_UUID_1)
3301
3637
  new_amphora = self.amphora_repo.get(self.session, id=amphora.id)
3302
3638
  self.assertIsInstance(new_amphora, data_models.Amphora)
3303
- self.assertEqual(amphora, new_amphora)
3639
+ self.assertEqual(amphora.id, new_amphora.id)
3640
+ self.assertEqual(amphora.load_balancer_id,
3641
+ new_amphora.load_balancer_id)
3642
+ self.assertEqual(amphora.compute_id, new_amphora.compute_id)
3304
3643
 
3305
3644
  def test_count(self):
3306
3645
  comp_id = uuidutils.generate_uuid()
@@ -3361,7 +3700,9 @@ class AmphoraRepositoryTest(BaseRepositoryTest):
3361
3700
  def test_delete_amphora_with_load_balancer(self):
3362
3701
  amphora = self.create_amphora(self.FAKE_UUID_1)
3363
3702
  self.amphora_repo.associate(self.session, self.lb.id, amphora.id)
3703
+ self.session.commit()
3364
3704
  self.amphora_repo.delete(self.session, id=amphora.id)
3705
+ self.session.commit()
3365
3706
  self.assertIsNone(self.amphora_repo.get(self.session, id=amphora.id))
3366
3707
  new_lb = self.lb_repo.get(self.session, id=self.lb.id)
3367
3708
  self.assertEqual(0, len(new_lb.amphorae))
@@ -3391,6 +3732,7 @@ class AmphoraRepositoryTest(BaseRepositoryTest):
3391
3732
  self.skipTest("No idea how this should work yet")
3392
3733
  amphora = self.create_amphora(self.FAKE_UUID_1)
3393
3734
  self.amphora_repo.associate(self.session, self.lb.id, amphora.id)
3735
+ self.session.commit()
3394
3736
  lb = self.amphora_repo.get_lb_for_amphora(self.session, amphora.id)
3395
3737
  self.assertIsNotNone(lb)
3396
3738
  self.assertEqual(self.lb, lb)
@@ -3456,6 +3798,7 @@ class AmphoraRepositoryTest(BaseRepositoryTest):
3456
3798
  amphora2 = self.create_amphora(self.FAKE_UUID_3)
3457
3799
  self.amphora_repo.associate(self.session, self.lb.id, amphora1.id)
3458
3800
  self.amphora_repo.associate(self.session, self.lb.id, amphora2.id)
3801
+ self.session.commit()
3459
3802
 
3460
3803
  lb_ref = {'enabled': True, 'id': self.lb.id,
3461
3804
  'operating_status': constants.ONLINE,
@@ -3473,6 +3816,7 @@ class AmphoraRepositoryTest(BaseRepositoryTest):
3473
3816
  lb_algorithm=constants.LB_ALGORITHM_ROUND_ROBIN,
3474
3817
  provisioning_status=constants.ACTIVE,
3475
3818
  operating_status=constants.ONLINE, enabled=True)
3819
+ self.session.commit()
3476
3820
 
3477
3821
  pool_ref = {pool.id: {'members': {},
3478
3822
  'operating_status': constants.ONLINE}}
@@ -3509,6 +3853,7 @@ class AmphoraRepositoryTest(BaseRepositoryTest):
3509
3853
  provisioning_status=constants.ACTIVE,
3510
3854
  operating_status=constants.ONLINE,
3511
3855
  backup=False)
3856
+ self.session.commit()
3512
3857
 
3513
3858
  member2 = self.member_repo.create(self.session, id=self.FAKE_UUID_7,
3514
3859
  project_id=self.FAKE_UUID_2,
@@ -3518,6 +3863,7 @@ class AmphoraRepositoryTest(BaseRepositoryTest):
3518
3863
  provisioning_status=constants.ACTIVE,
3519
3864
  operating_status=constants.OFFLINE,
3520
3865
  backup=False)
3866
+ self.session.commit()
3521
3867
 
3522
3868
  member_ref = {member1.id: {'operating_status': constants.ONLINE},
3523
3869
  member2.id: {'operating_status': constants.OFFLINE}}
@@ -4081,11 +4427,13 @@ class L7PolicyRepositoryTest(BaseRepositoryTest):
4081
4427
  uuidutils.generate_uuid(), listener.id, 1,
4082
4428
  action=constants.L7POLICY_ACTION_REDIRECT_TO_URL,
4083
4429
  redirect_url="http://www.example.com/")
4430
+ self.session.commit()
4084
4431
  new_l7policy = self.l7policy_repo.get(self.session, id=l7policy.id)
4085
4432
  self.assertIsNone(new_l7policy.redirect_pool_id)
4086
4433
  self.l7policy_repo.update(
4087
4434
  self.session, id=l7policy.id,
4088
4435
  redirect_pool_id=pool.id)
4436
+ self.session.commit()
4089
4437
  new_l7policy = self.l7policy_repo.get(self.session, id=l7policy.id)
4090
4438
  self.assertEqual(pool.id, new_l7policy.redirect_pool.id)
4091
4439
  self.assertEqual(constants.L7POLICY_ACTION_REDIRECT_TO_POOL,
@@ -4098,6 +4446,7 @@ class L7PolicyRepositoryTest(BaseRepositoryTest):
4098
4446
  uuidutils.generate_uuid(), listener.id, 1,
4099
4447
  action=constants.L7POLICY_ACTION_REDIRECT_TO_URL,
4100
4448
  redirect_url="http://www.example.com/")
4449
+ self.session.commit()
4101
4450
  new_l7policy = self.l7policy_repo.get(self.session, id=l7policy.id)
4102
4451
  self.assertIsNone(new_l7policy.redirect_pool_id)
4103
4452
  self.assertEqual(constants.L7POLICY_ACTION_REDIRECT_TO_URL,
@@ -4118,6 +4467,7 @@ class L7PolicyRepositoryTest(BaseRepositoryTest):
4118
4467
  uuidutils.generate_uuid(), listener.id, 1,
4119
4468
  action=constants.L7POLICY_ACTION_REDIRECT_TO_POOL,
4120
4469
  redirect_pool_id=pool.id)
4470
+ self.session.commit()
4121
4471
  new_l7policy = self.l7policy_repo.get(self.session, id=l7policy.id)
4122
4472
  self.assertIsNone(new_l7policy.redirect_url)
4123
4473
  self.l7policy_repo.update(
@@ -4683,7 +5033,8 @@ class FlavorProfileRepositoryTest(BaseRepositoryTest):
4683
5033
  fp1 = self.create_flavor_profile(fp_id=self.FAKE_UUID_1)
4684
5034
  fp2 = self.create_flavor_profile(fp_id=self.FAKE_UUID_2)
4685
5035
  fp_list, _ = self.flavor_profile_repo.get_all(
4686
- self.session, query_options=defer('name'))
5036
+ self.session,
5037
+ query_options=defer(db_models.FlavorProfile.name))
4687
5038
  self.assertIsInstance(fp_list, list)
4688
5039
  self.assertEqual(2, len(fp_list))
4689
5040
  self.assertEqual(fp1, fp_list[0])
@@ -4711,6 +5062,7 @@ class FlavorRepositoryTest(BaseRepositoryTest):
4711
5062
  self.session, id=uuidutils.generate_uuid(),
4712
5063
  name="fp1", provider_name=self.PROVIDER_NAME,
4713
5064
  flavor_data='{"image": "ubuntu"}')
5065
+ self.session.commit()
4714
5066
  return fp
4715
5067
 
4716
5068
  def create_flavor(self, flavor_id, name):
@@ -4719,23 +5071,28 @@ class FlavorRepositoryTest(BaseRepositoryTest):
4719
5071
  self.session, id=flavor_id, name=name,
4720
5072
  flavor_profile_id=fp.id, description='test',
4721
5073
  enabled=True)
5074
+ self.session.commit()
4722
5075
  return flavor
4723
5076
 
4724
5077
  def test_get(self):
4725
5078
  flavor = self.create_flavor(flavor_id=self.FAKE_UUID_2, name='flavor')
4726
5079
  new_flavor = self.flavor_repo.get(self.session, id=flavor.id)
4727
5080
  self.assertIsInstance(new_flavor, data_models.Flavor)
4728
- self.assertEqual(flavor, new_flavor)
5081
+ self.assertEqual(flavor.id, new_flavor.id)
5082
+ self.assertEqual(flavor.name, new_flavor.name)
4729
5083
 
4730
5084
  def test_get_all(self):
4731
5085
  fl1 = self.create_flavor(flavor_id=self.FAKE_UUID_2, name='flavor1')
4732
5086
  fl2 = self.create_flavor(flavor_id=self.FAKE_UUID_3, name='flavor2')
4733
- fl_list, _ = self.flavor_repo.get_all(self.session,
4734
- query_options=defer('enabled'))
5087
+ fl_list, _ = self.flavor_repo.get_all(
5088
+ self.session,
5089
+ query_options=defer(db_models.Flavor.enabled))
4735
5090
  self.assertIsInstance(fl_list, list)
4736
5091
  self.assertEqual(2, len(fl_list))
4737
- self.assertEqual(fl1, fl_list[0])
4738
- self.assertEqual(fl2, fl_list[1])
5092
+ self.assertEqual(fl1.id, fl_list[0].id)
5093
+ self.assertEqual(fl1.name, fl_list[0].name)
5094
+ self.assertEqual(fl2.id, fl_list[1].id)
5095
+ self.assertEqual(fl2.name, fl_list[1].name)
4739
5096
 
4740
5097
  def test_create(self):
4741
5098
  fl = self.create_flavor(flavor_id=self.FAKE_UUID_2, name='fl1')