Updated "create_pool" method in plugin

Once the pool object is created in the DB and the listeners
are updated with the pool information, the updated listeners
are retrieved and populated into the pool object.

The DB method to create the pool now flushes the context to
retrieve an updated pool DB object at the end of the method,
instead of retrieving again the same object from the DB.

This is needed to make solve the Queens backport of
I32328c5206b9cd6fb8d8764c079f22b6ea8bfa9e.

Story: 2001962

Change-Id: Icf43952f6e5c5004a5c4d8d541b6efcb5d3ec50c
This commit is contained in:
Rodolfo Alonso Hernandez 2018-10-11 12:04:39 +01:00
parent 111d0b2852
commit c672b0d567
2 changed files with 5 additions and 5 deletions

View File

@ -664,8 +664,8 @@ class LoadBalancerPluginDbv2(base_db.CommonDbMixin,
pool_db.session_persistence = s_p
context.session.add(pool_db)
context.session.refresh(pool_db.loadbalancer)
return self.get_pool(context, pool_db.id)
context.session.flush()
return data_models.Pool.from_sqlalchemy_model(pool_db)
def update_pool(self, context, id, pool):
with context.session.begin(subtransactions=True):

View File

@ -710,9 +710,9 @@ class LoadBalancerPluginv2(loadbalancerv2.LoadBalancerPluginBaseV2,
self.db.update_loadbalancer_provisioning_status(
context, db_pool.loadbalancer_id)
raise exc
# Reload the pool from the DB to re-populate pool.listeners
# before calling the driver
db_pool = self.db.get_pool(context, db_pool.id)
db_pool.listeners = self.db.get_listeners(
context, filters={'default_pool_id': [db_pool.id]})
driver = self._get_driver_for_loadbalancer(
context, db_pool.loadbalancer_id)
self._call_driver_operation(context, driver.pool.create, db_pool)