diff options
Diffstat (limited to 'gitlab/v4/objects/deploy_keys.py')
-rw-r--r-- | gitlab/v4/objects/deploy_keys.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/gitlab/v4/objects/deploy_keys.py b/gitlab/v4/objects/deploy_keys.py new file mode 100644 index 0000000..9143fc2 --- /dev/null +++ b/gitlab/v4/objects/deploy_keys.py @@ -0,0 +1,41 @@ +from gitlab import cli +from gitlab import exceptions as exc +from gitlab.base import * # noqa +from gitlab.mixins import * # noqa + + +class DeployKey(RESTObject): + pass + + +class DeployKeyManager(ListMixin, RESTManager): + _path = "/deploy_keys" + _obj_cls = DeployKey + + +class ProjectKey(SaveMixin, ObjectDeleteMixin, RESTObject): + pass + + +class ProjectKeyManager(CRUDMixin, RESTManager): + _path = "/projects/%(project_id)s/deploy_keys" + _obj_cls = ProjectKey + _from_parent_attrs = {"project_id": "id"} + _create_attrs = (("title", "key"), ("can_push",)) + _update_attrs = (tuple(), ("title", "can_push")) + + @cli.register_custom_action("ProjectKeyManager", ("key_id",)) + @exc.on_http_error(exc.GitlabProjectDeployKeyError) + def enable(self, key_id, **kwargs): + """Enable a deploy key for a project. + + Args: + key_id (int): The ID of the key to enable + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabProjectDeployKeyError: If the key could not be enabled + """ + path = "%s/%s/enable" % (self.path, key_id) + self.gitlab.http_post(path, **kwargs) |