summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-03-10 20:53:17 +0000
committerGerrit Code Review <review@openstack.org>2015-03-10 20:53:17 +0000
commit4a0d1b3f13e1f74109e4800162709b711f57332d (patch)
tree3b7e99034fec47194a8251d0a8c7a0b1467b24e6
parented43a70012424739b26b06f30d0b08c7090efce5 (diff)
parentc756f2dab3fc31d3c120c92fb8a49d02a6e0bca1 (diff)
downloadpython-keystoneclient-4a0d1b3f13e1f74109e4800162709b711f57332d.tar.gz
Merge "Creating parameter to list inherited role assignments"
-rw-r--r--keystoneclient/tests/unit/v3/test_role_assignments.py15
-rw-r--r--keystoneclient/v3/role_assignments.py8
2 files changed, 22 insertions, 1 deletions
diff --git a/keystoneclient/tests/unit/v3/test_role_assignments.py b/keystoneclient/tests/unit/v3/test_role_assignments.py
index 1a664c9..79d2585 100644
--- a/keystoneclient/tests/unit/v3/test_role_assignments.py
+++ b/keystoneclient/tests/unit/v3/test_role_assignments.py
@@ -177,6 +177,21 @@ class RoleAssignmentsTests(utils.TestCase, utils.CrudTests):
kwargs = {'role.id': self.TEST_ROLE_ID}
self.assertQueryStringContains(**kwargs)
+ def test_role_assignments_inherited_list(self):
+ ref_list = self.TEST_ALL_RESPONSE_LIST
+ self.stub_entity('GET',
+ [self.collection_key,
+ '?scope.OS-INHERIT:inherited_to=projects'],
+ entity=ref_list
+ )
+
+ returned_list = self.manager.list(
+ os_inherit_extension_inherited_to='projects')
+ self._assert_returned_list(ref_list, returned_list)
+
+ query_string = 'scope.OS-INHERIT:inherited_to=projects'
+ self.assertQueryStringIs(query_string)
+
def test_domain_and_project_list(self):
# Should only accept either domain or project, never both
self.assertRaises(exceptions.ValidationError,
diff --git a/keystoneclient/v3/role_assignments.py b/keystoneclient/v3/role_assignments.py
index 6518e43..d71f9eb 100644
--- a/keystoneclient/v3/role_assignments.py
+++ b/keystoneclient/v3/role_assignments.py
@@ -47,7 +47,7 @@ class RoleAssignmentManager(base.CrudManager):
raise exceptions.ValidationError(msg)
def list(self, user=None, group=None, project=None, domain=None, role=None,
- effective=False):
+ effective=False, os_inherit_extension_inherited_to=None):
"""Lists role assignments.
If no arguments are provided, all role assignments in the
@@ -66,6 +66,9 @@ class RoleAssignmentManager(base.CrudManager):
:param role: Role to be used as query filter. (optional)
:param boolean effective: return effective role
assignments. (optional)
+ :param string os_inherit_extension_inherited_to:
+ return inherited role assignments for either 'projects' or
+ 'domains'. (optional)
"""
self._check_not_user_and_group(user, group)
@@ -84,6 +87,9 @@ class RoleAssignmentManager(base.CrudManager):
query_params['role.id'] = base.getid(role)
if effective:
query_params['effective'] = effective
+ if os_inherit_extension_inherited_to:
+ query_params['scope.OS-INHERIT:inherited_to'] = (
+ os_inherit_extension_inherited_to)
return super(RoleAssignmentManager, self).list(**query_params)