Unverified Commit b187dead authored by Sachin Kumar Singh's avatar Sachin Kumar Singh Committed by GitHub
Browse files

feat(api): add support for gitlab service account (#2851)




Co-authored-by: default avatarNejc Habjan <hab.nejc@siemens.com>
parent ef8f0e19
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -458,3 +458,24 @@ Edit group push rules::
Delete group push rules::

    pr.delete()

Group Service Account
=====================

Reference
---------

* v4 API:

  + :class:`gitlab.v4.objects.GroupServiceAccount`
  + :class:`gitlab.v4.objects.GroupServiceAccountManager`
  + :attr:`gitlab.v4.objects.Group.serviceaccounts`

* GitLab API: https://docs.gitlab.com/ee/api/groups.html#service-accounts

Examples
---------

Create group service account (only allowed at top level group)::

    group.serviceaccount.create({'name': 'group-service-account', 'username': 'group-service-account'})
+1 −0
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ from .resource_groups import *
from .reviewers import *
from .runners import *
from .secure_files import *
from .service_accounts import *
from .settings import *
from .sidekiq import *
from .snippets import *
+2 −0
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ from .packages import GroupPackageManager # noqa: F401
from .projects import GroupProjectManager, SharedProjectManager  # noqa: F401
from .push_rules import GroupPushRulesManager
from .runners import GroupRunnerManager  # noqa: F401
from .service_accounts import GroupServiceAccountManager  # noqa: F401
from .statistics import GroupIssuesStatisticsManager  # noqa: F401
from .variables import GroupVariableManager  # noqa: F401
from .wikis import GroupWikiManager  # noqa: F401
@@ -102,6 +103,7 @@ class Group(SaveMixin, ObjectDeleteMixin, RESTObject):
    variables: GroupVariableManager
    wikis: GroupWikiManager
    saml_group_links: "GroupSAMLGroupLinkManager"
    service_accounts: "GroupServiceAccountManager"

    @cli.register_custom_action("Group", ("project_id",))
    @exc.on_http_error(exc.GitlabTransferProjectError)
+18 −0
Original line number Diff line number Diff line
from gitlab.base import RESTManager, RESTObject
from gitlab.mixins import CreateMixin
from gitlab.types import RequiredOptional

__all__ = ["GroupServiceAccount", "GroupServiceAccountManager"]


class GroupServiceAccount(RESTObject):
    pass


class GroupServiceAccountManager(CreateMixin, RESTManager):
    _path = "/groups/{group_id}/service_accounts"
    _obj_cls = GroupServiceAccount
    _from_parent_attrs = {"group_id": "id"}
    _create_attrs = RequiredOptional(
        optional=("name", "username"),
    )
+9 −0
Original line number Diff line number Diff line
@@ -308,3 +308,12 @@ def test_group_saml_group_links(group):
    group.saml_group_links.create(
        {"saml_group_name": "saml-group-1", "access_level": 10}
    )


@pytest.mark.gitlab_premium
def test_group_service_account(group):
    service_account = group.service_accounts.create(
        {"name": "gitlab-service-account", "username": "gitlab-service-account"}
    )
    assert service_account.name == "gitlab-service-account"
    assert service_account.username == "gitlab-service-account"
Loading