Switch globalpromstats worker to use a data interface

This commit is contained in:
Joseph Schorr 2017-07-11 14:01:07 +03:00
parent 0629a13da2
commit 8e179cb865
3 changed files with 50 additions and 5 deletions

View file

@ -3,7 +3,7 @@ import time
from app import app, metric_queue
from data.database import UseThenDisconnect
from data import model
from workers.globalpromstats.models_pre_oci import pre_oci_model as model
from util.locking import GlobalLock, LockNotAcquiredException
from util.log import logfile_path
from workers.worker import Worker
@ -34,12 +34,12 @@ class GlobalPrometheusStatsWorker(Worker):
logger.debug('Reporting global stats')
with UseThenDisconnect(app.config):
# Repository count.
metric_queue.repository_count.Set(model.repository.get_repository_count())
metric_queue.repository_count.Set(model.get_repository_count())
# User counts.
metric_queue.user_count.Set(model.user.get_active_user_count())
metric_queue.org_count.Set(model.organization.get_active_org_count())
metric_queue.robot_count.Set(model.user.get_robot_count())
metric_queue.user_count.Set(model.get_active_user_count())
metric_queue.org_count.Set(model.get_active_org_count())
metric_queue.robot_count.Set(model.get_robot_count())
def main():

View file

@ -0,0 +1,27 @@
from abc import ABCMeta, abstractmethod
from six import add_metaclass
@add_metaclass(ABCMeta)
class GlobalPromStatsWorkerDataInterface(object):
"""
Interface that represents all data store interactions required by the global prom stats worker.
"""
@abstractmethod
def get_repository_count(self):
""" Returns the number of repositories in the database. """
pass
@abstractmethod
def get_active_user_count(self):
""" Returns the number of active users in the database. """
pass
@abstractmethod
def get_active_org_count(self):
""" Returns the number of active organizations in the database. """
pass
@abstractmethod
def get_robot_count(self):
""" Returns the number of robots in the database. """
pass

View file

@ -0,0 +1,18 @@
from data import model
from workers.globalpromstats.models_interface import GlobalPromStatsWorkerDataInterface
class PreOCIModel(GlobalPromStatsWorkerDataInterface):
def get_repository_count(self):
return model.repository.get_repository_count()
def get_active_user_count(self):
return model.user.get_active_user_count()
def get_active_org_count(self):
return model.organization.get_active_org_count()
def get_robot_count(self):
return model.user.get_robot_count()
pre_oci_model = PreOCIModel()