Merge "Allow admins to get resource by physical resource id"

This commit is contained in:
Jenkins 2017-01-23 05:40:47 +00:00 committed by Gerrit Code Review
commit 2fa8cc09d3
2 changed files with 23 additions and 3 deletions

View File

@ -206,7 +206,7 @@ def resource_get_all_by_physical_resource_id(context, physical_resource_id):
.all())
for result in results:
if context is None or context.tenant_id in (
if context is None or context.is_admin or context.tenant_id in (
result.stack.tenant, result.stack.stack_user_project_id):
yield result

View File

@ -1397,9 +1397,12 @@ def create_stack(ctx, template, user_creds, **kwargs):
def create_resource(ctx, stack, **kwargs):
phy_res_id = UUID1
if 'phys_res_id' in kwargs:
phy_res_id = kwargs.pop('phys_res_id')
values = {
'name': 'test_resource_name',
'physical_resource_id': UUID1,
'physical_resource_id': phy_res_id,
'action': 'create',
'status': 'complete',
'status_reason': 'create_complete',
@ -2330,13 +2333,30 @@ class DBAPIResourceTest(common.HeatTestCase):
ret_res = db_api.resource_get_all_by_physical_resource_id(self.ctx,
UUID1)
ret_list = list(ret_res)
self.assertTrue(ret_list)
self.assertEqual(2, len(ret_list))
for res in ret_list:
self.assertEqual(UUID1, res.physical_resource_id)
mt = db_api.resource_get_all_by_physical_resource_id(self.ctx, UUID2)
self.assertFalse(list(mt))
def test_resource_get_all_by_with_admin_context(self):
admin_ctx = utils.dummy_context(is_admin=True,
tenant_id='admin_tenant')
create_resource(self.ctx, self.stack, phys_res_id=UUID1)
create_resource(self.ctx, self.stack, phys_res_id=UUID2)
ret_res = db_api.resource_get_all_by_physical_resource_id(admin_ctx,
UUID1)
ret_list = list(ret_res)
self.assertEqual(1, len(ret_list))
self.assertEqual(UUID1, ret_list[0].physical_resource_id)
mt = db_api.resource_get_all_by_physical_resource_id(admin_ctx, UUID2)
ret_list = list(mt)
self.assertEqual(1, len(ret_list))
self.assertEqual(UUID2, ret_list[0].physical_resource_id)
def test_resource_get_all(self):
values = [
{'name': 'res1'},