Fix get_all method for v2 LB controller
Change-Id: Id1bd83eaf61fa046dbfef2730a07f98e171158fa
This commit is contained in:
parent
3eedc728f1
commit
6fb6a6aa8f
|
@ -60,9 +60,15 @@ class LoadBalancersController(base.BaseController):
|
|||
# tenant_id and project_id are the same thing. tenant_id will be kept
|
||||
# around for a long amount of time.
|
||||
context = pecan.request.context.get('octavia_context')
|
||||
project_id = context.project_id or project_id or tenant_id
|
||||
if context.is_admin or CONF.auth_strategy == constants.NOAUTH:
|
||||
if project_id or tenant_id:
|
||||
project_id = {'project_id': project_id or tenant_id}
|
||||
else:
|
||||
project_id = {}
|
||||
else:
|
||||
project_id = {'project_id': context.project_id}
|
||||
load_balancers = self.repositories.load_balancer.get_all(
|
||||
context.session, project_id=project_id)
|
||||
context.session, **project_id)
|
||||
result = self._convert_db_to_type(load_balancers,
|
||||
[lb_types.LoadBalancerResponse])
|
||||
return lb_types.LoadBalancersRootResponse(loadbalancers=result)
|
||||
|
|
|
@ -18,6 +18,7 @@ import mock
|
|||
from oslo_utils import uuidutils
|
||||
|
||||
from octavia.common import constants
|
||||
import octavia.common.context
|
||||
from octavia.network import base as network_base
|
||||
from octavia.network import data_models as network_models
|
||||
from octavia.tests.functional.api.v2 import base
|
||||
|
@ -237,24 +238,46 @@ class TestLoadBalancer(base.BaseAPITest):
|
|||
def test_create_with_project_id(self):
|
||||
self.test_create(project_id=uuidutils.generate_uuid())
|
||||
|
||||
def test_get_all(self):
|
||||
def test_get_all_admin(self):
|
||||
project_id = uuidutils.generate_uuid()
|
||||
lb1 = self.create_load_balancer(uuidutils.generate_uuid(),
|
||||
name='lb1', project_id=project_id)
|
||||
name='lb1', project_id=self.project_id)
|
||||
lb2 = self.create_load_balancer(uuidutils.generate_uuid(),
|
||||
name='lb2', project_id=project_id)
|
||||
lb3 = self.create_load_balancer(uuidutils.generate_uuid(),
|
||||
name='lb3', project_id=project_id)
|
||||
response = self.get(self.LBS_PATH,
|
||||
params={'project_id': self.project_id})
|
||||
lbs = response.json.get(self.root_tag)
|
||||
# Same get all project_id issue
|
||||
if lbs is not None:
|
||||
lb_id_names = [(lb.get('id'), lb.get('name')) for lb in lbs]
|
||||
self.assertEqual(3, len(lbs))
|
||||
self.assertIn((lb1.get('id'), lb1.get('name')), lb_id_names)
|
||||
self.assertIn((lb2.get('id'), lb2.get('name')), lb_id_names)
|
||||
self.assertIn((lb3.get('id'), lb3.get('name')), lb_id_names)
|
||||
response = self.get(self.LBS_PATH)
|
||||
lbs = response.json.get(self.root_tag_list)
|
||||
self.assertEqual(3, len(lbs))
|
||||
lb_id_names = [(lb.get('id'), lb.get('name')) for lb in lbs]
|
||||
lb1 = lb1.get(self.root_tag)
|
||||
lb2 = lb2.get(self.root_tag)
|
||||
lb3 = lb3.get(self.root_tag)
|
||||
self.assertIn((lb1.get('id'), lb1.get('name')), lb_id_names)
|
||||
self.assertIn((lb2.get('id'), lb2.get('name')), lb_id_names)
|
||||
self.assertIn((lb3.get('id'), lb3.get('name')), lb_id_names)
|
||||
|
||||
def test_get_all_non_admin(self):
|
||||
project_id = uuidutils.generate_uuid()
|
||||
self.create_load_balancer(uuidutils.generate_uuid(),
|
||||
name='lb1', project_id=project_id)
|
||||
self.create_load_balancer(uuidutils.generate_uuid(),
|
||||
name='lb2', project_id=project_id)
|
||||
lb3 = self.create_load_balancer(uuidutils.generate_uuid(),
|
||||
name='lb3', project_id=self.project_id)
|
||||
lb3 = lb3.get(self.root_tag)
|
||||
|
||||
auth_strategy = self.conf.conf.get('auth_strategy')
|
||||
self.conf.config(auth_strategy=constants.KEYSTONE)
|
||||
with mock.patch.object(octavia.common.context.Context, 'project_id',
|
||||
self.project_id):
|
||||
response = self.get(self.LBS_PATH)
|
||||
self.conf.config(auth_strategy=auth_strategy)
|
||||
|
||||
lbs = response.json.get(self.root_tag_list)
|
||||
self.assertEqual(1, len(lbs))
|
||||
lb_id_names = [(lb.get('id'), lb.get('name')) for lb in lbs]
|
||||
self.assertIn((lb3.get('id'), lb3.get('name')), lb_id_names)
|
||||
|
||||
def test_get_all_by_project_id(self):
|
||||
project1_id = uuidutils.generate_uuid()
|
||||
|
@ -268,22 +291,20 @@ class TestLoadBalancer(base.BaseAPITest):
|
|||
lb3 = self.create_load_balancer(uuidutils.generate_uuid(),
|
||||
name='lb3',
|
||||
project_id=project2_id)
|
||||
project1_path = "{0}?project_id={1}".format(self.LBS_PATH, project1_id)
|
||||
response = self.get(project1_path)
|
||||
response = self.get(self.LBS_PATH,
|
||||
params={'project_id': project1_id})
|
||||
lbs = response.json.get(self.root_tag_list)
|
||||
|
||||
self.assertEqual(2, len(lbs))
|
||||
|
||||
lb_id_names = [(lb.get('id'), lb.get('name')) for lb in lbs]
|
||||
self.assertEqual(2, len(lbs))
|
||||
lb1 = lb1.get(self.root_tag)
|
||||
lb2 = lb2.get(self.root_tag)
|
||||
lb3 = lb3.get(self.root_tag)
|
||||
self.assertIn((lb1.get('id'), lb1.get('name')), lb_id_names)
|
||||
self.assertIn((lb2.get('id'), lb2.get('name')), lb_id_names)
|
||||
project2_path = "{0}?project_id={1}".format(self.LBS_PATH,
|
||||
project2_id)
|
||||
response = self.get(project2_path)
|
||||
response = self.get(self.LBS_PATH,
|
||||
params={'project_id': project2_id})
|
||||
lbs = response.json.get(self.root_tag_list)
|
||||
lb_id_names = [(lb.get('id'), lb.get('name')) for lb in lbs]
|
||||
self.assertEqual(1, len(lbs))
|
||||
|
|
Loading…
Reference in New Issue