def test_update_monitor(self, mmonitor): loadbalancer = data_models.LoadBalancer(id='1') pool = data_models.Pool(id='1', loadbalancer=loadbalancer, protocol='HTTPS') monitor = data_models.HealthMonitor(id='1', pool=pool, delay=1) old_monitor = data_models.HealthMonitor(id='1', pool=pool, delay=2) mmonitor.side_effect = [monitor, old_monitor] self.mgr.update_healthmonitor(mock.Mock(), old_monitor.to_dict(), monitor.to_dict()) self.driver_mock.healthmonitor.update.assert_called_once_with( old_monitor, monitor) self.update_statuses.assert_called_once_with(monitor)
def setUp(self): super(BaseTestEdgeLbaasV2, self).setUp() self.context = context.get_admin_context() callbacks = mock.Mock() callbacks.plugin = mock.Mock() self.edge_driver = vcns_driver.VcnsDriver(callbacks) self.lbv2_driver = mock.Mock() self.core_plugin = mock.Mock() base_mgr.EdgeLoadbalancerBaseManager._lbv2_driver = self.lbv2_driver base_mgr.EdgeLoadbalancerBaseManager._core_plugin = self.core_plugin self._patch_lb_plugin(self.lbv2_driver, self._tested_entity) self.lb = lb_models.LoadBalancer(LB_ID, LB_TENANT_ID, 'lb-name', '', 'some-subnet', 'port-id', LB_VIP) self.listener = lb_models.Listener(LISTENER_ID, LB_TENANT_ID, 'l-name', '', None, LB_ID, 'HTTP', protocol_port=80, loadbalancer=self.lb) self.pool = lb_models.Pool(POOL_ID, LB_TENANT_ID, 'pool-name', '', None, 'HTTP', 'ROUND_ROBIN', listener=self.listener) self.member = lb_models.Member(MEMBER_ID, LB_TENANT_ID, POOL_ID, MEMBER_ADDRESS, 80, 1, pool=self.pool) self.hm = lb_models.HealthMonitor(HM_ID, LB_TENANT_ID, 'PING', 3, 3, 1, pool=self.pool)
def test_update_statuses_healthmonitor(self): self.update_statuses_patcher.stop() hm = data_models.HealthMonitor(id='1') pool = data_models.Pool(id='1', healthmonitor=hm) hm.pool = pool listener = data_models.Listener(id='1', default_pool=pool) lb = data_models.LoadBalancer(id='1', listeners=[listener]) listener.loadbalancer = lb pool.loadbalancer = lb self.mgr._update_statuses(hm) self.assertEqual(2, self.rpc_mock.update_status.call_count) calls = [mock.call('healthmonitor', hm.id, provisioning_status=constants.ACTIVE, operating_status=None), mock.call('loadbalancer', lb.id, provisioning_status=constants.ACTIVE, operating_status=None)] self.rpc_mock.update_status.assert_has_calls(calls) self.rpc_mock.update_status.reset_mock() self.mgr._update_statuses(hm, error=True) self.assertEqual(2, self.rpc_mock.update_status.call_count) calls = [mock.call('healthmonitor', hm.id, provisioning_status=constants.ERROR, operating_status=None), mock.call('loadbalancer', lb.id, provisioning_status=constants.ACTIVE, operating_status=None)] self.rpc_mock.update_status.assert_has_calls(calls)
def _create_fake_models(self): # This id is used for all the entities. id = 'test_id' lb = data_models.LoadBalancer(id=id) sni_container = data_models.SNI(listener_id=id) listener = data_models.Listener(id=id, loadbalancer=lb, sni_containers=[sni_container]) pool = data_models.Pool(id=id, loadbalancer=lb) member = data_models.Member(id=id, pool=pool) hm = data_models.HealthMonitor(id=id, pool=pool) l7policy = data_models.L7Policy( id=id, listener=listener, redirect_pool_id=pool.id, action=constants.L7_POLICY_ACTION_REDIRECT_TO_POOL) l7rule = data_models.L7Rule( id=id, policy=l7policy, type=constants.L7_RULE_TYPE_PATH, compare_type=constants.L7_RULE_COMPARE_TYPE_STARTS_WITH, value='/api') lb.listeners = [listener] lb.pools = [pool] listener.default_pool = pool listener.l7policies = [l7policy] l7policy.rules = [l7rule] pool.members = [member] pool.healthmonitor = hm return lb
def test_update(self): new_hm = lb_models.HealthMonitor(HM_ID, LB_TENANT_ID, 'PING', 3, 3, 3, pool=self.pool) with mock.patch.object(nsxv_db, 'get_nsxv_lbaas_loadbalancer_binding' ) as mock_get_lb_binding, \ mock.patch.object(nsxv_db, 'get_nsxv_lbaas_pool_binding' ) as mock_get_pool_binding, \ mock.patch.object(nsxv_db, 'get_nsxv_lbaas_monitor_binding' ) as mock_get_mon_binding, \ mock.patch.object(self.edge_driver.vcns, 'update_health_monitor' ) as mock_upd_hm: mock_get_lb_binding.return_value = LB_BINDING mock_get_pool_binding.return_value = POOL_BINDING mock_get_mon_binding.return_value = HM_BINDING self.edge_driver.healthmonitor.update( self.context, self.hm, new_hm) edge_hm_def = EDGE_HM_DEF.copy() edge_hm_def['maxRetries'] = 3 mock_upd_hm.assert_called_with(LB_EDGE_ID, EDGE_HM_ID, edge_hm_def) mock_successful_completion = ( self.lbv2_driver.health_monitor.successful_completion) mock_successful_completion.assert_called_with(self.context, new_hm)
def test_update(self): new_hm = lb_models.HealthMonitor(HM_ID, LB_TENANT_ID, 'PING', 3, 3, 3, pool=self.pool) self.edge_driver.healthmonitor.update(self.context, self.hm, new_hm) mock_successful_completion = ( self.lbv2_driver.health_monitor.successful_completion) mock_successful_completion.assert_called_with(self.context, new_hm)
def test_delete_monitor(self, mmonitor): loadbalancer = data_models.LoadBalancer(id='1') pool = data_models.Pool(id='1', loadbalancer=loadbalancer, protocol='HTTPS') monitor = data_models.HealthMonitor(id='1', pool=pool) mmonitor.return_value = monitor self.mgr.delete_healthmonitor(mock.Mock(), monitor.to_dict()) self.driver_mock.healthmonitor.delete.assert_called_once_with(monitor)
def test_create_monitor_failed(self, mmonitor): loadbalancer = data_models.LoadBalancer(id='1') pool = data_models.Pool(id='1', loadbalancer=loadbalancer, protocol='HTTPS') monitor = data_models.HealthMonitor(id='1', pool=pool) mmonitor.return_value = monitor self.driver_mock.healthmonitor.create.side_effect = Exception self.mgr.create_healthmonitor(mock.Mock(), monitor.to_dict()) self.driver_mock.healthmonitor.create.assert_called_once_with(monitor) self.update_statuses.assert_called_once_with(monitor, error=True)
def setUp(self): super(BaseTestEdgeLbaasV2, self).setUp() self.context = context.get_admin_context() callbacks = mock.Mock() callbacks.plugin = mock.Mock() self.edge_driver = vcns_driver.VcnsDriver(callbacks) self.lbv2_driver = mock.Mock() self.core_plugin = mock.Mock() base_mgr.LoadbalancerBaseManager._lbv2_driver = self.lbv2_driver base_mgr.LoadbalancerBaseManager._core_plugin = self.core_plugin self._patch_lb_plugin(self.lbv2_driver, self._tested_entity) self.lb = lb_models.LoadBalancer(LB_ID, LB_TENANT_ID, 'lb-name', '', 'some-subnet', 'port-id', LB_VIP) self.listener = lb_models.Listener(LISTENER_ID, LB_TENANT_ID, 'l-name', '', None, LB_ID, 'HTTP', protocol_port=80, loadbalancer=self.lb) self.sess_persist = lb_models.SessionPersistence(type='HTTP_COOKIE') self.pool = lb_models.Pool(POOL_ID, LB_TENANT_ID, 'pool-name', '', None, 'HTTP', 'ROUND_ROBIN', loadbalancer_id=LB_ID, listener=self.listener, listeners=[self.listener], loadbalancer=self.lb, session_persistence=self.sess_persist) self.listener.default_pool = self.pool self.member = lb_models.Member(MEMBER_ID, LB_TENANT_ID, POOL_ID, MEMBER_ADDRESS, 80, 1, pool=self.pool) self.hm = lb_models.HealthMonitor(HM_ID, LB_TENANT_ID, 'PING', 3, 3, 1, pool=self.pool) self.l7policy = lb_models.L7Policy(L7POL_ID, LB_TENANT_ID, name='policy-test', description='policy-desc', listener_id=LISTENER_ID, action='REJECT', listener=self.listener, position=1) self.l7rule1 = lb_models.L7Rule(L7RULE_ID1, LB_TENANT_ID, l7policy_id=L7POL_ID, compare_type='EQUAL_TO', invert=False, type='HEADER', key='key1', value='val1', policy=self.l7policy) self.l7rule2 = lb_models.L7Rule(L7RULE_ID2, LB_TENANT_ID, l7policy_id=L7POL_ID, compare_type='STARTS_WITH', invert=True, type='PATH', value='/images', policy=self.l7policy)
def _create_fake_models(self): id = 'name-001' lb = data_models.LoadBalancer(id=id) listener = data_models.Listener(id=id, loadbalancer=lb) pool = data_models.Pool(id=id, listener=listener) member = data_models.Member(id=id, pool=pool) hm = data_models.HealthMonitor(id=id, pool=pool) lb.listeners = [listener] listener.default_pool = pool pool.members = [member] pool.healthmonitor = hm return lb
def setUp(self): super(BaseTestEdgeLbaasV2, self).setUp() self.context = context.get_admin_context() self.edge_driver = lb_driver_v2.EdgeLoadbalancerDriverV2() self.lbv2_driver = mock.Mock() self.core_plugin = mock.Mock() base_mgr.LoadbalancerBaseManager._lbv2_driver = self.lbv2_driver base_mgr.LoadbalancerBaseManager._core_plugin = self.core_plugin self._patch_lb_plugin(self.lbv2_driver, self._tested_entity) self._patch_nsxlib_lb_clients(self.core_plugin) self.lb = lb_models.LoadBalancer(LB_ID, LB_TENANT_ID, 'lb1', '', 'some-subnet', 'port-id', LB_VIP) self.listener = lb_models.Listener(LISTENER_ID, LB_TENANT_ID, 'listener1', 'Dummy', None, LB_ID, 'HTTP', protocol_port=80, loadbalancer=self.lb) self.https_listener = lb_models.Listener( LISTENER_ID, LB_TENANT_ID, 'listener1', '', None, LB_ID, 'HTTPS', protocol_port=443, loadbalancer=self.lb) self.terminated_https_listener = lb_models.Listener( LISTENER_ID, LB_TENANT_ID, 'listener1', '', None, LB_ID, 'TERMINATED_HTTPS', protocol_port=443, loadbalancer=self.lb) self.pool = lb_models.Pool(POOL_ID, LB_TENANT_ID, 'pool1', '', None, 'HTTP', 'ROUND_ROBIN', loadbalancer_id=LB_ID, listener=self.listener, listeners=[self.listener], loadbalancer=self.lb) self.member = lb_models.Member(MEMBER_ID, LB_TENANT_ID, POOL_ID, MEMBER_ADDRESS, 80, 1, pool=self.pool, name='member1') self.hm = lb_models.HealthMonitor(HM_ID, LB_TENANT_ID, 'PING', 3, 3, 1, pool=self.pool, name='hm1') self.l7policy = lb_models.L7Policy(L7POLICY_ID, LB_TENANT_ID, name='policy-test', description='policy-desc', listener_id=LISTENER_ID, action='REDIRECT_TO_POOL', redirect_pool_id=POOL_ID, listener=self.listener, position=1) self.l7rule = lb_models.L7Rule(L7RULE_ID, LB_TENANT_ID, l7policy_id=L7POLICY_ID, compare_type='EQUAL_TO', invert=False, type='HEADER', key='key1', value='val1', policy=self.l7policy)
def _create_fake_models(self): # This id is used for all the entities. id = 'test_id' lb = data_models.LoadBalancer(id=id) sni_container = data_models.SNI(listener_id=id) listener = data_models.Listener(id=id, loadbalancer=lb, sni_containers=[sni_container]) pool = data_models.Pool(id=id, listener=listener) member = data_models.Member(id=id, pool=pool) hm = data_models.HealthMonitor(id=id, pool=pool) lb.listeners = [listener] listener.default_pool = pool pool.members = [member] pool.healthmonitor = hm return lb
def _create_fake_models(self, children=True, graph=False): # This id is used for all the entities. id = 'test_id' lb = data_models.LoadBalancer(id=id) if not children: return lb sni_container = data_models.SNI(listener_id=id) listener = data_models.Listener(id=id, loadbalancer=lb, sni_containers=[sni_container]) pool = data_models.Pool(id=id, loadbalancer=lb) member = data_models.Member(id=id, pool=pool) hm = data_models.HealthMonitor(id=id, pool=pool) sp = data_models.SessionPersistence(pool_id=pool.id, pool=pool) l7policy = data_models.L7Policy( id=id, listener=listener, listener_id=listener.id, action=constants.L7_POLICY_ACTION_REDIRECT_TO_POOL) l7rule = data_models.L7Rule( id=id, policy=l7policy, type=constants.L7_RULE_TYPE_PATH, compare_type=constants.L7_RULE_COMPARE_TYPE_STARTS_WITH, value='/api') lb.listeners = [listener] lb.pools = [pool] if graph: r_pool = data_models.Pool(id=id, loadbalancer=lb) r_member = data_models.Member(id=id, pool=r_pool) r_pool.members = [r_member] l7policy.redirect_pool = r_pool l7policy.redirect_pool_id = r_pool.id lb.pools.append(r_pool) else: l7policy.redirect_pool = pool l7policy.redirect_pool_id = pool.id listener.default_pool = pool listener.l7_policies = [l7policy] l7policy.rules = [l7rule] pool.members = [member] pool.session_persistence = sp pool.healthmonitor = hm return lb
def _get_faked_model(obj): lb = data_models.LoadBalancer(id='test_lb') if obj == 'lbaas/loadbalancer': return lb pool = data_models.Pool(id='test_pool_id', loadbalancer=lb) if obj == 'lbaas/pool': return pool listener = data_models.Listener(id='test_listener_id', loadbalancer=lb) if obj == 'lbaas/listener': return listener member = data_models.Member(id='test_member_id', pool=pool) if obj == 'lbaas/member': return member hm = data_models.HealthMonitor(id='test_health_monitor_id', pool=pool) return hm
def test_update(self): with mock.patch.object(self.monitor_client, 'update' ) as mock_update_monitor, \ mock.patch.object(nsx_db, 'get_nsx_lbaas_monitor_binding' ) as mock_get_monitor_binding: mock_get_monitor_binding.return_value = HM_BINDING new_hm = lb_models.HealthMonitor( HM_ID, LB_TENANT_ID, 'PING', 5, 5, 5, pool=self.pool, name='new_name') self.edge_driver.healthmonitor.update( self.context, self.hm, new_hm) mock_update_monitor.assert_called_with( LB_MONITOR_ID, display_name=mock.ANY, fall_count=5, interval=5, timeout=5, resource_type='LbIcmpMonitor') mock_successful_completion = ( self.lbv2_driver.health_monitor.successful_completion) mock_successful_completion.assert_called_with(self.context, new_hm, delete=False)
def test_update(self): old_hm = data_models.HealthMonitor(id=self.in_hm.id, timeout=2) self.hm_manager.update(old_hm, self.in_hm) self.refresh.assert_called_once_with(self.in_lb)
def setUp(self): super(BaseTestHealthMonitorManager, self).setUp() self.in_hm = data_models.HealthMonitor(id='hm1') self.in_pool.healthmonitor = self.in_hm self.in_hm.pool = self.in_pool