in auto_sizing/targets.py [0:0]
def from_file(self, target_dict: Dict, path: TextIO) -> List[Metric]:
if "metrics" not in target_dict.keys():
raise MetricsTagNotFoundException(path)
metrics_dict = target_dict["metrics"]
if "import_from_metric_hub" in metrics_dict.keys():
for app_id, metrics in metrics_dict["import_from_metric_hub"].items():
for metric in metrics:
metrics_dict[metric] = ConfigLoader.get_metric(metric, app_id)
metrics_dict.pop("import_from_metric_hub")
if (
"data_sources" in target_dict.keys()
and "import_from_metric_hub" in target_dict["data_sources"].keys()
):
for app_id, data_sources in target_dict["data_sources"][
"import_from_metric_hub"
].items():
for data_source in data_sources:
target_dict["data_sources"][data_source] = ConfigLoader.get_data_source(
data_source, app_id
)
Metric_list = []
for key, value in metrics_dict.items():
if isinstance(value, Metric):
Metric_list.append(value)
else:
data_source = target_dict["data_sources"][value["data_source"]]
Metric_list.append(
Metric(
name=key,
data_source=DataSource(
name=value["data_source"],
from_expr=data_source["from_expression"],
),
select_expr=ConfigLoader.configs.get_env()
.from_string(value["select_expression"])
.render(),
)
)
return Metric_list