From 091cb5a148bfa9a72805f8342ccdc18e232b9f8a Mon Sep 17 00:00:00 2001 From: Gary Kotton Date: Mon, 22 May 2017 05:12:29 -0700 Subject: [PATCH] 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 --- vmware_nsx/services/lbaas/nsx_v/v2/pool_mgr.py | 6 ++++++ .../tests/unit/nsx_v/test_edge_loadbalancer_driver_v2.py | 9 +++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/vmware_nsx/services/lbaas/nsx_v/v2/pool_mgr.py b/vmware_nsx/services/lbaas/nsx_v/v2/pool_mgr.py index 581e731abe..3c74443583 100644 --- a/vmware_nsx/services/lbaas/nsx_v/v2/pool_mgr.py +++ b/vmware_nsx/services/lbaas/nsx_v/v2/pool_mgr.py @@ -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) diff --git a/vmware_nsx/tests/unit/nsx_v/test_edge_loadbalancer_driver_v2.py b/vmware_nsx/tests/unit/nsx_v/test_edge_loadbalancer_driver_v2.py index 6b9abf91b8..2c0769d2b2 100644 --- a/vmware_nsx/tests/unit/nsx_v/test_edge_loadbalancer_driver_v2.py +++ b/vmware_nsx/tests/unit/nsx_v/test_edge_loadbalancer_driver_v2.py @@ -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 = (