Merge "Fix unspecified bahavior on GET /servers/detail?tenant_id=X as admin"
This commit is contained in:
commit
d48aeb5783
|
@ -323,6 +323,11 @@ class ServersController(wsgi.Controller):
|
|||
context.can(server_policies.SERVERS % 'index:get_all_tenants')
|
||||
elevated = context.elevated()
|
||||
else:
|
||||
# As explained in lp:#1185290, if `all_tenants` is not passed
|
||||
# we must ignore the `tenant_id` search option. As explained
|
||||
# in a above code comment, any change to this behavior would
|
||||
# require a microversion bump.
|
||||
search_opts.pop('tenant_id', None)
|
||||
if context.project_id:
|
||||
search_opts['project_id'] = context.project_id
|
||||
else:
|
||||
|
|
|
@ -779,6 +779,7 @@ class ServersControllerTest(ControllerTest):
|
|||
def test_tenant_id_filter_no_admin_context(self):
|
||||
def fake_get_all(context, search_opts=None, **kwargs):
|
||||
self.assertIsNotNone(search_opts)
|
||||
self.assertNotIn('tenant_id', search_opts)
|
||||
self.assertEqual(search_opts['project_id'], 'fake')
|
||||
return [fakes.stub_instance_obj(100)]
|
||||
|
||||
|
@ -788,6 +789,21 @@ class ServersControllerTest(ControllerTest):
|
|||
servers = self.controller.index(req)['servers']
|
||||
self.assertEqual(len(servers), 1)
|
||||
|
||||
def test_tenant_id_filter_admin_context(self):
|
||||
""""Test tenant_id search opt is dropped if all_tenants is not set."""
|
||||
def fake_get_all(context, search_opts=None, **kwargs):
|
||||
self.assertIsNotNone(search_opts)
|
||||
self.assertNotIn('tenant_id', search_opts)
|
||||
self.assertEqual('fake', search_opts['project_id'])
|
||||
return [fakes.stub_instance_obj(100)]
|
||||
|
||||
req = self.req('/fake/servers?tenant_id=newfake',
|
||||
use_admin_context=True)
|
||||
with mock.patch.object(compute_api.API, 'get_all') as mock_get:
|
||||
mock_get.side_effect = fake_get_all
|
||||
servers = self.controller.index(req)['servers']
|
||||
self.assertEqual(len(servers), 1)
|
||||
|
||||
def test_all_tenants_param_normal(self):
|
||||
def fake_get_all(context, search_opts=None, **kwargs):
|
||||
self.assertNotIn('project_id', search_opts)
|
||||
|
|
Loading…
Reference in New Issue