summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNejc Habjan <nejc.habjan@siemens.com>2022-07-23 02:21:48 +0200
committerJohn Villalovos <john@sodarock.com>2022-07-23 07:50:52 -0700
commitc6dd57c56e92abb6184badf4708f5f5e65c6d582 (patch)
treeba4961acf5d1af0e1017d5fc5285eebaa18c603e
parent9c5b8d54745a58b9fe72ba535b7868d1510379c0 (diff)
downloadgitlab-c6dd57c56e92abb6184badf4708f5f5e65c6d582.tar.gz
fix(runners): fix listing for /runners/all
-rw-r--r--docs/cli-examples.rst27
-rw-r--r--docs/gl_objects/runners.rst15
-rw-r--r--gitlab/client.py2
-rw-r--r--gitlab/v4/objects/runners.py16
-rw-r--r--tests/unit/objects/test_runners.py13
5 files changed, 68 insertions, 5 deletions
diff --git a/docs/cli-examples.rst b/docs/cli-examples.rst
index 1bca166..49956a6 100644
--- a/docs/cli-examples.rst
+++ b/docs/cli-examples.rst
@@ -236,6 +236,33 @@ Download the artifacts zip archive of a job:
$ gitlab project-job artifacts --id 10 --project-id 1 > artifacts.zip
+Runners
+-------
+
+List owned runners:
+
+.. code-block:: console
+
+ $ gitlab runner list
+
+List owned runners with a filter:
+
+.. code-block:: console
+
+ $ gitlab runner list --scope active
+
+List all runners in the GitLab instance (specific and shared):
+
+.. code-block:: console
+
+ $ gitlab runner-all list
+
+Get a runner's details:
+
+.. code-block:: console
+
+ $ gitlab -v runner get --id 123
+
Other
-----
diff --git a/docs/gl_objects/runners.rst b/docs/gl_objects/runners.rst
index 1a64c01..7e90e94 100644
--- a/docs/gl_objects/runners.rst
+++ b/docs/gl_objects/runners.rst
@@ -19,6 +19,9 @@ Reference
+ :class:`gitlab.v4.objects.Runner`
+ :class:`gitlab.v4.objects.RunnerManager`
+ :attr:`gitlab.Gitlab.runners`
+ + :class:`gitlab.v4.objects.RunnerAll`
+ + :class:`gitlab.v4.objects.RunnerAllManager`
+ + :attr:`gitlab.Gitlab.runners_all`
* GitLab API: https://docs.gitlab.com/ce/api/runners.html
@@ -41,14 +44,20 @@ for this parameter are:
The returned objects hold minimal information about the runners. Use the
``get()`` method to retrieve detail about a runner.
+ Runners returned via ``runners_all.list()`` also cannot be manipulated
+ directly. You will need to use the ``get()`` method to create an editable
+ object.
+
::
# List owned runners
runners = gl.runners.list()
- # With a filter
+
+ # List owned runners with a filter
runners = gl.runners.list(scope='active')
- # List all runners, using a filter
- runners = gl.runners.all(scope='paused')
+
+ # List all runners in the GitLab instance (specific and shared), using a filter
+ runners = gl.runners_all.list(scope='paused')
Get a runner's detail::
diff --git a/gitlab/client.py b/gitlab/client.py
index 12f3d0b..e7c44ae 100644
--- a/gitlab/client.py
+++ b/gitlab/client.py
@@ -164,6 +164,8 @@ class Gitlab:
"""See :class:`~gitlab.v4.objects.RegistryRepositoryManager`"""
self.runners = objects.RunnerManager(self)
"""See :class:`~gitlab.v4.objects.RunnerManager`"""
+ self.runners_all = objects.RunnerAllManager(self)
+ """See :class:`~gitlab.v4.objects.RunnerManager`"""
self.settings = objects.ApplicationSettingsManager(self)
"""See :class:`~gitlab.v4.objects.ApplicationSettingsManager`"""
self.appearance = objects.ApplicationAppearanceManager(self)
diff --git a/gitlab/v4/objects/runners.py b/gitlab/v4/objects/runners.py
index 4f9d7ce..df75167 100644
--- a/gitlab/v4/objects/runners.py
+++ b/gitlab/v4/objects/runners.py
@@ -19,6 +19,8 @@ __all__ = [
"RunnerJobManager",
"Runner",
"RunnerManager",
+ "RunnerAll",
+ "RunnerAllManager",
"GroupRunner",
"GroupRunnerManager",
"ProjectRunner",
@@ -39,6 +41,7 @@ class RunnerJobManager(ListMixin, RESTManager):
class Runner(SaveMixin, ObjectDeleteMixin, RESTObject):
jobs: RunnerJobManager
+ _repr_attr = "description"
class RunnerManager(CRUDMixin, RESTManager):
@@ -68,7 +71,7 @@ class RunnerManager(CRUDMixin, RESTManager):
"maximum_timeout",
),
)
- _list_filters = ("scope", "tag_list")
+ _list_filters = ("scope", "type", "status", "paused", "tag_list")
_types = {"tag_list": types.CommaSeparatedListAttribute}
@cli.register_custom_action("RunnerManager", (), ("scope",))
@@ -121,6 +124,17 @@ class RunnerManager(CRUDMixin, RESTManager):
return cast(Runner, super().get(id=id, lazy=lazy, **kwargs))
+class RunnerAll(RESTObject):
+ _repr_attr = "description"
+
+
+class RunnerAllManager(ListMixin, RESTManager):
+ _path = "/runners/all"
+ _obj_cls = RunnerAll
+ _list_filters = ("scope", "type", "status", "paused", "tag_list")
+ _types = {"tag_list": types.CommaSeparatedListAttribute}
+
+
class GroupRunner(RESTObject):
pass
diff --git a/tests/unit/objects/test_runners.py b/tests/unit/objects/test_runners.py
index 3d5cdd1..d7daf08 100644
--- a/tests/unit/objects/test_runners.py
+++ b/tests/unit/objects/test_runners.py
@@ -4,6 +4,7 @@ import pytest
import responses
import gitlab
+from gitlab.v4.objects.runners import Runner, RunnerAll
runner_detail = {
"active": True,
@@ -233,8 +234,18 @@ def test_group_runners_list(gl: gitlab.Gitlab, resp_get_runners_list):
assert len(runners) == 1
-def test_all_runners_list(gl: gitlab.Gitlab, resp_get_runners_list):
+def test_runners_all(gl: gitlab.Gitlab, resp_get_runners_list):
runners = gl.runners.all()
+ assert isinstance(runners[0], Runner)
+ assert runners[0].active is True
+ assert runners[0].id == 6
+ assert runners[0].name == "test-name"
+ assert len(runners) == 1
+
+
+def test_runners_all_list(gl: gitlab.Gitlab, resp_get_runners_list):
+ runners = gl.runners_all.list()
+ assert isinstance(runners[0], RunnerAll)
assert runners[0].active is True
assert runners[0].id == 6
assert runners[0].name == "test-name"