85 lines
2.1 KiB
Python
85 lines
2.1 KiB
Python
from typing import Any, cast, Union
|
|
|
|
from gitlab import types
|
|
from gitlab.base import RESTManager, RESTObject
|
|
from gitlab.mixins import (
|
|
CreateMixin,
|
|
DeleteMixin,
|
|
ListMixin,
|
|
ObjectDeleteMixin,
|
|
RetrieveMixin,
|
|
)
|
|
from gitlab.types import RequiredOptional
|
|
|
|
__all__ = [
|
|
"DeployToken",
|
|
"DeployTokenManager",
|
|
"GroupDeployToken",
|
|
"GroupDeployTokenManager",
|
|
"ProjectDeployToken",
|
|
"ProjectDeployTokenManager",
|
|
]
|
|
|
|
|
|
class DeployToken(ObjectDeleteMixin, RESTObject):
|
|
pass
|
|
|
|
|
|
class DeployTokenManager(ListMixin, RESTManager):
|
|
_path = "/deploy_tokens"
|
|
_obj_cls = DeployToken
|
|
|
|
|
|
class GroupDeployToken(ObjectDeleteMixin, RESTObject):
|
|
pass
|
|
|
|
|
|
class GroupDeployTokenManager(RetrieveMixin, CreateMixin, DeleteMixin, RESTManager):
|
|
_path = "/groups/{group_id}/deploy_tokens"
|
|
_from_parent_attrs = {"group_id": "id"}
|
|
_obj_cls = GroupDeployToken
|
|
_create_attrs = RequiredOptional(
|
|
required=(
|
|
"name",
|
|
"scopes",
|
|
),
|
|
optional=(
|
|
"expires_at",
|
|
"username",
|
|
),
|
|
)
|
|
_list_filters = ("scopes",)
|
|
_types = {"scopes": types.ArrayAttribute}
|
|
|
|
def get(
|
|
self, id: Union[str, int], lazy: bool = False, **kwargs: Any
|
|
) -> GroupDeployToken:
|
|
return cast(GroupDeployToken, super().get(id=id, lazy=lazy, **kwargs))
|
|
|
|
|
|
class ProjectDeployToken(ObjectDeleteMixin, RESTObject):
|
|
pass
|
|
|
|
|
|
class ProjectDeployTokenManager(RetrieveMixin, CreateMixin, DeleteMixin, RESTManager):
|
|
_path = "/projects/{project_id}/deploy_tokens"
|
|
_from_parent_attrs = {"project_id": "id"}
|
|
_obj_cls = ProjectDeployToken
|
|
_create_attrs = RequiredOptional(
|
|
required=(
|
|
"name",
|
|
"scopes",
|
|
),
|
|
optional=(
|
|
"expires_at",
|
|
"username",
|
|
),
|
|
)
|
|
_list_filters = ("scopes",)
|
|
_types = {"scopes": types.ArrayAttribute}
|
|
|
|
def get(
|
|
self, id: Union[str, int], lazy: bool = False, **kwargs: Any
|
|
) -> ProjectDeployToken:
|
|
return cast(ProjectDeployToken, super().get(id=id, lazy=lazy, **kwargs))
|