Skip to content
Merged

query #19056

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
25 changes: 18 additions & 7 deletions sdk/monitor/azure-monitor-query/azure/monitor/query/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,29 +12,40 @@
LogsQueryResultTable,
LogsQueryResultColumn,
MetricsResult,
LogsBatchResponseError,
LogsBatchResultError,
LogsQueryRequest,
LogsQueryBody,
LogsBatchResponse,
LogsBatchResults,
LogsErrorDetails,
MetricNamespace,
MetricDefinition
MetricDefinition,
MetricsMetadataValue,
TimeSeriesElement,
Metric,
MetricValue,
MetricAvailability
)

from ._version import VERSION

__all__ = [
"LogsClient",
"LogsBatchResponse",
"LogsBatchResponseError",
"LogsBatchResults",
"LogsBatchResultError",
"LogsQueryResults",
"LogsQueryResultColumn",
"LogsQueryResultTable",
"LogsQueryRequest",
"LogsQueryBody",
"LogsErrorDetails",
"MetricsClient",
"MetricNamespace",
"MetricDefinition",
"MetricsResult",
"LocalizableString",
"MetricsMetadataValue",
"TimeSeriesElement",
"Metric",
"MetricValue",
"MetricAvailability"
]

__version__ = VERSION
14 changes: 14 additions & 0 deletions sdk/monitor/azure-monitor-query/azure/monitor/query/_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,20 @@ def get_authentication_policy(

raise TypeError("Unsupported credential")

def get_metrics_authentication_policy(
credential, # type: TokenCredential
):
# type: (...) -> BearerTokenCredentialPolicy
"""Returns the correct authentication policy
"""

if credential is None:
raise ValueError("Parameter 'credential' must not be None.")
if hasattr(credential, "get_token"):
return BearerTokenCredentialPolicy(credential, "https://management.azure.com/.default")

raise TypeError("Unsupported credential")

def process_error(exception):
raise_error = HttpResponseError
raise raise_error(message=exception.message, response=exception.response)
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,10 @@

from ._generated.models import BatchRequest
from ._helpers import get_authentication_policy, process_error
from ._models import LogsQueryResults, LogsQueryRequest, LogsQueryBody
from ._models import LogsQueryResults, LogsQueryRequest, LogsQueryBody, LogsBatchResults

if TYPE_CHECKING:
from azure.core.credentials import TokenCredential
from ._models import LogsBatchResponse


class LogsClient(object):
Expand Down Expand Up @@ -99,33 +98,33 @@ def query(self, workspace_id, query, **kwargs):
)

try:
return self._query_op.execute(
return LogsQueryResults._from_generated(self._query_op.execute(
workspace_id=workspace_id,
body=body,
prefer=prefer,
**kwargs
)
))
except HttpResponseError as e:
process_error(e)

def batch_query(self, queries, **kwargs):
# type: (Union[Sequence[Dict], Sequence[LogsQueryRequest]], Any) -> LogsBatchResponse
# type: (Union[Sequence[Dict], Sequence[LogsQueryRequest]], Any) -> LogsBatchResults
"""Execute an Analytics query.

Executes an Analytics query for data.

:param queries: The list of queries that should be processed
:type queries: list[dict] or list[~azure.monitor.query.LogsQueryRequest]
:return: BatchResponse, or the result of cls(response)
:rtype: ~azure.monitor.query.LogsBatchResponse
:rtype: ~azure.monitor.query.LogsBatchResults
:raises: ~azure.core.exceptions.HttpResponseError
"""
try:
queries = [LogsQueryRequest(**q) for q in queries]
except (KeyError, TypeError):
pass
batch = BatchRequest(requests=queries)
return self._query_op.batch(batch, **kwargs)
return LogsBatchResults._from_generated(self._query_op.batch(batch, **kwargs))

def close(self):
# type: () -> None
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@
MonitorQueryClient,
)

from ._helpers import get_authentication_policy
from ._models import MetricsResult
from ._helpers import get_metrics_authentication_policy

if TYPE_CHECKING:
from azure.core.credentials import TokenCredential
Expand All @@ -32,7 +33,8 @@ def __init__(self, credential, **kwargs):
# type: (TokenCredential, Any) -> None
self._client = MonitorQueryClient(
credential=credential,
authentication_policy=get_authentication_policy(credential),
base_url='https://management.azure.com',
authentication_policy=get_metrics_authentication_policy(credential),
**kwargs
)
self._metrics_op = self._client.metrics
Expand Down Expand Up @@ -82,7 +84,8 @@ def query(self, resource_uri, metricnames, **kwargs):
:raises: ~azure.core.exceptions.HttpResponseError
"""
kwargs.setdefault("metricnames", ",".join(metricnames))
return self._metrics_op.list(resource_uri, connection_verify=False, **kwargs)
generated = self._metrics_op.list(resource_uri, connection_verify=False, **kwargs)
return MetricsResult._from_generated(generated)

def list_metric_namespaces(self, resource_uri, **kwargs):
# type: (str, Any) -> ItemPaged[MetricNamespace]
Expand All @@ -99,18 +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, **kwargs):
# type: (str, Any) -> ItemPaged[MetricDefinition]
def list_metric_definitions(self, resource_uri, metricnamespace=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 metricnamespace: Metric namespace to query metric definitions for.
:type metricnamespace: 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 self._namespace_op.list(resource_uri, **kwargs)

def close(self):
Expand Down
Loading