Skip to content

Commit 30562ca

Browse files
committed
Support multiple metrics
This add support to request multiple metrics in a single request. The limitation to query data only from a single component is still in place. Signed-off-by: cwasicki <[email protected]>
1 parent f2a6711 commit 30562ca

File tree

2 files changed

+6
-8
lines changed

2 files changed

+6
-8
lines changed

examples/client.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,6 @@ async def run(
9898

9999
metrics = [Metric[mn] for mn in metric_names]
100100

101-
assert len(metrics) == 1, "Only single metric is supported"
102-
103101
def data_iter() -> AsyncIterator[MetricSample]:
104102
"""Iterate over single metric.
105103
@@ -108,10 +106,10 @@ def data_iter() -> AsyncIterator[MetricSample]:
108106
Returns:
109107
Iterator over single metric samples
110108
"""
111-
return client.iterate_single_metric(
109+
return client.iterate_single_component(
112110
microgrid_id=microgrid_id,
113111
component_id=component_id,
114-
metric=metrics[0],
112+
metrics=metrics,
115113
start_dt=start_dt,
116114
end_dt=end_dt,
117115
page_size=page_size,

src/frequenz/client/reporting/_client.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -117,12 +117,12 @@ def __init__(self, service_address: str):
117117
self._stub = ReportingStub(self._grpc_channel)
118118

119119
# pylint: disable=too-many-arguments
120-
async def iterate_single_metric(
120+
async def iterate_single_component(
121121
self,
122122
*,
123123
microgrid_id: int,
124124
component_id: int,
125-
metric: Metric,
125+
metrics: Metric | list[Metric],
126126
start_dt: datetime,
127127
end_dt: datetime,
128128
page_size: int = 1000,
@@ -132,7 +132,7 @@ async def iterate_single_metric(
132132
Args:
133133
microgrid_id: The microgrid ID.
134134
component_id: The component ID.
135-
metric: The metric name.
135+
metrics: The metric name or list of metric names.
136136
start_dt: The start date and time.
137137
end_dt: The end date and time.
138138
page_size: The page size.
@@ -144,7 +144,7 @@ async def iterate_single_metric(
144144
"""
145145
async for page in self._iterate_components_data_pages(
146146
microgrid_components=[(microgrid_id, [component_id])],
147-
metrics=[metric],
147+
metrics=[metrics] if isinstance(metrics, Metric) else metrics,
148148
start_dt=start_dt,
149149
end_dt=end_dt,
150150
page_size=page_size,

0 commit comments

Comments
 (0)