diff --git a/shade/operatorcloud.py b/shade/operatorcloud.py index 2e619b715..1f5d41529 100644 --- a/shade/operatorcloud.py +++ b/shade/operatorcloud.py @@ -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 diff --git a/shade/tests/unit/test_role_assignment.py b/shade/tests/unit/test_role_assignment.py index 3aedd0fd9..8af5bda17 100644 --- a/shade/tests/unit/test_role_assignment.py +++ b/shade/tests/unit/test_role_assignment.py @@ -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',