NSX|V: ensure that monitor ID is persisted with LB alg update

Ensures that the monitor ID is persisted. The existing edge will be
read to get the configured monitoring ID and that will be used.

Change-Id: I6f7951520faa42380087f7d3f421ebff595782ff
This commit is contained in:
Gary Kotton 2017-05-22 05:12:29 -07:00
parent 8fa99768c3
commit 091cb5a148
2 changed files with 13 additions and 2 deletions

View File

@ -116,6 +116,12 @@ class EdgePoolManager(base_mgr.EdgeLoadbalancerBaseManager):
try:
with locking.LockManager.get_lock(edge_id):
# get the configured monitor-id
org_edge_pool = self.vcns.get_pool(edge_id, edge_pool_id)[1]
monitor_id = org_edge_pool.get('monitorId')
if monitor_id:
edge_pool['monitorId'] = monitor_id
self.vcns.update_pool(edge_id, edge_pool_id, edge_pool)
self.lbv2_driver.pool.successful_completion(context, new_pool)

View File

@ -401,14 +401,19 @@ class TestEdgeLbaasV2Pool(BaseTestEdgeLbaasV2):
mock.patch.object(nsxv_db, 'get_nsxv_lbaas_pool_binding'
) as mock_get_pool_binding,\
mock.patch.object(self.edge_driver.vcns, 'update_pool'
) as mock_upd_pool:
) as mock_upd_pool,\
mock.patch.object(self.edge_driver.vcns, 'get_pool'
) as mock_get_pool:
mock_get_lb_binding.return_value = LB_BINDING
mock_get_pool_binding.return_value = POOL_BINDING
fake_edge = EDGE_POOL_DEF.copy()
fake_edge['monitorId'] = 'monitor-7'
mock_get_pool.return_value = (None, fake_edge)
self.edge_driver.pool.update(self.context, self.pool, new_pool)
edge_pool_def = EDGE_POOL_DEF.copy()
edge_pool_def['algorithm'] = 'leastconn'
edge_pool_def['monitorId'] = 'monitor-7'
mock_upd_pool.assert_called_with(
LB_EDGE_ID, EDGE_POOL_ID, edge_pool_def)
mock_successful_completion = (