Skip to content

Commit bc0e7f8

Browse files
Rakshith Bhyravabhotlaiscai-msft
authored andcommitted
Update metadata values (#20365)
* Update metadata values * distributed trace * oops * Update sdk/monitor/azure-monitor-query/CHANGELOG.md * Apply suggestions from code review
1 parent 448af6d commit bc0e7f8

File tree

9 files changed

+54
-64
lines changed

9 files changed

+54
-64
lines changed

sdk/monitor/azure-monitor-query/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
- `interval` and `time_grain` are renamed to `granularity`
2121
- `orderby` is renamed to `order_by`
2222
- `LogsQueryResult` now returns `datetime` objects for a time values.
23+
- `LogsBatchQuery` doesn't accept a `request_id` anymore.
24+
- `MetricsMetadataValues` is removed. A dictionary is used instead.
2325

2426
### Bugs Fixed
2527

sdk/monitor/azure-monitor-query/azure/monitor/query/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
LogsBatchQuery,
1919
MetricNamespace,
2020
MetricDefinition,
21-
MetricsMetadataValue,
2221
TimeSeriesElement,
2322
Metric,
2423
MetricValue,
@@ -40,7 +39,6 @@
4039
"MetricNamespace",
4140
"MetricDefinition",
4241
"MetricsResult",
43-
"MetricsMetadataValue",
4442
"TimeSeriesElement",
4543
"Metric",
4644
"MetricValue",

sdk/monitor/azure-monitor-query/azure/monitor/query/_logs_query_client.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
from typing import TYPE_CHECKING, Any, Union, Sequence, Dict, Optional
99
from azure.core.exceptions import HttpResponseError
10+
from azure.core.tracing.decorator import distributed_trace
1011

1112
from ._generated._monitor_query_client import MonitorQueryClient
1213

@@ -49,6 +50,7 @@ def __init__(self, credential, **kwargs):
4950
)
5051
self._query_op = self._client.query
5152

53+
@distributed_trace
5254
def query(self, workspace_id, query, timespan=None, **kwargs):
5355
# type: (str, str, Optional[timedelta], Any) -> LogsQueryResult
5456
"""Execute an Analytics query.
@@ -122,6 +124,7 @@ def query(self, workspace_id, query, timespan=None, **kwargs):
122124
except HttpResponseError as e:
123125
process_error(e)
124126

127+
@distributed_trace
125128
def query_batch(self, queries, **kwargs):
126129
# type: (Union[Sequence[Dict], Sequence[LogsBatchQuery]], Any) -> Sequence[LogsBatchQueryResult]
127130
"""Execute a list of analytics queries. Each request can be either a LogQueryRequest

sdk/monitor/azure-monitor-query/azure/monitor/query/_metrics_query_client.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
# pylint: disable=anomalous-backslash-in-string
99

1010
from typing import TYPE_CHECKING, Any, Optional
11+
from azure.core.tracing.decorator import distributed_trace
1112

1213
from ._generated._monitor_query_client import (
1314
MonitorQueryClient,
@@ -53,6 +54,7 @@ def __init__(self, credential, **kwargs):
5354
self._namespace_op = self._client.metric_namespaces
5455
self._definitions_op = self._client.metric_definitions
5556

57+
@distributed_trace
5658
def query(self, resource_uri, metric_names, **kwargs):
5759
# type: (str, list, Optional[timedelta], Any) -> MetricsResult
5860
"""Lists the metric values for a resource.
@@ -122,6 +124,7 @@ def query(self, resource_uri, metric_names, **kwargs):
122124
generated = self._metrics_op.list(resource_uri, connection_verify=False, **kwargs)
123125
return MetricsResult._from_generated(generated) # pylint: disable=protected-access
124126

127+
@distributed_trace
125128
def list_metric_namespaces(self, resource_uri, **kwargs):
126129
# type: (str, Any) -> ItemPaged[MetricNamespace]
127130
"""Lists the metric namespaces for the resource.
@@ -145,6 +148,7 @@ def list_metric_namespaces(self, resource_uri, **kwargs):
145148
),
146149
**kwargs)
147150

