Skip to content

Commit bbe9c96

Browse files
Zuulopenstack-gerrit
Zuul
authored andcommitted
Merge "Add listing of groups for a user"
2 parents 83f0173 + c7f3d14 commit bbe9c96

File tree

5 files changed

+44
-0
lines changed

5 files changed

+44
-0
lines changed

doc/source/user/proxies/identity_v3.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ User Operations
8484
.. autoclass:: openstack.identity.v3._proxy.Proxy
8585
:noindex:
8686
:members: create_user, update_user, delete_user, get_user, find_user, users,
87+
user_groups
8788

8889
Trust Operations
8990
^^^^^^^^^^^^^^^^

doc/source/user/resources/identity/v3/group.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,12 @@ The ``Group`` class inherits from :class:`~openstack.resource.Resource`.
1010

1111
.. autoclass:: openstack.identity.v3.group.Group
1212
:members:
13+
14+
The UserGroup Class
15+
-------------------
16+
17+
The ``UserGroup`` class inherits from
18+
:class:`~openstack.identity.v3.group.Group`
19+
20+
.. autoclass:: openstack.identity.v3.group.UserGroup
21+
:members:

openstack/identity/v3/_proxy.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -939,6 +939,18 @@ def get_user(self, user):
939939
"""
940940
return self._get(_user.User, user)
941941

942+
def user_groups(self, user):
943+
"""List groups a user is in
944+
945+
:param user: Either the ID of a user or a
946+
:class:`~openstack.identity.v3.user.User` instance
947+
948+
:return: List of :class:`~openstack.identity.v3.group.group`
949+
"""
950+
user_id = self._get_resource(_user.User, user).id
951+
groups = self._list(_group.UserGroup, user_id=user_id)
952+
return groups
953+
942954
def users(self, **query):
943955
"""Retrieve a generator of users
944956

openstack/identity/v3/group.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,17 @@ def check_user(self, session, user):
7474
if resp.status_code == 204:
7575
return True
7676
return False
77+
78+
79+
class UserGroup(Group):
80+
base_path = '/users/%(user_id)%/groups'
81+
82+
#: The ID for the user from the URI of the resource
83+
user_id = resource.URI('user_id')
84+
85+
# capabilities
86+
allow_create = False
87+
allow_fetch = False
88+
allow_commit = False
89+
allow_delete = False
90+
allow_list = True

openstack/tests/unit/identity/v3/test_proxy.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,14 @@ def test_users(self):
385385
def test_user_update(self):
386386
self.verify_update(self.proxy.update_user, user.User)
387387

388+
def test_user_groups(self):
389+
self.verify_list(
390+
self.proxy.user_groups,
391+
group.UserGroup,
392+
method_kwargs={"user": 'user'},
393+
expected_kwargs={"user_id": "user"},
394+
)
395+
388396

389397
class TestIdentityProxyTrust(TestIdentityProxyBase):
390398
def test_trust_create_attrs(self):

0 commit comments

Comments
 (0)