feat(api): add support for adding instance deploy keys · python-gitlab/python-gitlab@22be96c

@@ -7,7 +7,13 @@

77

from gitlab import cli

88

from gitlab import exceptions as exc

99

from 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+

)

1117

from gitlab.types import RequiredOptional

12181319

__all__ = ["DeployKey", "DeployKeyManager", "ProjectKey", "ProjectKeyManager"]

@@ -17,9 +23,12 @@ class DeployKey(RESTObject):

1723

pass

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+

)

233224332534

class 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",