Merge "Allow grant_role to select users outside default domain"

This commit is contained in:
Zuul 2017-11-27 15:13:17 +00:00 committed by Gerrit Code Review
commit e11ecfaf98
2 changed files with 82 additions and 21 deletions

View File

@ -1791,7 +1791,11 @@ class OperatorCloud(openstackcloud.OpenStackCloud):
self.get_domain(domain)['id']
if user:
data['user'] = self.get_user(user, filters=filters)
if 'domain' in data:
data['user'] = self.get_user(
user, filters=filters, domain_id=data['domain'])
else:
data['user'] = self.get_user(user, filters=filters)
if project:
# drop domain in favor of project

View File

@ -436,6 +436,7 @@ class TestRoleAssignment(base.RequestsMockTestCase):
self.assert_calls()
def test_grant_role_user_project_exists(self):
self.assertEqual(len(self.calls), 2)
self.register_uris([
dict(method='GET',
uri=self.get_mock_url(resource='roles'),
@ -496,6 +497,7 @@ class TestRoleAssignment(base.RequestsMockTestCase):
entity_type='user',
entity_id=self.user_data.user_id)}),
])
self.assertEqual(len(self.calls), 10)
self.assertFalse(self.op_cloud.grant_role(
self.role_data.role_name,
user=self.user_data.name,
@ -662,7 +664,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -688,12 +693,16 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json={'roles': [self.role_data.json_response['role']]}),
dict(method='GET',
uri=self.get_mock_url(resource='domains',
append=[self.domain_data.domain_id]),
uri=self.get_mock_url(
resource='domains',
append=[self.domain_data.domain_id]),
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -724,7 +733,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -755,7 +767,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -807,7 +822,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -836,7 +854,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -865,7 +886,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -894,7 +918,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -1768,7 +1795,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -1791,7 +1821,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -1814,7 +1847,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -1837,7 +1873,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -1881,7 +1920,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -1917,7 +1959,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -1953,7 +1998,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -1989,7 +2037,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -2478,7 +2529,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -2527,7 +2581,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',