summaryrefslogtreecommitdiffstats
path: root/cns-libs/cnslibs/common/utils.py
blob: 2d16c497ad31e01ccc3f2499c02522c518cae7e6 (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
34
35
36
37
38
39
40
"""Generic host utility functions.

Generic utility functions not specifc to a larger suite of tools.
For example, not specific to OCP, Gluster, Heketi, etc.
"""

import random
import string

from prometheus_client.parser import text_string_to_metric_families


def get_random_str(size=14):
    chars = string.ascii_lowercase + string.digits
    return ''.join(random.choice(chars) for _ in range(size))


def parse_prometheus_data(text):
    """Parse prometheus-formatted text to the python objects

    Args:
        text (str): prometheus-formatted data

    Returns:
        dict: parsed data as python dictionary
    """
    metrics = {}
    for family in text_string_to_metric_families(text):
        for sample in family.samples:
            key, data, val = (sample.name, sample.labels, sample.value)
            if data.keys():
                data['value'] = val
                if key in metrics.keys():
                    metrics[key].append(data)
                else:
                    metrics[key] = [data]
            else:
                metrics[key] = val

    return metrics