summaryrefslogtreecommitdiff
path: root/kafka/metrics/metric_config.py
blob: 2e55abfcbdb2c262eaf3d6062ba994e7eafb66e5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from __future__ import absolute_import

import sys


class MetricConfig(object):
    """Configuration values for metrics"""
    def __init__(self, quota=None, samples=2, event_window=sys.maxsize,
                 time_window_ms=30 * 1000, tags=None):
        """
        Arguments:
            quota (Quota, optional): Upper or lower bound of a value.
            samples (int, optional): Max number of samples kept per metric.
            event_window (int, optional): Max number of values per sample.
            time_window_ms (int, optional): Max age of an individual sample.
            tags (dict of {str: str}, optional): Tags for each metric.
        """
        self.quota = quota
        self._samples = samples
        self.event_window = event_window
        self.time_window_ms = time_window_ms
        # tags should be OrderedDict (not supported in py26)
        self.tags = tags if tags else {}

    @property
    def samples(self):
        return self._samples

    @samples.setter
    def samples(self, value):
        if value < 1:
            raise ValueError('The number of samples must be at least 1.')
        self._samples = value