def test_lbmgr_delete(happy_path_driver): mock_driver, mock_ctx = happy_path_driver lb_mgr = dv2.LoadBalancerManager(mock_driver) fake_lb = FakeLB() lb_mgr.delete(mock_ctx, fake_lb) assert mock_driver.agent_rpc.delete_loadbalancer.call_args == \ mock.call(mock_ctx, fake_lb.to_api_dict(), {}, 'test_agent')
def test_lbmgr_create(): mock_driver = mock.MagicMock(name='mock_driver') mock_driver.scheduler.schedule.return_value = {'host': 'test_agent'} mock_driver.service_builder.build.return_value = {} lb_mgr = dv2.LoadBalancerManager(mock_driver) mock_ctx = mock.MagicMock(name='mock_context') fake_lb = FakeLB() lb_mgr.create(mock_ctx, fake_lb) assert mock_driver.agent_rpc.create_loadbalancer.call_args == \ mock.call(mock_ctx, fake_lb.to_api_dict(), {}, 'test_agent')
def test_lbmgr_create_no_eligible_agent(mock_log): mock_driver = mock.MagicMock(name='mock_driver') mock_driver.scheduler.schedule.side_effect = FakeNoEligibleAgentExc lb_mgr = dv2.LoadBalancerManager(mock_driver) mock_ctx = mock.MagicMock(name='mock_context') lb_mgr.create(mock_ctx, FakeLB()) assert mock_log.error.call_args == mock.call( 'Exception: loadbalancer create: test exception') assert mock_driver.plugin.db.update_status.call_args == \ mock.call(mock_ctx, models.LoadBalancer, 'test_lb_id', 'ERROR')
def test_lbmgr_delete_exception(mock_log): mock_driver = mock.MagicMock(name='mock_driver') mock_driver.scheduler.schedule.return_value = {} lb_mgr = dv2.LoadBalancerManager(mock_driver) mock_ctx = mock.MagicMock(name='mock_context') fake_lb = FakeLB() with pytest.raises(KeyError) as ex: lb_mgr.delete(mock_ctx, fake_lb) assert 'host' == ex.value.message assert mock_log.error.call_args == mock.call( "Exception: loadbalancer delete: 'host'")
def test_lbmgr_create_mismatched_tenanat_exception(mock_log): mock_driver = mock.MagicMock(name='mock_driver') mock_driver.scheduler.schedule.side_effect = f5_exc.F5MismatchedTenants lb_mgr = dv2.LoadBalancerManager(mock_driver) mock_ctx = mock.MagicMock(name='mock_context') lb_mgr.create(mock_ctx, FakeLB()) assert mock_log.error.call_args == mock.call( 'Exception: loadbalancer create: Tenant Id of network and ' 'loadbalancer mismatched') assert mock_driver.plugin.db.update_status.call_args == \ mock.call(mock_ctx, models.LoadBalancer, 'test_lb_id', 'ERROR')
def test_lbmgr_update_exception(mock_log): mock_driver = mock.MagicMock(name='mock_driver') mock_driver.scheduler.schedule.return_value = {} lb_mgr = dv2.LoadBalancerManager(mock_driver) mock_ctx = mock.MagicMock(name='mock_context') old_lb = FakeLB(id='old_lb') new_lb = FakeLB(id='new_lb') with pytest.raises(KeyError) as ex: lb_mgr.update(mock_ctx, old_lb, new_lb) assert 'host' == ex.value.message assert mock_log.error.call_args == mock.call( 'Exception: loadbalancer update: host')
def test_lbmgr_delete_no_eligible_agent_exception(mock_log): mock_driver = mock.MagicMock(name='mock_driver') mock_driver.agent_rpc.delete_loadbalancer.side_effect = \ lbaas_agentschedulerv2.NoEligibleLbaasAgent(loadbalancer_id='test_lb') lb_mgr = dv2.LoadBalancerManager(mock_driver) mock_ctx = mock.MagicMock(name='mock_context') fake_lb = FakeLB(id='test_lb') lb_mgr.delete(mock_ctx, fake_lb) assert mock_log.error.call_args == mock.call( 'Exception: loadbalancer delete: No eligible agent found for ' 'loadbalancer test_lb.') assert mock_driver.plugin.db.delete_loadbalancer.call_args == \ mock.call(mock_ctx, 'test_lb')
def test_lbmgr_create_mismatched_tenant_exception(mock_log): mock_driver = mock.MagicMock(name='mock_driver') mock_driver.scheduler.schedule.side_effect = f5_exc.F5MismatchedTenants lb_mgr = dv2.LoadBalancerManager(mock_driver) mock_ctx = mock.MagicMock(name='mock_context') with pytest.raises(f5_exc.F5MismatchedTenants) as ex: lb_mgr.create(mock_ctx, FakeLB()) assert 'Tenant Id of network and loadbalancer mismatched' in \ ex.value.message assert mock_log.error.call_args == mock.call( 'Exception: loadbalancer create: Tenant Id of network and ' 'loadbalancer mismatched') assert mock_driver.plugin.db.update_status.call_args is None
def test_lbmgr_update_no_eligible_agent_exception(mock_log): mock_driver = mock.MagicMock(name='mock_driver') mock_driver.agent_rpc.update_loadbalancer.side_effect = \ lbaas_agentschedulerv2.NoEligibleLbaasAgent(loadbalancer_id='new_lb') lb_mgr = dv2.LoadBalancerManager(mock_driver) mock_ctx = mock.MagicMock(name='mock_context') old_lb = FakeLB(id='old_lb') new_lb = FakeLB(id='new_lb') lb_mgr.update(mock_ctx, old_lb, new_lb) assert mock_log.error.call_args == mock.call( 'Exception: loadbalancer update: No eligible agent found for ' 'loadbalancer new_lb.') assert mock_driver._handle_driver_error.call_args == \ mock.call(mock_ctx, models.LoadBalancer, 'new_lb', 'ERROR')