diff --git a/docs/gl_objects/users.rst b/docs/gl_objects/users.rst index aa3a66093..7a169dc43 100644 --- a/docs/gl_objects/users.rst +++ b/docs/gl_objects/users.rst @@ -299,9 +299,13 @@ List SSH keys for a user:: Create an SSH key for a user:: - k = user.keys.create({'title': 'my_key', + key = user.keys.create({'title': 'my_key', 'key': open('/home/me/.ssh/id_rsa.pub').read()}) +Get an SSH key for a user by id:: + + key = user.keys.get(key_id) + Delete an SSH key for a user:: user.keys.delete(key_id) diff --git a/gitlab/v4/objects/users.py b/gitlab/v4/objects/users.py index b2de33733..ddcee707a 100644 --- a/gitlab/v4/objects/users.py +++ b/gitlab/v4/objects/users.py @@ -429,12 +429,15 @@ class UserKey(ObjectDeleteMixin, RESTObject): pass -class UserKeyManager(ListMixin, CreateMixin, DeleteMixin, RESTManager): +class UserKeyManager(RetrieveMixin, CreateMixin, DeleteMixin, RESTManager): _path = "/users/{user_id}/keys" _obj_cls = UserKey _from_parent_attrs = {"user_id": "id"} _create_attrs = RequiredOptional(required=("title", "key")) + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> UserKey: + return cast(UserKey, super().get(id=id, lazy=lazy, **kwargs)) + class UserIdentityProviderManager(DeleteMixin, RESTManager): """Manager for user identities. diff --git a/tests/functional/api/test_users.py b/tests/functional/api/test_users.py index 9945aa68e..0c5803408 100644 --- a/tests/functional/api/test_users.py +++ b/tests/functional/api/test_users.py @@ -106,6 +106,9 @@ def test_user_ssh_keys(gl, user, SSH_KEY): key = user.keys.create({"title": "testkey", "key": SSH_KEY}) assert len(user.keys.list()) == 1 + get_key = user.keys.get(key.id) + assert get_key.key == key.key + key.delete() assert len(user.keys.list()) == 0