Source code for prometheus_api_client.metrics_list

"""A list of Metric objects."""

from .metric import Metric


[docs]class MetricsList(list): """A Class to initialize a list of Metric objects at once. :param metric_data_list: (list|json) This is an individual metric or list of metrics received from prometheus as a result of a promql query. Example Usage: .. code-block:: python prom = PrometheusConnect() my_label_config = {'cluster': 'my_cluster_id', 'label_2': 'label_2_value'} metric_data = prom.get_metric_range_data(metric_name='up', label_config=my_label_config) metric_object_list = MetricsList(metric_data) # metric_object_list will be initialized as # a list of Metric objects for all the # metrics downloaded using get_metric query """ def __init__(self, metric_data_list): """Class MetricsList constructor.""" if not isinstance(metric_data_list, list): metric_data_list = [metric_data_list] metric_object_list = [] def add_metric_to_object_list(metric): metric_object = Metric(metric) if metric_object in metric_object_list: metric_object_list[metric_object_list.index(metric_object)] += metric_object else: metric_object_list.append(metric_object) for i in metric_data_list: # If it is a list of lists (for example: while reading from multiple json files) if isinstance(i, list): for metric in i: add_metric_to_object_list(metric) else: add_metric_to_object_list(i) super(MetricsList, self).__init__(metric_object_list)