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
Original file line number Diff line number Diff line change
Expand Up @@ -102,22 +102,19 @@ def list_metric_namespaces(self, resource_uri, **kwargs):
"""
return self._namespace_op.list(resource_uri, **kwargs)

def list_metric_definitions(self, resource_uri, metricnamespace=None, **kwargs):
def list_metric_definitions(self, resource_uri, metric_namespace=None, **kwargs):
# type: (str, str, Any) -> ItemPaged[MetricDefinition]
"""Lists the metric definitions for the resource.

:param resource_uri: The identifier of the resource.
:type resource_uri: str
:param metricnamespace: Metric namespace to query metric definitions for.
:type metricnamespace: str
:param metric_namespace: Metric namespace to query metric definitions for.
:type metric_namespace: str
:return: An iterator like instance of either MetricDefinitionCollection or the result of cls(response)
:rtype: ~azure.core.paging.ItemPaged[~azure.monitor.query.MetricDefinition]
:raises: ~azure.core.exceptions.HttpResponseError
"""
kwargs.setdefault("metricnamespace", metricnamespace)
return MetricDefinition._from_generated( # pylint: disable=protected-access
self._namespace_op.list(resource_uri, **kwargs)
)
return self._definitions_op.list(resource_uri, metric_namespace, **kwargs)

def close(self):
# type: () -> None
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,21 +100,19 @@ async def list_metric_namespaces(self, resource_uri, **kwargs):
"""
return await self._namespace_op.list(resource_uri, **kwargs)

async def list_metric_definitions(self, resource_uri, **kwargs):
# type: (str, Any) -> ItemPaged[MetricDefinition]
async def list_metric_definitions(self, resource_uri, metric_namespace=None, **kwargs):
# type: (str, str, Any) -> ItemPaged[MetricDefinition]
"""Lists the metric definitions for the resource.

:param resource_uri: The identifier of the resource.
:type resource_uri: str
:keyword metricnamespace: Metric namespace to query metric definitions for.
:paramtype metricnamespace: str
:param metric_namespace: Metric namespace to query metric definitions for.
:type metric_namespace: str
:return: An iterator like instance of either MetricDefinitionCollection or the result of cls(response)
:rtype: ~azure.core.paging.ItemPaged[~azure.monitor.query.MetricDefinition]
:raises: ~azure.core.exceptions.HttpResponseError
"""
return await MetricDefinition._from_generated( # pylint: disable=protected-access
self._namespace_op.list(resource_uri, **kwargs)
)
return await self._definitions_op.list(resource_uri, metric_namespace, **kwargs)

async def __aenter__(self) -> "MetricsClient":
await self._client.__aenter__()
Expand Down
1 change: 1 addition & 0 deletions sdk/monitor/azure-monitor-query/dev_requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@
-e ../../../tools/azure-sdk-tools
-e ../../core/azure-core
-e ../../identity/azure-identity
azure-mgmt-loganalytics
aiohttp>=3.0; python_version >= '3.5'
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.

import os
from azure.monitor.query import MetricsClient
from azure.identity import ClientSecretCredential

credential = ClientSecretCredential(
client_id = os.environ['AZURE_CLIENT_ID'],
client_secret = os.environ['AZURE_CLIENT_SECRET'],
tenant_id = os.environ['AZURE_TENANT_ID']
)

client = MetricsClient(credential)

metrics_uri = os.environ['METRICS_RESOURCE_URI']
response = client.list_metric_definitions(metrics_uri, metric_namespace='microsoft.eventgrid/topics')

for item in response:
pass
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@

client = MetricsClient(credential)