151+
@distributed_trace
148152
def list_metric_definitions(self, resource_uri, metric_namespace=None, **kwargs):
149153
# type: (str, str, Any) -> ItemPaged[MetricDefinition]
150154
"""Lists the metric definitions for the resource.

sdk/monitor/azure-monitor-query/azure/monitor/query/_models.py

Lines changed: 5 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -165,8 +165,6 @@ class LogsBatchQuery(object):
165165
:keyword additional_workspaces: A list of workspaces that are included in the query.
166166
These can be qualified workspace names, workspace Ids, or Azure resource Ids.
167167
:paramtype additional_workspaces: list[str]
168-
:keyword request_id: The error details.
169-
:paramtype request_id: str
170168
:keyword int server_timeout: the server timeout. The default timeout is 3 minutes,
171169
and the maximum timeout is 10 minutes.
172170
:keyword bool include_statistics: To get information about query statistics.
@@ -201,7 +199,7 @@ def __init__(self, query, workspace_id, timespan, **kwargs): #pylint: disable=su
201199
headers = {'Prefer': prefer}
202200
timespan = construct_iso8601(timespan)
203201
additional_workspaces = kwargs.pop("additional_workspaces", None)
204-
self.id = kwargs.get("request_id", str(uuid.uuid4()))
202+
self.id = str(uuid.uuid4())
205203
self.body = {
206204
"query": query, "timespan": timespan, "workspaces": additional_workspaces
207205
}
@@ -494,7 +492,7 @@ class TimeSeriesElement(object):
494492
"""A time series result type. The discriminator value is always TimeSeries in this case.
495493
496494
:ivar metadata_values: The metadata values returned if $filter was specified in the call.
497-
:vartype metadata_values: list[~monitor_query_client.models.MetadataValue]
495+
:vartype metadata_values: dict(str, str)
498496
:ivar data: An array of data points representing the metric values. This is only returned if
499497
a result type of data is specified.
500498
:vartype data: list[~monitor_query_client.models.MetricValue]
@@ -518,39 +516,12 @@ def _from_generated(cls, generated):
518516
if not generated:
519517
return cls()
520518
return cls(
521-
metadata_values=[
522-
MetricsMetadataValue._from_generated( # pylint: disable=protected-access
523-
mval
524-
) for mval in generated.metadatavalues
525-
],
519+
metadata_values={
520+
obj.name.value: obj.value for obj in generated.metadatavalues
521+
},
526522
data=[MetricValue._from_generated(val) for val in generated.data] # pylint: disable=protected-access
527523
)
528524

529-
class MetricsMetadataValue(object):
530-
"""Represents a metric metadata value.
531-
532-
:ivar name: The name of the metadata.
533-
:vartype name: str
534-
:ivar value: The value of the metadata.
535-
:vartype value: str
536-
"""
537-
def __init__(
538-
self,
539-
**kwargs
540-
):
541-
# type: (Any) -> None
542-
self.name = kwargs.get('name', None)
543-
self.value = kwargs.get('value', None)
544-
545-
@classmethod
546-
def _from_generated(cls, generated):
547-
if not generated:
548-
return cls()
549-
return cls(
550-
name=generated.name.value,
551-
value=generated.value
552-
)
553-
554525

555526
class MetricAvailability(object):
556527
"""Metric availability specifies the time grain (aggregation interval or frequency)

sdk/monitor/azure-monitor-query/azure/monitor/query/aio/_logs_query_client_async.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
from datetime import datetime, timedelta
99
from typing import Any, Tuple, Union, Sequence, Dict, Optional, TYPE_CHECKING
1010
from azure.core.exceptions import HttpResponseError
11+
from azure.core.tracing.decorator_async import distributed_trace_async
12+
1113
from .._generated.aio._monitor_query_client import MonitorQueryClient
1214

1315
from .._generated.models import BatchRequest, QueryBody as LogsQueryBody
@@ -38,6 +40,7 @@ def __init__(self, credential: "AsyncTokenCredential", **kwargs: Any) -> None:
3840
)
3941
self._query_op = self._client.query
4042

43+
@distributed_trace_async
4144
async def query(
4245
self,
4346
workspace_id: str,
@@ -106,6 +109,7 @@ async def query(
106109
except HttpResponseError as e:
107110
process_error(e)
108111

112+
@distributed_trace_async
109113
async def query_batch(
110114
self,
111115
queries: Union[Sequence[Dict], Sequence[LogsBatchQuery]],
@@ -118,7 +122,7 @@ async def query_batch(
118122
119123
:param queries: The list of queries that should be processed
120124
:type queries: list[dict] or list[~azure.monitor.query.LogsBatchQuery]
121-
:return: BatchResponse, or the result of cls(response)
125+
:return: list of LogsBatchQueryResult objects, or the result of cls(response)
122126
:rtype: ~list[~azure.monitor.query.LogsBatchQueryResult]
123127
:raises: ~azure.core.exceptions.HttpResponseError
124128
"""

sdk/monitor/azure-monitor-query/azure/monitor/query/aio/_metrics_query_client_async.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
from typing import TYPE_CHECKING, Any, List, Optional
1212

