Skip to content

Commit 6f93c05

Browse files
committed
feat(user): support getting user SSH key by id
1 parent d508b18 commit 6f93c05

File tree

3 files changed

+12
-2
lines changed

3 files changed

+12
-2
lines changed

docs/gl_objects/users.rst

+5-1
Original file line numberDiff line numberDiff line change
@@ -299,9 +299,13 @@ List SSH keys for a user::
299299

300300
Create an SSH key for a user::
301301

302-
k = user.keys.create({'title': 'my_key',
302+
key = user.keys.create({'title': 'my_key',
303303
'key': open('/home/me/.ssh/id_rsa.pub').read()})
304304

305+
Get an SSH key for a user by id::
306+
307+
key = user.keys.get(key_id)
308+
305309
Delete an SSH key for a user::
306310

307311
user.keys.delete(key_id)

gitlab/v4/objects/users.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -429,12 +429,15 @@ class UserKey(ObjectDeleteMixin, RESTObject):
429429
pass
430430

431431

432-
class UserKeyManager(ListMixin, CreateMixin, DeleteMixin, RESTManager):
432+
class UserKeyManager(RetrieveMixin, CreateMixin, DeleteMixin, RESTManager):
433433
_path = "/users/{user_id}/keys"
434434
_obj_cls = UserKey
435435
_from_parent_attrs = {"user_id": "id"}
436436
_create_attrs = RequiredOptional(required=("title", "key"))
437437

438+
def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> UserKey:
439+
return cast(UserKey, super().get(id=id, lazy=lazy, **kwargs))
440+
438441

439442
class UserIdentityProviderManager(DeleteMixin, RESTManager):
440443
"""Manager for user identities.

tests/functional/api/test_users.py

+3
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,9 @@ def test_user_ssh_keys(gl, user, SSH_KEY):
106106
key = user.keys.create({"title": "testkey", "key": SSH_KEY})
107107
assert len(user.keys.list()) == 1
108108

109+
get_key = user.keys.get(key.id)
110+
assert get_key.key == key.key
111+
109112
key.delete()
110113
assert len(user.keys.list()) == 0
111114

0 commit comments

Comments
 (0)