summaryrefslogtreecommitdiff
path: root/gitlab
diff options
context:
space:
mode:
authorNejc Habjan <nejc.habjan@siemens.com>2022-11-27 00:11:32 +0100
committerJohn Villalovos <john@sodarock.com>2022-12-18 01:13:20 -0600
commit5f8b8f5be901e944dfab2257f9e0cc4b2b1d2cd5 (patch)
tree30d3b0fa7103cc52829979af1578f2c4bebff4b5 /gitlab
parent1816107b8d87614e7947837778978d8de8da450f (diff)
downloadgitlab-5f8b8f5be901e944dfab2257f9e0cc4b2b1d2cd5.tar.gz
feat(api): add support for resource groups
Diffstat (limited to 'gitlab')
-rw-r--r--gitlab/v4/objects/__init__.py1
-rw-r--r--gitlab/v4/objects/projects.py2
-rw-r--r--gitlab/v4/objects/resource_groups.py45
3 files changed, 48 insertions, 0 deletions
diff --git a/gitlab/v4/objects/__init__.py b/gitlab/v4/objects/__init__.py
index 56c17d5..b6f7afc 100644
--- a/gitlab/v4/objects/__init__.py
+++ b/gitlab/v4/objects/__init__.py
@@ -52,6 +52,7 @@ from .projects import *
from .push_rules import *
from .releases import *
from .repositories import *
+from .resource_groups import *
from .runners import *
from .secure_files import *
from .settings import *
diff --git a/gitlab/v4/objects/projects.py b/gitlab/v4/objects/projects.py
index f19b845..588109f 100644
--- a/gitlab/v4/objects/projects.py
+++ b/gitlab/v4/objects/projects.py
@@ -81,6 +81,7 @@ from .project_access_tokens import ProjectAccessTokenManager # noqa: F401
from .push_rules import ProjectPushRulesManager # noqa: F401
from .releases import ProjectReleaseManager # noqa: F401
from .repositories import RepositoryMixin
+from .resource_groups import ProjectResourceGroupManager
from .runners import ProjectRunnerManager # noqa: F401
from .secure_files import ProjectSecureFileManager # noqa: F401
from .snippets import ProjectSnippetManager # noqa: F401
@@ -207,6 +208,7 @@ class Project(RefreshMixin, SaveMixin, ObjectDeleteMixin, RepositoryMixin, RESTO
protectedtags: ProjectProtectedTagManager
pushrules: ProjectPushRulesManager
releases: ProjectReleaseManager
+ resource_groups: ProjectResourceGroupManager
remote_mirrors: "ProjectRemoteMirrorManager"
repositories: ProjectRegistryRepositoryManager
runners: ProjectRunnerManager
diff --git a/gitlab/v4/objects/resource_groups.py b/gitlab/v4/objects/resource_groups.py
new file mode 100644
index 0000000..1ca34f6
--- /dev/null
+++ b/gitlab/v4/objects/resource_groups.py
@@ -0,0 +1,45 @@
+from typing import Any, cast, Union
+
+from gitlab.base import RESTManager, RESTObject
+from gitlab.mixins import ListMixin, RetrieveMixin, SaveMixin, UpdateMixin
+from gitlab.types import RequiredOptional
+
+__all__ = [
+ "ProjectResourceGroup",
+ "ProjectResourceGroupManager",
+ "ProjectResourceGroupUpcomingJob",
+ "ProjectResourceGroupUpcomingJobManager",
+]
+
+
+class ProjectResourceGroup(SaveMixin, RESTObject):
+ _id_attr = "key"
+
+ upcoming_jobs: "ProjectResourceGroupUpcomingJobManager"
+
+
+class ProjectResourceGroupManager(RetrieveMixin, UpdateMixin, RESTManager):
+ _path = "/projects/{project_id}/resource_groups"
+ _obj_cls = ProjectResourceGroup
+ _from_parent_attrs = {"project_id": "id"}
+ _list_filters = (
+ "order_by",
+ "sort",
+ "include_html_description",
+ )
+ _update_attrs = RequiredOptional(optional=("process_mode",))
+
+ def get(
+ self, id: Union[str, int], lazy: bool = False, **kwargs: Any
+ ) -> ProjectResourceGroup:
+ return cast(ProjectResourceGroup, super().get(id=id, lazy=lazy, **kwargs))
+
+
+class ProjectResourceGroupUpcomingJob(RESTObject):
+ pass
+
+
+class ProjectResourceGroupUpcomingJobManager(ListMixin, RESTManager):
+ _path = "/projects/{project_id}/resource_groups/{resource_group_key}/upcoming_jobs"
+ _obj_cls = ProjectResourceGroupUpcomingJob
+ _from_parent_attrs = {"project_id": "project_id", "resource_group_key": "key"}