Repository URL to install this package:
|
Version:
1:7.26.0-1 ▾
|
datadog-agent
/
opt
/
datadog-agent
/
embedded
/
lib
/
python3.8
/
site-packages
/
datadog_checks
/
envoy
/
utils.py
|
|---|
def make_metric_tree(metrics):
metric_tree = {}
for metric in metrics:
# We make `tree` reference the root of the tree
# at every iteration to create the new branches.
tree = metric_tree
# Separate each full metric name into its constituent parts.
parts = metric.split('.')
for i, part in enumerate(parts):
# Create branch if necessary.
if part not in tree:
tree[part] = {}
# Move to the next branch.
tree = tree[part]
# Create a list for our possible tag configurations if necessary.
if '|_tags_|' not in tree:
tree['|_tags_|'] = []
# Get the tag configuration for the current branch's metric part.
tags = metrics[metric]['tags'][i]
# Ensure the tag configuration doesn't already exist.
if tags not in tree['|_tags_|']:
# Each metric part can be proceeded by a differing number of tags.
tree['|_tags_|'].append(tags)
# Sort possible tag configurations by length in reverse order.
tree['|_tags_|'] = sorted(tree['|_tags_|'], key=lambda t: len(t), reverse=True)
return metric_tree