feat(api): add support for adding instance deploy keys · python-gitlab/python-gitlab@22be96c
@@ -7,7 +7,13 @@
77from gitlab import cli
88from gitlab import exceptions as exc
99from gitlab.base import RESTObject
10-from gitlab.mixins import CRUDMixin, ListMixin, ObjectDeleteMixin, SaveMixin
10+from gitlab.mixins import (
11+CreateMixin,
12+CRUDMixin,
13+ListMixin,
14+ObjectDeleteMixin,
15+SaveMixin,
16+)
1117from gitlab.types import RequiredOptional
12181319__all__ = ["DeployKey", "DeployKeyManager", "ProjectKey", "ProjectKeyManager"]
@@ -17,9 +23,12 @@ class DeployKey(RESTObject):
1723pass
1824192520-class DeployKeyManager(ListMixin[DeployKey]):
26+class DeployKeyManager(CreateMixin[DeployKey], ListMixin[DeployKey]):
2127_path = "/deploy_keys"
2228_obj_cls = DeployKey
29+_create_attrs = RequiredOptional(
30+required=("title", "key"), optional=("expires_at",)
31+ )
233224332534class ProjectKey(SaveMixin, ObjectDeleteMixin, RESTObject):
@@ -30,8 +39,10 @@ class ProjectKeyManager(CRUDMixin[ProjectKey]):
3039_path = "/projects/{project_id}/deploy_keys"
3140_obj_cls = ProjectKey
3241_from_parent_attrs = {"project_id": "id"}
33-_create_attrs = RequiredOptional(required=("title", "key"), optional=("can_push",))
34-_update_attrs = RequiredOptional(optional=("title", "can_push"))
42+_create_attrs = RequiredOptional(
43+required=("title", "key"), optional=("can_push", "expires_at")
44+ )
45+_update_attrs = RequiredOptional(optional=("title", "can_push", "expires_at"))
35463647@cli.register_custom_action(
3748 cls_names="ProjectKeyManager",