Lucas H. Xu 6832082aa5 Use lb_id (load balancer) in Octavia services/scenario
As suggested by Andrey, we should have a consistent format
for the arguments in the octavia services.

It makes sense to use just the id of the resource rather than
the entire dict. This patch fixes the load balancer resource

Change-Id: If642649c078e1182807582c287141509579b2d21
Signed-off-by: Lucas H. Xu <hanxu@redhat.com>
2019-07-17 18:36:02 +00:00

459 lines
20 KiB
Python

# Copyright 2018: Red Hat Inc.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import fixtures
import mock
from rally.common import cfg
from rally import exceptions
from rally_openstack.services.loadbalancer import octavia
from tests.unit import test
BASE_PATH = "rally_openstack.services.loadbalancer"
CONF = cfg.CONF
class LoadBalancerServiceTestCase(test.TestCase):
def setUp(self):
super(LoadBalancerServiceTestCase, self).setUp()
self.clients = mock.MagicMock()
self.name_generator = mock.MagicMock()
self.service = octavia.Octavia(self.clients,
name_generator=self.name_generator)
self.mock_wait_for_status = fixtures.MockPatch(
"rally.task.utils.wait_for_status")
self.useFixture(self.mock_wait_for_status)
def _get_context(self):
context = test.get_test_context()
context.update({
"user": {
"id": "fake_user",
"tenant_id": "fake_tenant",
"credential": mock.MagicMock()
},
"tenant": {"id": "fake_tenant",
"networks": [{"id": "fake_net",
"subnets": ["fake_subnet"]}]}})
return context
def atomic_actions(self):
return self.service._atomic_actions
def test_load_balancer_list(self):
self.service.load_balancer_list(),
self.service._clients.octavia().load_balancer_list \
.assert_called_once_with()
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.load_balancer_list")
def test_load_balancer_show(self):
lb = {"id": "loadbalancer-id"}
self.service.load_balancer_show(lb["id"])
self.service._clients.octavia().load_balancer_show \
.assert_called_once_with(lb["id"])
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.load_balancer_show")
def test_load_balancer_show_fail_404(self):
fake_lb = {"id": "fake_lb"}
ex = Exception()
ex.code = 404
self.service._clients.octavia().load_balancer_show.side_effect = ex
self.assertRaises(
exceptions.GetResourceNotFound,
self.service.load_balancer_show, fake_lb["id"])
def test_load_balancer_show_resource_fail(self):
fake_lb = {"id": "fake_lb"}
ex = Exception()
self.service._clients.octavia().load_balancer_show.side_effect = ex
self.assertRaises(
exceptions.GetResourceFailure,
self.service.load_balancer_show, fake_lb["id"])
def test_load_balancer_create(self):
self.service.generate_random_name = mock.MagicMock(
return_value="lb")
self.service.load_balancer_create("subnet_id")
self.service._clients.octavia().load_balancer_create \
.assert_called_once_with(json={
"loadbalancer": {"name": "lb",
"admin_state_up": True,
"vip_qos_policy_id": None,
"listeners": None,
"provider": None,
"vip_subnet_id": "subnet_id",
"description": None}})
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.load_balancer_create")
def test_load_balancer_delete(self):
self.service.load_balancer_delete("lb-id")
self.service._clients.octavia().load_balancer_delete \
.assert_called_once_with("lb-id", cascade=False)
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.load_balancer_delete")
def test_load_balancer_set(self):
self.service.generate_random_name = mock.MagicMock(
return_value="new_lb")
lb_update_args = {"name": "new_lb_name"}
self.service.load_balancer_set(
"lb-id", lb_update_args=lb_update_args)
self.service._clients.octavia().load_balancer_set \
.assert_called_once_with(
"lb-id", json={"loadbalancer": {"name": "new_lb_name"}})
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.load_balancer_set")
def test_load_balancer_stats_show(self):
lb = {"id": "new_lb"}
self.assertEqual(
self.service.load_balancer_stats_show(lb, kwargs={}),
self.service._clients.octavia()
.load_balancer_stats_show.return_value)
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.load_balancer_stats_show")
def test_load_balancer_failover(self):
lb = {"id": "new_lb"}
self.service.load_balancer_failover(lb["id"])
self.service._clients.octavia().load_balancer_failover \
.assert_called_once_with(lb["id"])
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.load_balancer_failover")
def test_listener_list(self):
self.service.listener_list()
self.service._clients.octavia().listener_list \
.assert_called_once_with()
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.listener_list")
def test_listener_show(self):
self.service.listener_show(listener_id="listener_id")
self.service._clients.octavia().listener_show \
.assert_called_once_with("listener_id")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.listener_show")
def test_listener_create(self):
self.service.listener_create()
self.service._clients.octavia().listener_create \
.assert_called_once_with()
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.listener_create")
def test_listener_delete(self):
self.service.listener_delete(listener_id="listener_id")
self.service._clients.octavia().listener_delete \
.assert_called_once_with("listener_id")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.listener_delete")
def test_listener_set(self):
self.service.listener_set(listener_id="listener_id")
self.service._clients.octavia().listener_set \
.assert_called_once_with("listener_id")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.listener_set")
def test_listener_stats_show(self):
self.service.listener_stats_show(listener_id="listener_id")
self.service._clients.octavia().listener_stats_show \
.assert_called_once_with("listener_id")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.listener_stats_show")
def test_pool_list(self):
self.service.pool_list()
self.service._clients.octavia().pool_list \
.assert_called_once_with()
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.pool_list")
def test_update_pool_resource(self):
fake_pool = {"id": "pool-id"}
self.service.update_pool_resource(fake_pool)
self.service._clients.octavia().pool_show \
.assert_called_once_with("pool-id")
def test_update_pool_resource_fail_404(self):
fake_pool = {"id": "pool-id"}
ex = Exception()
ex.status_code = 404
self.service._clients.octavia().pool_show.side_effect = ex
self.assertRaises(
exceptions.GetResourceNotFound,
self.service.update_pool_resource, fake_pool)
def test_update_pool_resource_fail(self):
fake_pool = {"id": "pool-id"}
ex = Exception()
self.service._clients.octavia().pool_show.side_effect = ex
self.assertRaises(
exceptions.GetResourceFailure,
self.service.update_pool_resource, fake_pool)
def test_pool_create(self):
self.service.generate_random_name = mock.MagicMock(
return_value="pool")
self.service.pool_create(
lb_id="loadbalancer-id",
protocol="HTTP",
lb_algorithm="ROUND_ROBIN")
self.service._clients.octavia().pool_create \
.assert_called_once_with(
json={"pool": {
"lb_algorithm": "ROUND_ROBIN",
"protocol": "HTTP",
"listener_id": None,
"description": None,
"admin_state_up": True,
"session_persistence": None,
"loadbalancer_id": "loadbalancer-id",
"name": "pool"}})
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.pool_create")
def test_pool_delete(self):
self.service.pool_delete(pool_id="fake_pool")
self.service._clients.octavia().pool_delete \
.assert_called_once_with("fake_pool")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.pool_delete")
def test_pool_show(self):
self.service.pool_show(pool_id="fake_pool")
self.service._clients.octavia().pool_show \
.assert_called_once_with("fake_pool")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.pool_show")
def test_pool_set(self):
pool_update_args = {"name": "new-pool-name"}
self.service.pool_set(
pool_id="fake_pool",
pool_update_args=pool_update_args)
self.service._clients.octavia().pool_set \
.assert_called_once_with(
"fake_pool",
json={"pool": {"name": "new-pool-name"}})
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.pool_set")
def test_member_list(self):
self.service.member_list(pool_id="fake_pool")
self.service._clients.octavia().member_list \
.assert_called_once_with("fake_pool")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.member_list")
def test_member_show(self):
self.service.member_show(pool_id="fake_pool", member_id="fake_member")
self.service._clients.octavia().member_show \
.assert_called_once_with("fake_pool", "fake_member")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.member_show")
def test_member_create(self):
self.service.member_create(pool_id="fake_pool")
self.service._clients.octavia().member_create \
.assert_called_once_with("fake_pool")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.member_create")
def test_member_delete(self):
self.service.member_delete(
pool_id="fake_pool", member_id="fake_member")
self.service._clients.octavia().member_delete \
.assert_called_once_with("fake_pool", "fake_member")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.member_delete")
def test_member_set(self):
self.service.member_set(pool_id="fake_pool", member_id="fake_member")
self.service._clients.octavia().member_set \
.assert_called_once_with("fake_pool", "fake_member")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.member_set")
def test_l7policy_list(self):
self.service.l7policy_list()
self.service._clients.octavia().l7policy_list \
.assert_called_once_with()
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.l7policy_list")
def test_l7policy_create(self):
self.service.l7policy_create()
self.service._clients.octavia().l7policy_create \
.assert_called_once_with()
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.l7policy_create")
def test_l7policy_delete(self):
self.service.l7policy_delete(l7policy_id="fake_policy")
self.service._clients.octavia().l7policy_delete \
.assert_called_once_with("fake_policy")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.l7policy_delete")
def test_l7policy_show(self):
self.service.l7policy_show(l7policy_id="fake_policy")
self.service._clients.octavia().l7policy_show \
.assert_called_once_with("fake_policy")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.l7policy_show")
def test_l7policy_set(self):
self.service.l7policy_set(l7policy_id="fake_policy")
self.service._clients.octavia().l7policy_set \
.assert_called_once_with("fake_policy")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.l7policy_set")
def test_l7rule_list(self):
self.service.l7rule_list(l7policy_id="fake_policy")
self.service._clients.octavia().l7rule_list \
.assert_called_once_with("fake_policy")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.l7rule_list")
def test_l7rule_create(self):
self.service.l7rule_create(l7policy_id="fake_policy")
self.service._clients.octavia().l7rule_create \
.assert_called_once_with("fake_policy")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.l7rule_create")
def test_l7rule_delete(self):
self.service.l7rule_delete(
l7rule_id="fake_id", l7policy_id="fake_policy")
self.service._clients.octavia().l7rule_delete \
.assert_called_once_with("fake_id", "fake_policy")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.l7rule_delete")
def test_l7rule_show(self):
self.service.l7rule_show(
l7rule_id="fake_id", l7policy_id="fake_policy")
self.service._clients.octavia().l7rule_show \
.assert_called_once_with("fake_id", "fake_policy")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.l7rule_show")
def test_l7rule_set(self):
self.service.l7rule_set(l7rule_id="fake_id", l7policy_id="fake_policy")
self.service._clients.octavia().l7rule_set \
.assert_called_once_with("fake_id", "fake_policy")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.l7rule_set")
def test_health_monitor_list(self):
self.service.health_monitor_list()
self.service._clients.octavia().health_monitor_list \
.assert_called_once_with()
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.health_monitor_list")
def test_health_monitor_create(self):
self.service.health_monitor_create()
self.service._clients.octavia().health_monitor_create \
.assert_called_once_with()
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.health_monitor_create")
def test_health_monitor_delete(self):
self.service.health_monitor_delete(health_monitor_id="fake_monitor_id")
self.service._clients.octavia().health_monitor_delete \
.assert_called_once_with("fake_monitor_id")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.health_monitor_delete")
def test_health_monitor_show(self):
self.service.health_monitor_show(health_monitor_id="fake_monitor_id")
self.service._clients.octavia().health_monitor_show \
.assert_called_once_with("fake_monitor_id")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.health_monitor_show")
def test_health_monitor_set(self):
self.service.health_monitor_set(health_monitor_id="fake_monitor_id")
self.service._clients.octavia().health_monitor_set \
.assert_called_once_with("fake_monitor_id")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.health_monitor_set")
def test_quota_list(self):
self.service.quota_list(params="fake_params")
self.service._clients.octavia().quota_list \
.assert_called_once_with("fake_params")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.quota_list")
def test_quota_show(self):
self.service.quota_show(project_id="fake_project")
self.service._clients.octavia().quota_show \
.assert_called_once_with("fake_project")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.quota_show")
def test_quota_reset(self):
self.service.quota_reset(project_id="fake_project")
self.service._clients.octavia().quota_reset \
.assert_called_once_with("fake_project")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.quota_reset")
def test_quota_set(self):
self.service.quota_set(project_id="fake_project",
params="fake_params")
self.service._clients.octavia().quota_set \
.assert_called_once_with("fake_project", "fake_params")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.quota_set")
def test_quota_defaults_show(self):
self.service.quota_defaults_show()
self.service._clients.octavia().quota_defaults_show \
.assert_called_once_with()
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.quota_defaults_show")
def test_amphora_show(self):
self.service.amphora_show(amphora_id="fake_amphora")
self.service._clients.octavia().amphora_show \
.assert_called_once_with("fake_amphora")
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.amphora_show")
def test_amphora_list(self):
self.service.amphora_list()
self.service._clients.octavia().amphora_list \
.assert_called_once_with()
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.amphora_list")
@mock.patch("%s.Ocvita.wait_for_loadbalancer_prov_status" % BASE_PATH)
def wait_for_loadbalancer_prov_status(self, mock_wait_for_status):
fake_lb = {}
self.service.wait_for_loadbalancer_prov_status(lb=fake_lb)
self.assertTrue(mock_wait_for_status.called)
self._test_atomic_action_timer(self.atomic_actions(),
"octavia.wait_for_loadbalancers")