-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
pdaru
committed
Jul 8, 2024
1 parent
c012bc0
commit 932f174
Showing
2 changed files
with
289 additions
and
0 deletions.
There are no files selected for viewing
135 changes: 135 additions & 0 deletions
135
src/amg/azext_amg/vendored_sdks/aio/operations/_operations.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,135 @@ | ||
# pylint: disable=too-many-lines | ||
# coding=utf-8 | ||
# -------------------------------------------------------------------------- | ||
# Copyright (c) Microsoft Corporation. All rights reserved. | ||
# Licensed under the MIT License. See License.txt in the project root for license information. | ||
# Code generated by Microsoft (R) AutoRest Code Generator. | ||
# Changes may cause incorrect behavior and will be lost if the code is regenerated. | ||
# -------------------------------------------------------------------------- | ||
from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar | ||
import urllib.parse | ||
|
||
from azure.core.async_paging import AsyncItemPaged, AsyncList | ||
from azure.core.exceptions import ( | ||
ClientAuthenticationError, | ||
HttpResponseError, | ||
ResourceExistsError, | ||
ResourceNotFoundError, | ||
ResourceNotModifiedError, | ||
map_error, | ||
) | ||
from azure.core.pipeline import PipelineResponse | ||
from azure.core.pipeline.transport import AsyncHttpResponse | ||
from azure.core.rest import HttpRequest | ||
from azure.core.tracing.decorator import distributed_trace | ||
from azure.core.utils import case_insensitive_dict | ||
from azure.mgmt.core.exceptions import ARMErrorFormat | ||
|
||
from ... import models as _models | ||
from ..._vendor import _convert_request | ||
from ...operations._operations import build_list_request | ||
|
||
T = TypeVar("T") | ||
ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] | ||
|
||
|
||
class Operations: | ||
""" | ||
.. warning:: | ||
**DO NOT** instantiate this class directly. | ||
Instead, you should access the following operations through | ||
:class:`~azure.mgmt.dashboard.aio.DashboardManagementClient`'s | ||
:attr:`operations` attribute. | ||
""" | ||
|
||
models = _models | ||
|
||
def __init__(self, *args, **kwargs) -> None: | ||
input_args = list(args) | ||
self._client = input_args.pop(0) if input_args else kwargs.pop("client") | ||
self._config = input_args.pop(0) if input_args else kwargs.pop("config") | ||
self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") | ||
self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") | ||
|
||
@distributed_trace | ||
def list(self, **kwargs: Any) -> AsyncIterable["_models.Operation"]: | ||
"""List all available API operations provided by Microsoft.Dashboard. | ||
List all available API operations provided by Microsoft.Dashboard. | ||
:keyword callable cls: A custom type or function that will be passed the direct response | ||
:return: An iterator like instance of either Operation or the result of cls(response) | ||
:rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.dashboard.models.Operation] | ||
:raises ~azure.core.exceptions.HttpResponseError: | ||
""" | ||
_headers = kwargs.pop("headers", {}) or {} | ||
_params = case_insensitive_dict(kwargs.pop("params", {}) or {}) | ||
|
||
api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) | ||
cls: ClsType[_models.OperationListResult] = kwargs.pop("cls", None) | ||
|
||
error_map = { | ||
401: ClientAuthenticationError, | ||
404: ResourceNotFoundError, | ||
409: ResourceExistsError, | ||
304: ResourceNotModifiedError, | ||
} | ||
error_map.update(kwargs.pop("error_map", {}) or {}) | ||
|
||
def prepare_request(next_link=None): | ||
if not next_link: | ||
|
||
request = build_list_request( | ||
api_version=api_version, | ||
template_url=self.list.metadata["url"], | ||
headers=_headers, | ||
params=_params, | ||
) | ||
request = _convert_request(request) | ||
request.url = self._client.format_url(request.url) | ||
|
||
else: | ||
# make call to next link with the client's api-version | ||
_parsed_next_link = urllib.parse.urlparse(next_link) | ||
_next_request_params = case_insensitive_dict( | ||
{ | ||
key: [urllib.parse.quote(v) for v in value] | ||
for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() | ||
} | ||
) | ||
_next_request_params["api-version"] = self._config.api_version | ||
request = HttpRequest( | ||
"GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params | ||
) | ||
request = _convert_request(request) | ||
request.url = self._client.format_url(request.url) | ||
request.method = "GET" | ||
return request | ||
|
||
async def extract_data(pipeline_response): | ||
deserialized = self._deserialize("OperationListResult", pipeline_response) | ||
list_of_elem = deserialized.value | ||
if cls: | ||
list_of_elem = cls(list_of_elem) # type: ignore | ||
return deserialized.next_link or None, AsyncList(list_of_elem) | ||
|
||
async def get_next(next_link=None): | ||
request = prepare_request(next_link) | ||
|
||
_stream = False | ||
pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access | ||
request, stream=_stream, **kwargs | ||
) | ||
response = pipeline_response.http_response | ||
|
||
if response.status_code not in [200]: | ||
map_error(status_code=response.status_code, response=response, error_map=error_map) | ||
error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) | ||
raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) | ||
|
||
return pipeline_response | ||
|
||
return AsyncItemPaged(get_next, extract_data) | ||
|
||
list.metadata = {"url": "/providers/Microsoft.Dashboard/operations"} |
154 changes: 154 additions & 0 deletions
154
src/amg/azext_amg/vendored_sdks/operations/_operations.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,154 @@ | ||
# pylint: disable=too-many-lines | ||
# coding=utf-8 | ||
# -------------------------------------------------------------------------- | ||
# Copyright (c) Microsoft Corporation. All rights reserved. | ||
# Licensed under the MIT License. See License.txt in the project root for license information. | ||
# Code generated by Microsoft (R) AutoRest Code Generator. | ||
# Changes may cause incorrect behavior and will be lost if the code is regenerated. | ||
# -------------------------------------------------------------------------- | ||
from typing import Any, Callable, Dict, Iterable, Optional, TypeVar | ||
import urllib.parse | ||
|
||
from azure.core.exceptions import ( | ||
ClientAuthenticationError, | ||
HttpResponseError, | ||
ResourceExistsError, | ||
ResourceNotFoundError, | ||
ResourceNotModifiedError, | ||
map_error, | ||
) | ||
from azure.core.paging import ItemPaged | ||
from azure.core.pipeline import PipelineResponse | ||
from azure.core.pipeline.transport import HttpResponse | ||
from azure.core.rest import HttpRequest | ||
from azure.core.tracing.decorator import distributed_trace | ||
from azure.core.utils import case_insensitive_dict | ||
from azure.mgmt.core.exceptions import ARMErrorFormat | ||
|
||
from .. import models as _models | ||
from .._serialization import Serializer | ||
from .._vendor import _convert_request | ||
|
||
T = TypeVar("T") | ||
ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] | ||
|
||
_SERIALIZER = Serializer() | ||
_SERIALIZER.client_side_validation = False | ||
|
||
|
||
def build_list_request(**kwargs: Any) -> HttpRequest: | ||
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) | ||
_params = case_insensitive_dict(kwargs.pop("params", {}) or {}) | ||
|
||
api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-09-01")) | ||
accept = _headers.pop("Accept", "application/json") | ||
|
||
# Construct URL | ||
_url = kwargs.pop("template_url", "/providers/Microsoft.Dashboard/operations") | ||
|
||
# Construct parameters | ||
_params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") | ||
|
||
# Construct headers | ||
_headers["Accept"] = _SERIALIZER.header("accept", accept, "str") | ||
|
||
return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) | ||
|
||
|
||
class Operations: | ||
""" | ||
.. warning:: | ||
**DO NOT** instantiate this class directly. | ||
Instead, you should access the following operations through | ||
:class:`~azure.mgmt.dashboard.DashboardManagementClient`'s | ||
:attr:`operations` attribute. | ||
""" | ||
|
||
models = _models | ||
|
||
def __init__(self, *args, **kwargs): | ||
input_args = list(args) | ||
self._client = input_args.pop(0) if input_args else kwargs.pop("client") | ||
self._config = input_args.pop(0) if input_args else kwargs.pop("config") | ||
self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") | ||
self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") | ||
|
||
@distributed_trace | ||
def list(self, **kwargs: Any) -> Iterable["_models.Operation"]: | ||
"""List all available API operations provided by Microsoft.Dashboard. | ||
List all available API operations provided by Microsoft.Dashboard. | ||
:keyword callable cls: A custom type or function that will be passed the direct response | ||
:return: An iterator like instance of either Operation or the result of cls(response) | ||
:rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.dashboard.models.Operation] | ||
:raises ~azure.core.exceptions.HttpResponseError: | ||
""" | ||
_headers = kwargs.pop("headers", {}) or {} | ||
_params = case_insensitive_dict(kwargs.pop("params", {}) or {}) | ||
|
||
api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) | ||
cls: ClsType[_models.OperationListResult] = kwargs.pop("cls", None) | ||
|
||
error_map = { | ||
401: ClientAuthenticationError, | ||
404: ResourceNotFoundError, | ||
409: ResourceExistsError, | ||
304: ResourceNotModifiedError, | ||
} | ||
error_map.update(kwargs.pop("error_map", {}) or {}) | ||
|
||
def prepare_request(next_link=None): | ||
if not next_link: | ||
|
||
request = build_list_request( | ||
api_version=api_version, | ||
template_url=self.list.metadata["url"], | ||
headers=_headers, | ||
params=_params, | ||
) | ||
request = _convert_request(request) | ||
request.url = self._client.format_url(request.url) | ||
|
||
else: | ||
# make call to next link with the client's api-version | ||
_parsed_next_link = urllib.parse.urlparse(next_link) | ||
_next_request_params = case_insensitive_dict( | ||
{ | ||
key: [urllib.parse.quote(v) for v in value] | ||
for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() | ||
} | ||
) | ||
_next_request_params["api-version"] = self._config.api_version | ||
request = HttpRequest( | ||
"GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params | ||
) | ||
request = _convert_request(request) | ||
request.url = self._client.format_url(request.url) | ||
request.method = "GET" | ||
return request | ||
|
||
def extract_data(pipeline_response): | ||
deserialized = self._deserialize("OperationListResult", pipeline_response) | ||
list_of_elem = deserialized.value | ||
if cls: | ||
list_of_elem = cls(list_of_elem) # type: ignore | ||
return deserialized.next_link or None, iter(list_of_elem) | ||
|
||
def get_next(next_link=None): | ||
request = prepare_request(next_link) | ||
|
||
_stream = False | ||
pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access | ||
request, stream=_stream, **kwargs | ||
) | ||
response = pipeline_response.http_response | ||
|
||
if response.status_code not in [200]: | ||
map_error(status_code=response.status_code, response=response, error_map=error_map) | ||
error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) | ||
raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) | ||
|
||
return pipeline_response | ||
|
||
return ItemPaged(get_next, extract_data) | ||
|
||
list.metadata = {"url": "/providers/Microsoft.Dashboard/operations"} |