58 lines
1.4 KiB
Python
58 lines
1.4 KiB
Python
from __future__ import absolute_import
|
|
|
|
import abc
|
|
|
|
|
|
class AbstractMetricsReporter(object):
|
|
"""
|
|
An abstract class to allow things to listen as new metrics
|
|
are created so they can be reported.
|
|
"""
|
|
__metaclass__ = abc.ABCMeta
|
|
|
|
@abc.abstractmethod
|
|
def init(self, metrics):
|
|
"""
|
|
This is called when the reporter is first registered
|
|
to initially register all existing metrics
|
|
|
|
Arguments:
|
|
metrics (list of KafkaMetric): All currently existing metrics
|
|
"""
|
|
raise NotImplementedError
|
|
|
|
@abc.abstractmethod
|
|
def metric_change(self, metric):
|
|
"""
|
|
This is called whenever a metric is updated or added
|
|
|
|
Arguments:
|
|
metric (KafkaMetric)
|
|
"""
|
|
raise NotImplementedError
|
|
|
|
@abc.abstractmethod
|
|
def metric_removal(self, metric):
|
|
"""
|
|
This is called whenever a metric is removed
|
|
|
|
Arguments:
|
|
metric (KafkaMetric)
|
|
"""
|
|
raise NotImplementedError
|
|
|
|
@abc.abstractmethod
|
|
def configure(self, configs):
|
|
"""
|
|
Configure this class with the given key-value pairs
|
|
|
|
Arguments:
|
|
configs (dict of {str, ?})
|
|
"""
|
|
raise NotImplementedError
|
|
|
|
@abc.abstractmethod
|
|
def close(self):
|
|
"""Called when the metrics repository is closed."""
|
|
raise NotImplementedError
|