# metrics_uri = os.environ['METRICS_RESOURCE_URI']
metrics_uri = "/subscriptions/faa080af-c1d8-40ad-9cce-e1a450ca5b57/resourceGroups/sabhyrav-resourcegroup/providers/Microsoft.EventGrid/topics/rakshith-cloud"
metrics_uri = os.environ['METRICS_RESOURCE_URI']
response = client.query(
metrics_uri,
metricnames=["PublishSuccessCount"],
Expand Down
62 changes: 62 additions & 0 deletions sdk/monitor/azure-monitor-query/tests/test_logs_client.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import pytest
import os
from azure.identity import ClientSecretCredential
from azure.core.exceptions import HttpResponseError
from azure.monitor.query import LogsClient, LogsQueryRequest

def _credential():
credential = ClientSecretCredential(
client_id = os.environ['AZURE_CLIENT_ID'],
client_secret = os.environ['AZURE_CLIENT_SECRET'],
tenant_id = os.environ['AZURE_TENANT_ID']
)
return credential

def test_logs_auth():
credential = _credential()
client = LogsClient(credential)
query = """AppRequests |
where TimeGenerated > ago(12h) |
summarize avgRequestDuration=avg(DurationMs) by bin(TimeGenerated, 10m), _ResourceId"""

# returns LogsQueryResults
response = client.query(os.environ['LOG_WORKSPACE_ID'], query)

assert response is not None
assert response.tables is not None

def test_logs_server_timeout():
client = LogsClient(_credential())

with pytest.raises(HttpResponseError) as e:
response = client.query(
os.environ['LOG_WORKSPACE_ID'],
"range x from 1 to 10000000000 step 1 | count",
server_timeout=1,
)
assert e.message.contains('Gateway timeout')

def test_logs_batch_query():
client = LogsClient(_credential())

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

assert len(response.responses) == 3

36 changes: 36 additions & 0 deletions sdk/monitor/azure-monitor-query/tests/test_metrics_client.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import pytest
import os
from azure.identity import ClientSecretCredential
from azure.core.exceptions import HttpResponseError
from azure.monitor.query import MetricsClient

def _credential():
credential = ClientSecretCredential(
client_id = os.environ['AZURE_CLIENT_ID'],
client_secret = os.environ['AZURE_CLIENT_SECRET'],
tenant_id = os.environ['AZURE_TENANT_ID']
)
return credential

def test_metrics_auth():
credential = _credential()
client = MetricsClient(credential)
# returns LogsQueryResults
response = client.query(os.environ['METRICS_RESOURCE_URI'], metricnames=["PublishSuccessCount"], timespan='P2D')

assert response is not None
assert response.metrics is not None

def test_metrics_namespaces():
client = MetricsClient(_credential())

response = client.list_metric_namespaces(os.environ['METRICS_RESOURCE_URI'])

assert response is not None

def test_metrics_definitions():
client = MetricsClient(_credential())

response = client.list_metric_definitions(os.environ['METRICS_RESOURCE_URI'], metric_namespace='microsoft.eventgrid/topics')

assert response is not None
6 changes: 0 additions & 6 deletions sdk/monitor/azure-monitor-query/tests/test_monitor.py

This file was deleted.

13 changes: 13 additions & 0 deletions sdk/monitor/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,16 @@ stages:
AZURE_CLIENT_ID: $(aad-azure-sdk-test-client-id)
AZURE_CLIENT_SECRET: $(aad-azure-sdk-test-client-secret)
AZURE_TEST_RUN_LIVE: 'true'
- template: /eng/pipelines/templates/stages/archetype-sdk-tests.yml
parameters:
ServiceDirectory: monitor
TestTimeoutInMinutes: 300
BuildTargetingString: azure-monitor-query
EnvVars:
AZURE_SUBSCRIPTION_ID: $(azure-subscription-id)
AZURE_TENANT_ID: $(aad-azure-sdk-test-tenant-id)
AZURE_CLIENT_ID: $(aad-azure-sdk-test-client-id)
AZURE_CLIENT_SECRET: $(aad-azure-sdk-test-client-secret)
LOG_WORKSPACE_ID: $(azure-monitor-query-log-workspace)
METRICS_RESOURCE_URI: $(azure-monitor-query-metrics-uri)
AZURE_TEST_RUN_LIVE: 'true'