1313
from azure.core.async_paging import AsyncItemPaged
14+
from azure.core.tracing.decorator import distributed_trace
15+
from azure.core.tracing.decorator_async import distributed_trace_async
1416

1517
from .._generated.aio._monitor_query_client import (
1618
MonitorQueryClient,
@@ -43,6 +45,7 @@ def __init__(self, credential: "AsyncTokenCredential", **kwargs: Any) -> None:
4345
self._namespace_op = self._client.metric_namespaces
4446
self._definitions_op = self._client.metric_definitions
4547

48+
@distributed_trace_async
4649
async def query(
4750
self,
4851
resource_uri: str,
@@ -106,6 +109,7 @@ async def query(
106109
generated = await self._metrics_op.list(resource_uri, connection_verify=False, **kwargs)
107110
return MetricsResult._from_generated(generated) # pylint: disable=protected-access
108111

112+
@distributed_trace
109113
def list_metric_namespaces(self, resource_uri: str, **kwargs: Any) -> AsyncItemPaged[MetricNamespace]:
110114
"""Lists the metric namespaces for the resource.
111115
@@ -128,6 +132,7 @@ def list_metric_namespaces(self, resource_uri: str, **kwargs: Any) -> AsyncItemP
128132
),
129133
**kwargs)
130134

135+
@distributed_trace
131136
def list_metric_definitions(
132137
self,
133138
resource_uri: str,

sdk/monitor/azure-monitor-query/samples/async_samples/sample_metric_definitions_async.py

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,25 @@
66
from azure.monitor.query.aio import MetricsQueryClient
77
from azure.identity.aio import DefaultAzureCredential
88

9-
async def list_namespaces():
10-
credential = DefaultAzureCredential(
11-
client_id = os.environ['AZURE_CLIENT_ID'],
12-
client_secret = os.environ['AZURE_CLIENT_SECRET'],
13-
tenant_id = os.environ['AZURE_TENANT_ID']
14-
)
9+
class ListDefinitions():
10+
async def list_definitions(self):
11+
credential = DefaultAzureCredential()
1512

16-
client = MetricsQueryClient(credential)
13+
client = MetricsQueryClient(credential)
1714

18-
metrics_uri = os.environ['METRICS_RESOURCE_URI']
19-
response = client.list_metric_definitions(metrics_uri)
15+
metrics_uri = os.environ['METRICS_RESOURCE_URI']
16+
async with client:
17+
response = client.list_metric_definitions(metrics_uri)
2018

21-
async for item in response:
22-
print(item)
23-
for availability in item.metric_availabilities:
24-
print(availability.time_grain)
19+
async for item in response:
20+
print(item.namespace)
21+
for availability in item.metric_availabilities:
22+
print(availability.granularity)
23+
24+
async def main():
25+
sample = ListDefinitions()
26+
await sample.list_definitions()
2527

2628
if __name__ == '__main__':
2729
loop = asyncio.get_event_loop()
28-
loop.run_until_complete(list_namespaces())
30+
loop.run_until_complete(main())

sdk/monitor/azure-monitor-query/samples/async_samples/sample_metric_namespaces_async.py

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,23 @@
66
from azure.monitor.query.aio import MetricsQueryClient
77
from azure.identity.aio import DefaultAzureCredential
88

9-
async def list_namespaces():
10-
credential = DefaultAzureCredential(
11-
client_id = os.environ['AZURE_CLIENT_ID'],
12-
client_secret = os.environ['AZURE_CLIENT_SECRET'],
13-
tenant_id = os.environ['AZURE_TENANT_ID']
14-
)
9+
class ListNameSpaces():
10+
async def list_namespaces(self):
11+
credential = DefaultAzureCredential()
1512

16-
client = MetricsQueryClient(credential)
13+
client = MetricsQueryClient(credential)
1714

18-
metrics_uri = os.environ['METRICS_RESOURCE_URI']
19-
response = client.list_metric_namespaces(metrics_uri)
15+
metrics_uri = os.environ['METRICS_RESOURCE_URI']
16+
async with client:
17+
response = client.list_metric_namespaces(metrics_uri)
18+
async for item in response:
19+
print(item.fully_qualified_namespace)
20+
print(item.type)
2021

21-
async for item in response:
22-
print(item.metric_namespace_name)
23-
print(item.type)
22+
async def main():
23+
sample = ListNameSpaces()
24+
await sample.list_namespaces()
2425

2526
if __name__ == '__main__':
2627
loop = asyncio.get_event_loop()
27-
loop.run_until_complete(list_namespaces())
28+
loop.run_until_complete(main())

0 commit comments

Comments
 (0)