Skip to content

Commit 23b2a30

Browse files
author
Gauvain Pocentek
committed
Add sidekiq metrics support
1 parent 131739f commit 23b2a30

File tree

4 files changed

+54
-0
lines changed

4 files changed

+54
-0
lines changed

docs/api-objects.rst

+1
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,4 @@ API objects manipulation
2323
gl_objects/system_hooks
2424
gl_objects/todos
2525
gl_objects/users
26+
gl_objects/sidekiq

docs/gl_objects/sidekiq.rst

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
###############
2+
Sidekiq metrics
3+
###############
4+
5+
Use the :attr:`gitlab.Gitlab.sideqik` manager object to access Gitlab Sidekiq
6+
server metrics.
7+
8+
Examples
9+
--------
10+
11+
.. code-block:: python
12+
13+
gl.sidekiq.queue_metrics()
14+
gl.sidekiq.process_metrics()
15+
gl.sidekiq.job_stats()
16+
gl.sidekiq.compound_metrics()

gitlab/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,7 @@ def __init__(self, url, private_token=None, email=None, password=None,
193193
self.team_projects = TeamProjectManager(self)
194194
self.teams = TeamManager(self)
195195
self.todos = TodoManager(self)
196+
self.sidekiq = SidekiqManager(self)
196197

197198
@staticmethod
198199
def from_config(gitlab_id=None, config_files=None):

gitlab/objects.py

+36
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,42 @@ def __ne__(self, other):
495495
return not self.__eq__(other)
496496

497497

498+
class SidekiqManager(object):
499+
"""Manager for the Sidekiq methods.
500+
501+
This manager doesn't actually manage objects but provides helper fonction
502+
for the sidekiq metrics API.
503+
"""
504+
def __init__(self, gl):
505+
"""Constructs a Sidekiq manager.
506+
507+
Args:
508+
gl (gitlab.Gitlab): Gitlab object referencing the GitLab server.
509+
"""
510+
self.gitlab = gl
511+
512+
def _simple_get(self, url, **kwargs):
513+
r = self.gitlab._raw_get(url, **kwargs)
514+
raise_error_from_response(r, GitlabGetError)
515+
return r.json()
516+
517+
def queue_metrics(self, **kwargs):
518+
"""Returns the registred queues information."""
519+
return self._simple_get('/sidekiq/queue_metrics', **kwargs)
520+
521+
def process_metrics(self, **kwargs):
522+
"""Returns the registred sidekiq workers."""
523+
return self._simple_get('/sidekiq/process_metrics', **kwargs)
524+
525+
def job_stats(self, **kwargs):
526+
"""Returns statistics about the jobs performed."""
527+
return self._simple_get('/sidekiq/job_stats', **kwargs)
528+
529+
def compound_metrics(self, **kwargs):
530+
"""Returns all available metrics and statistics."""
531+
return self._simple_get('/sidekiq/compound_metrics', **kwargs)
532+
533+
498534
class UserEmail(GitlabObject):
499535
_url = '/users/%(user_id)s/emails'
500536
canUpdate = False

0 commit comments

Comments
 (0)