Example #1
0
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')
Example #2
0
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')
Example #3
0
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')
Example #4
0
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'")
Example #5
0
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')
Example #6
0
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')
Example #7
0
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')
Example #8
0
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
Example #9
0
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')