in etl/glean.py [0:0]
def get_metrics(self) -> List[GleanMetric]:
data = _cache.get_json(GleanApp.METRICS_URL_TEMPLATE.format(self.app["v1_name"]))
metrics = [
(key, {**metricdict, "origin": self.app["app_name"]})
for key, metricdict in data.items()
]
for dependency in self.get_dependencies():
if "v1_name" in dependency:
dependency_metrics = _cache.get_json(
GleanApp.METRICS_URL_TEMPLATE.format(dependency["v1_name"])
)
# augment these dependency names with the library_name where they came from
metrics += [
(d[0], {**d[1], "origin": dependency["library_name"]})
for d in dependency_metrics.items()
]
ping_names = set(self._get_ping_data().keys())
processed = []
# deduplicate metrics
metric_map = {}
for metric in metrics:
if (
not metric_map.get(metric[0])
or metric_map[metric[0]][1]["history"][-1]["dates"]["last"]
< metric[1]["history"][-1]["dates"]["last"]
):
metric_map[metric[0]] = metric
for _id, defn in metric_map.values():
metric = GleanMetric(_id, defn, ping_names=ping_names)
processed.append(metric)
return processed