Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions sdk/monitor/azure-monitor-query/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@

### Breaking Changes

- Rename `batch_query` to `query_batch`.
- Rename `LogsBatchQueryRequest` to `LogsBatchQuery`.

### Bugs Fixed

### Other Changes
Expand Down
6 changes: 3 additions & 3 deletions sdk/monitor/azure-monitor-query/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -183,12 +183,12 @@ credential = DefaultAzureCredential()
client = LogsQueryClient(credential)

requests = [
LogsBatchQueryRequest(
LogsBatchQuery(
query="AzureActivity | summarize count()",
duration=timedelta(hours=1),
workspace_id=os.environ['LOG_WORKSPACE_ID']
),
LogsBatchQueryRequest(
LogsBatchQuery(
query= """AppRequests | take 10 |
summarize avgRequestDuration=avg(DurationMs) by bin(TimeGenerated, 10m), _ResourceId""",
duration=timedelta(hours=1),
Expand All @@ -200,7 +200,7 @@ requests = [
workspace_id=os.environ['LOG_WORKSPACE_ID']
),
]
response = client.batch_query(requests)
response = client.query_batch(requests)

for rsp in response:
body = rsp.body
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
LogsQueryResultColumn,
MetricsResult,
LogsBatchResultError,
LogsBatchQueryRequest,
LogsBatchQuery,
MetricNamespace,
MetricDefinition,
MetricsMetadataValue,
Expand All @@ -35,7 +35,7 @@
"LogsQueryResult",
"LogsQueryResultColumn",
"LogsQueryResultTable",
"LogsBatchQueryRequest",
"LogsBatchQuery",
"MetricsQueryClient",
"MetricNamespace",
"MetricDefinition",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

from ._generated.models import BatchRequest, QueryBody as LogsQueryBody
from ._helpers import get_authentication_policy, process_error, construct_iso8601, order_results
from ._models import LogsQueryResult, LogsBatchQueryRequest, LogsBatchQueryResult
from ._models import LogsQueryResult, LogsBatchQuery, LogsBatchQueryResult

if TYPE_CHECKING:
from azure.core.credentials import TokenCredential
Expand Down Expand Up @@ -130,30 +130,30 @@ def query(self, workspace_id, query, duration=None, **kwargs):
except HttpResponseError as e:
process_error(e)

def batch_query(self, queries, **kwargs):
# type: (Union[Sequence[Dict], Sequence[LogsBatchQueryRequest]], Any) -> Sequence[LogsBatchQueryResult]
def query_batch(self, queries, **kwargs):
# type: (Union[Sequence[Dict], Sequence[LogsBatchQuery]], Any) -> Sequence[LogsBatchQueryResult]
"""Execute a list of analytics queries. Each request can be either a LogQueryRequest
object or an equivalent serialized model.

The response is returned in the same order as that of the requests sent.

:param queries: The list of queries that should be processed
:type queries: list[dict] or list[~azure.monitor.query.LogsBatchQueryRequest]
:type queries: list[dict] or list[~azure.monitor.query.LogsBatchQuery]
:return: List of LogsBatchQueryResult, or the result of cls(response)
:rtype: ~list[~azure.monitor.query.LogsBatchQueryResult]
:raises: ~azure.core.exceptions.HttpResponseError

.. admonition:: Example:

.. literalinclude:: ../samples/sample_batch_query.py
:start-after: [START send_batch_query]
:end-before: [END send_batch_query]
:start-after: [START send_query_batch]
:end-before: [END send_query_batch]
:language: python
:dedent: 0
:caption: Get a response for multiple Log Queries.
"""
try:
queries = [LogsBatchQueryRequest(**q) for q in queries]
queries = [LogsBatchQuery(**q) for q in queries]
except (KeyError, TypeError):
pass
queries = [q._to_generated() for q in queries] # pylint: disable=protected-access
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ def _from_generated(cls, generated):
metrics=[Metric._from_generated(m) for m in generated.value] # pylint: disable=protected-access
)

class LogsBatchQueryRequest(object):
class LogsBatchQuery(object):
"""A single request in a batch.

Variables are only populated by the server, and will be ignored when sending a request.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

from .._generated.models import BatchRequest, QueryBody as LogsQueryBody
from .._helpers import process_error, construct_iso8601, order_results
from .._models import LogsQueryResult, LogsBatchQueryRequest, LogsBatchQueryResult
from .._models import LogsQueryResult, LogsBatchQuery, LogsBatchQueryResult
from ._helpers_asyc import get_authentication_policy

if TYPE_CHECKING:
Expand Down Expand Up @@ -114,9 +114,9 @@ async def query(
except HttpResponseError as e:
process_error(e)

async def batch_query(
async def query_batch(
self,
queries: Union[Sequence[Dict], Sequence[LogsBatchQueryRequest]],
queries: Union[Sequence[Dict], Sequence[LogsBatchQuery]],
**kwargs: Any
) -> Sequence[LogsBatchQueryResult]:
"""Execute a list of analytics queries. Each request can be either a LogQueryRequest
Expand All @@ -125,13 +125,13 @@ async def batch_query(
The response is returned in the same order as that of the requests sent.

:param queries: The list of queries that should be processed
:type queries: list[dict] or list[~azure.monitor.query.LogsBatchQueryRequest]
:type queries: list[dict] or list[~azure.monitor.query.LogsBatchQuery]
:return: BatchResponse, or the result of cls(response)
:rtype: ~list[~azure.monitor.query.LogsBatchQueryResult]
:raises: ~azure.core.exceptions.HttpResponseError
"""
try:
queries = [LogsBatchQueryRequest(**q) for q in queries]
queries = [LogsBatchQuery(**q) for q in queries]
except (KeyError, TypeError):
pass
queries = [q._to_generated() for q in queries] # pylint: disable=protected-access
Expand Down
14 changes: 7 additions & 7 deletions sdk/monitor/azure-monitor-query/samples/sample_batch_query.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,35 +4,35 @@
from datetime import datetime, timedelta
import os
import pandas as pd
from azure.monitor.query import LogsQueryClient, LogsBatchQueryRequest
from azure.monitor.query import LogsQueryClient, LogsBatchQuery
from azure.identity import DefaultAzureCredential


credential = DefaultAzureCredential()

client = LogsQueryClient(credential)

# [START send_batch_query]
# [START send_query_batch]
requests = [
LogsBatchQueryRequest(
LogsBatchQuery(
query="AzureActivity | summarize count()",
duration=timedelta(hours=1),
workspace_id= os.environ['LOG_WORKSPACE_ID']
),
LogsBatchQueryRequest(
LogsBatchQuery(
query= """AppRequests | take 10 |
summarize avgRequestDuration=avg(DurationMs) by bin(TimeGenerated, 10m), _ResourceId""",
duration=timedelta(hours=1),
start_time=datetime(2021, 6, 2),
workspace_id= os.environ['LOG_WORKSPACE_ID']
),
LogsBatchQueryRequest(
LogsBatchQuery(
query= "AppRequestss | take 5",
workspace_id= os.environ['LOG_WORKSPACE_ID'],
include_statistics=True
),
]
responses = client.batch_query(requests)
responses = client.query_batch(requests)

for response in responses:
try:
Expand All @@ -42,4 +42,4 @@
except TypeError:
print(response.error)

# [END send_batch_query]
# [END send_query_batch]
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
"workspace": os.environ['LOG_WORKSPACE_ID']
}
]
responses = client.batch_query(requests)
responses = client.query_batch(requests)

for response in responses:
try:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import os
from azure.identity.aio import ClientSecretCredential
from azure.core.exceptions import HttpResponseError
from azure.monitor.query import LogsBatchQueryRequest
from azure.monitor.query import LogsBatchQuery
from azure.monitor.query.aio import LogsQueryClient

def _credential():
Expand Down Expand Up @@ -40,27 +40,27 @@ async def test_logs_server_timeout():
assert e.message.contains('Gateway timeout')

@pytest.mark.live_test_only
async def test_logs_batch_query():
async def test_logs_query_batch():
client = LogsQueryClient(_credential())

requests = [
LogsBatchQueryRequest(
LogsBatchQuery(
query="AzureActivity | summarize count()",
timespan="PT1H",
workspace_id= os.environ['LOG_WORKSPACE_ID']
),
LogsBatchQueryRequest(
LogsBatchQuery(
query= """AppRequests | take 10 |
summarize avgRequestDuration=avg(DurationMs) by bin(TimeGenerated, 10m), _ResourceId""",
timespan="PT1H",
workspace_id= os.environ['LOG_WORKSPACE_ID']
),
LogsBatchQueryRequest(
LogsBatchQuery(
query= "AppRequests | take 2",
workspace_id= os.environ['LOG_WORKSPACE_ID']
),
]
response = await client.batch_query(requests)
response = await client.query_batch(requests)

assert len(response) == 3

Expand All @@ -85,30 +85,30 @@ async def test_logs_single_query_additional_workspaces_async():
@pytest.mark.skip('https://github.com/Azure/azure-sdk-for-python/issues/19382')
@pytest.mark.live_test_only
@pytest.mark.asyncio
async def test_logs_batch_query_additional_workspaces():
async def test_logs_query_batch_additional_workspaces():
client = LogsQueryClient(_credential())
query = "union * | where TimeGenerated > ago(100d) | project TenantId | summarize count() by TenantId"

requests = [
LogsBatchQueryRequest(
LogsBatchQuery(
query,
timespan="PT1H",
workspace_id= os.environ['LOG_WORKSPACE_ID'],
additional_workspaces=[os.environ['SECONDARY_WORKSPACE_ID']]
),
LogsBatchQueryRequest(
LogsBatchQuery(
query,
timespan="PT1H",
workspace_id= os.environ['LOG_WORKSPACE_ID'],
additional_workspaces=[os.environ['SECONDARY_WORKSPACE_ID']]
),
LogsBatchQueryRequest(
LogsBatchQuery(
query,
workspace_id= os.environ['LOG_WORKSPACE_ID'],
additional_workspaces=[os.environ['SECONDARY_WORKSPACE_ID']]
),
]
response = await client.batch_query(requests)
response = await client.query_batch(requests)

assert len(response) == 3

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ def run_sync(self):
Avoid putting any ancilliary logic (e.g. generating UUIDs), and put this in the setup/init instead
so that we're only measuring the client API call.
"""
self.logs_client.batch_query(
self.logs_client.query_batch(
self.requests
)

Expand All @@ -76,6 +76,6 @@ async def run_async(self):
Avoid putting any ancilliary logic (e.g. generating UUIDs), and put this in the setup/init instead
so that we're only measuring the client API call.
"""
await self.async_logs_client.batch_query(
await self.async_logs_client.query_batch(
self.requests
)
Loading