1# pylint: disable=too-many-lines 
    2# coding=utf-8 
    3# -------------------------------------------------------------------------- 
    4# Copyright (c) Microsoft Corporation. All rights reserved. 
    5# Licensed under the MIT License. See License.txt in the project root for license information. 
    6# Code generated by Microsoft (R) AutoRest Code Generator. 
    7# Changes may cause incorrect behavior and will be lost if the code is regenerated. 
    8# -------------------------------------------------------------------------- 
    9from io import IOBase 
    10from typing import Any, Callable, Dict, IO, Iterable, Optional, TypeVar, Union, cast, overload 
    11import urllib.parse 
    12 
    13from azure.core.exceptions import ( 
    14    ClientAuthenticationError, 
    15    HttpResponseError, 
    16    ResourceExistsError, 
    17    ResourceNotFoundError, 
    18    ResourceNotModifiedError, 
    19    map_error, 
    20) 
    21from azure.core.paging import ItemPaged 
    22from azure.core.pipeline import PipelineResponse 
    23from azure.core.pipeline.transport import HttpResponse 
    24from azure.core.polling import LROPoller, NoPolling, PollingMethod 
    25from azure.core.rest import HttpRequest 
    26from azure.core.tracing.decorator import distributed_trace 
    27from azure.core.utils import case_insensitive_dict 
    28from azure.mgmt.core.exceptions import ARMErrorFormat 
    29from azure.mgmt.core.polling.arm_polling import ARMPolling 
    30 
    31from .. import models as _models 
    32from .._serialization import Serializer 
    33from .._vendor import _convert_request 
    34 
    35T = TypeVar("T") 
    36ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] 
    37 
    38_SERIALIZER = Serializer() 
    39_SERIALIZER.client_side_validation = False 
    40 
    41 
    42def build_list_monitored_resources_request( 
    43    resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any 
    44) -> HttpRequest: 
    45    _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 
    46    _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    47 
    48    api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-04-27")) 
    49    accept = _headers.pop("Accept", "application/json") 
    50 
    51    # Construct URL 
    52    _url = kwargs.pop( 
    53        "template_url", 
    54        "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/listMonitoredResources", 
    55    )  # pylint: disable=line-too-long 
    56    path_format_arguments = { 
    57        "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str", min_length=1), 
    58        "resourceGroupName": _SERIALIZER.url( 
    59            "resource_group_name", resource_group_name, "str", max_length=90, min_length=1 
    60        ), 
    61        "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"), 
    62    } 
    63 
    64    _url: str = _url.format(**path_format_arguments)  # type: ignore 
    65 
    66    # Construct parameters 
    67    _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") 
    68 
    69    # Construct headers 
    70    _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") 
    71 
    72    return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) 
    73 
    74 
    75def build_get_vm_host_payload_request( 
    76    resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any 
    77) -> HttpRequest: 
    78    _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 
    79    _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    80 
    81    api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-04-27")) 
    82    accept = _headers.pop("Accept", "application/json") 
    83 
    84    # Construct URL 
    85    _url = kwargs.pop( 
    86        "template_url", 
    87        "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/getVMHostPayload", 
    88    )  # pylint: disable=line-too-long 
    89    path_format_arguments = { 
    90        "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str", min_length=1), 
    91        "resourceGroupName": _SERIALIZER.url( 
    92            "resource_group_name", resource_group_name, "str", max_length=90, min_length=1 
    93        ), 
    94        "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"), 
    95    } 
    96 
    97    _url: str = _url.format(**path_format_arguments)  # type: ignore 
    98 
    99    # Construct parameters 
    100    _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") 
    101 
    102    # Construct headers 
    103    _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") 
    104 
    105    return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) 
    106 
    107 
    108def build_get_request(resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any) -> HttpRequest: 
    109    _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 
    110    _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    111 
    112    api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-04-27")) 
    113    accept = _headers.pop("Accept", "application/json") 
    114 
    115    # Construct URL 
    116    _url = kwargs.pop( 
    117        "template_url", 
    118        "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}", 
    119    )  # pylint: disable=line-too-long 
    120    path_format_arguments = { 
    121        "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str", min_length=1), 
    122        "resourceGroupName": _SERIALIZER.url( 
    123            "resource_group_name", resource_group_name, "str", max_length=90, min_length=1 
    124        ), 
    125        "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"), 
    126    } 
    127 
    128    _url: str = _url.format(**path_format_arguments)  # type: ignore 
    129 
    130    # Construct parameters 
    131    _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") 
    132 
    133    # Construct headers 
    134    _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") 
    135 
    136    return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) 
    137 
    138 
    139def build_create_or_update_request( 
    140    resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any 
    141) -> HttpRequest: 
    142    _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 
    143    _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    144 
    145    api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-04-27")) 
    146    content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) 
    147    accept = _headers.pop("Accept", "application/json") 
    148 
    149    # Construct URL 
    150    _url = kwargs.pop( 
    151        "template_url", 
    152        "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}", 
    153    )  # pylint: disable=line-too-long 
    154    path_format_arguments = { 
    155        "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str", min_length=1), 
    156        "resourceGroupName": _SERIALIZER.url( 
    157            "resource_group_name", resource_group_name, "str", max_length=90, min_length=1 
    158        ), 
    159        "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"), 
    160    } 
    161 
    162    _url: str = _url.format(**path_format_arguments)  # type: ignore 
    163 
    164    # Construct parameters 
    165    _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") 
    166 
    167    # Construct headers 
    168    if content_type is not None: 
    169        _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") 
    170    _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") 
    171 
    172    return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs) 
    173 
    174 
    175def build_update_request( 
    176    resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any 
    177) -> HttpRequest: 
    178    _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 
    179    _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    180 
    181    api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-04-27")) 
    182    content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) 
    183    accept = _headers.pop("Accept", "application/json") 
    184 
    185    # Construct URL 
    186    _url = kwargs.pop( 
    187        "template_url", 
    188        "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}", 
    189    )  # pylint: disable=line-too-long 
    190    path_format_arguments = { 
    191        "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str", min_length=1), 
    192        "resourceGroupName": _SERIALIZER.url( 
    193            "resource_group_name", resource_group_name, "str", max_length=90, min_length=1 
    194        ), 
    195        "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"), 
    196    } 
    197 
    198    _url: str = _url.format(**path_format_arguments)  # type: ignore 
    199 
    200    # Construct parameters 
    201    _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") 
    202 
    203    # Construct headers 
    204    if content_type is not None: 
    205        _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") 
    206    _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") 
    207 
    208    return HttpRequest(method="PATCH", url=_url, params=_params, headers=_headers, **kwargs) 
    209 
    210 
    211def build_delete_request( 
    212    resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any 
    213) -> HttpRequest: 
    214    _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 
    215    _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    216 
    217    api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-04-27")) 
    218    accept = _headers.pop("Accept", "application/json") 
    219 
    220    # Construct URL 
    221    _url = kwargs.pop( 
    222        "template_url", 
    223        "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}", 
    224    )  # pylint: disable=line-too-long 
    225    path_format_arguments = { 
    226        "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str", min_length=1), 
    227        "resourceGroupName": _SERIALIZER.url( 
    228            "resource_group_name", resource_group_name, "str", max_length=90, min_length=1 
    229        ), 
    230        "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"), 
    231    } 
    232 
    233    _url: str = _url.format(**path_format_arguments)  # type: ignore 
    234 
    235    # Construct parameters 
    236    _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") 
    237 
    238    # Construct headers 
    239    _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") 
    240 
    241    return HttpRequest(method="DELETE", url=_url, params=_params, headers=_headers, **kwargs) 
    242 
    243 
    244def build_list_by_subscription_id_request(subscription_id: str, **kwargs: Any) -> HttpRequest: 
    245    _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 
    246    _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    247 
    248    api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-04-27")) 
    249    accept = _headers.pop("Accept", "application/json") 
    250 
    251    # Construct URL 
    252    _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Dynatrace.Observability/monitors") 
    253    path_format_arguments = { 
    254        "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str", min_length=1), 
    255    } 
    256 
    257    _url: str = _url.format(**path_format_arguments)  # type: ignore 
    258 
    259    # Construct parameters 
    260    _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") 
    261 
    262    # Construct headers 
    263    _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") 
    264 
    265    return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) 
    266 
    267 
    268def build_list_by_resource_group_request(resource_group_name: str, subscription_id: str, **kwargs: Any) -> HttpRequest: 
    269    _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 
    270    _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    271 
    272    api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-04-27")) 
    273    accept = _headers.pop("Accept", "application/json") 
    274 
    275    # Construct URL 
    276    _url = kwargs.pop( 
    277        "template_url", 
    278        "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors", 
    279    )  # pylint: disable=line-too-long 
    280    path_format_arguments = { 
    281        "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str", min_length=1), 
    282        "resourceGroupName": _SERIALIZER.url( 
    283            "resource_group_name", resource_group_name, "str", max_length=90, min_length=1 
    284        ), 
    285    } 
    286 
    287    _url: str = _url.format(**path_format_arguments)  # type: ignore 
    288 
    289    # Construct parameters 
    290    _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") 
    291 
    292    # Construct headers 
    293    _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") 
    294 
    295    return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) 
    296 
    297 
    298def build_get_marketplace_saa_s_resource_details_request(subscription_id: str, **kwargs: Any) -> HttpRequest: 
    299    _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 
    300    _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    301 
    302    api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-04-27")) 
    303    content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) 
    304    accept = _headers.pop("Accept", "application/json") 
    305 
    306    # Construct URL 
    307    _url = kwargs.pop( 
    308        "template_url", 
    309        "/subscriptions/{subscriptionId}/providers/Dynatrace.Observability/getMarketplaceSaaSResourceDetails", 
    310    )  # pylint: disable=line-too-long 
    311    path_format_arguments = { 
    312        "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str", min_length=1), 
    313    } 
    314 
    315    _url: str = _url.format(**path_format_arguments)  # type: ignore 
    316 
    317    # Construct parameters 
    318    _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") 
    319 
    320    # Construct headers 
    321    if content_type is not None: 
    322        _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") 
    323    _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") 
    324 
    325    return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) 
    326 
    327 
    328def build_list_hosts_request( 
    329    resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any 
    330) -> HttpRequest: 
    331    _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 
    332    _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    333 
    334    api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-04-27")) 
    335    accept = _headers.pop("Accept", "application/json") 
    336 
    337    # Construct URL 
    338    _url = kwargs.pop( 
    339        "template_url", 
    340        "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/listHosts", 
    341    )  # pylint: disable=line-too-long 
    342    path_format_arguments = { 
    343        "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str", min_length=1), 
    344        "resourceGroupName": _SERIALIZER.url( 
    345            "resource_group_name", resource_group_name, "str", max_length=90, min_length=1 
    346        ), 
    347        "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"), 
    348    } 
    349 
    350    _url: str = _url.format(**path_format_arguments)  # type: ignore 
    351 
    352    # Construct parameters 
    353    _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") 
    354 
    355    # Construct headers 
    356    _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") 
    357 
    358    return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) 
    359 
    360 
    361def build_get_metric_status_request( 
    362    resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any 
    363) -> HttpRequest: 
    364    _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 
    365    _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    366 
    367    api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-04-27")) 
    368    accept = _headers.pop("Accept", "application/json") 
    369 
    370    # Construct URL 
    371    _url = kwargs.pop( 
    372        "template_url", 
    373        "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/getMetricStatus", 
    374    )  # pylint: disable=line-too-long 
    375    path_format_arguments = { 
    376        "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str", min_length=1), 
    377        "resourceGroupName": _SERIALIZER.url( 
    378            "resource_group_name", resource_group_name, "str", max_length=90, min_length=1 
    379        ), 
    380        "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"), 
    381    } 
    382 
    383    _url: str = _url.format(**path_format_arguments)  # type: ignore 
    384 
    385    # Construct parameters 
    386    _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") 
    387 
    388    # Construct headers 
    389    _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") 
    390 
    391    return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) 
    392 
    393 
    394def build_list_app_services_request( 
    395    resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any 
    396) -> HttpRequest: 
    397    _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 
    398    _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    399 
    400    api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-04-27")) 
    401    accept = _headers.pop("Accept", "application/json") 
    402 
    403    # Construct URL 
    404    _url = kwargs.pop( 
    405        "template_url", 
    406        "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/listAppServices", 
    407    )  # pylint: disable=line-too-long 
    408    path_format_arguments = { 
    409        "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str", min_length=1), 
    410        "resourceGroupName": _SERIALIZER.url( 
    411            "resource_group_name", resource_group_name, "str", max_length=90, min_length=1 
    412        ), 
    413        "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"), 
    414    } 
    415 
    416    _url: str = _url.format(**path_format_arguments)  # type: ignore 
    417 
    418    # Construct parameters 
    419    _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") 
    420 
    421    # Construct headers 
    422    _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") 
    423 
    424    return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) 
    425 
    426 
    427def build_get_sso_details_request( 
    428    resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any 
    429) -> HttpRequest: 
    430    _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 
    431    _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    432 
    433    api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-04-27")) 
    434    content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) 
    435    accept = _headers.pop("Accept", "application/json") 
    436 
    437    # Construct URL 
    438    _url = kwargs.pop( 
    439        "template_url", 
    440        "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/getSSODetails", 
    441    )  # pylint: disable=line-too-long 
    442    path_format_arguments = { 
    443        "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str", min_length=1), 
    444        "resourceGroupName": _SERIALIZER.url( 
    445            "resource_group_name", resource_group_name, "str", max_length=90, min_length=1 
    446        ), 
    447        "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"), 
    448    } 
    449 
    450    _url: str = _url.format(**path_format_arguments)  # type: ignore 
    451 
    452    # Construct parameters 
    453    _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") 
    454 
    455    # Construct headers 
    456    if content_type is not None: 
    457        _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") 
    458    _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") 
    459 
    460    return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) 
    461 
    462 
    463def build_list_linkable_environments_request( 
    464    resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any 
    465) -> HttpRequest: 
    466    _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 
    467    _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    468 
    469    api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-04-27")) 
    470    content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) 
    471    accept = _headers.pop("Accept", "application/json") 
    472 
    473    # Construct URL 
    474    _url = kwargs.pop( 
    475        "template_url", 
    476        "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/listLinkableEnvironments", 
    477    )  # pylint: disable=line-too-long 
    478    path_format_arguments = { 
    479        "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str", min_length=1), 
    480        "resourceGroupName": _SERIALIZER.url( 
    481            "resource_group_name", resource_group_name, "str", max_length=90, min_length=1 
    482        ), 
    483        "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"), 
    484    } 
    485 
    486    _url: str = _url.format(**path_format_arguments)  # type: ignore 
    487 
    488    # Construct parameters 
    489    _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") 
    490 
    491    # Construct headers 
    492    if content_type is not None: 
    493        _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") 
    494    _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") 
    495 
    496    return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) 
    497 
    498 
    499class MonitorsOperations: 
    500    """ 
    501    .. warning:: 
    502        **DO NOT** instantiate this class directly. 
    503 
    504        Instead, you should access the following operations through 
    505        :class:`~azure.mgmt.dynatrace.DynatraceObservabilityMgmtClient`'s 
    506        :attr:`monitors` attribute. 
    507    """ 
    508 
    509    models = _models 
    510 
    511    def __init__(self, *args, **kwargs): 
    512        input_args = list(args) 
    513        self._client = input_args.pop(0) if input_args else kwargs.pop("client") 
    514        self._config = input_args.pop(0) if input_args else kwargs.pop("config") 
    515        self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") 
    516        self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") 
    517 
    518    @distributed_trace 
    519    def list_monitored_resources( 
    520        self, resource_group_name: str, monitor_name: str, **kwargs: Any 
    521    ) -> Iterable["_models.MonitoredResource"]: 
    522        """List the resources currently being monitored by the Dynatrace monitor resource. 
    523 
    524        List the resources currently being monitored by the Dynatrace monitor resource. 
    525 
    526        :param resource_group_name: The name of the resource group. The name is case insensitive. 
    527         Required. 
    528        :type resource_group_name: str 
    529        :param monitor_name: Monitor resource name. Required. 
    530        :type monitor_name: str 
    531        :keyword callable cls: A custom type or function that will be passed the direct response 
    532        :return: An iterator like instance of either MonitoredResource or the result of cls(response) 
    533        :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.MonitoredResource] 
    534        :raises ~azure.core.exceptions.HttpResponseError: 
    535        """ 
    536        _headers = kwargs.pop("headers", {}) or {} 
    537        _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    538 
    539        api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) 
    540        cls: ClsType[_models.MonitoredResourceListResponse] = kwargs.pop("cls", None) 
    541 
    542        error_map = { 
    543            401: ClientAuthenticationError, 
    544            404: ResourceNotFoundError, 
    545            409: ResourceExistsError, 
    546            304: ResourceNotModifiedError, 
    547        } 
    548        error_map.update(kwargs.pop("error_map", {}) or {}) 
    549 
    550        def prepare_request(next_link=None): 
    551            if not next_link: 
    552 
    553                request = build_list_monitored_resources_request( 
    554                    resource_group_name=resource_group_name, 
    555                    monitor_name=monitor_name, 
    556                    subscription_id=self._config.subscription_id, 
    557                    api_version=api_version, 
    558                    template_url=self.list_monitored_resources.metadata["url"], 
    559                    headers=_headers, 
    560                    params=_params, 
    561                ) 
    562                request = _convert_request(request) 
    563                request.url = self._client.format_url(request.url) 
    564 
    565            else: 
    566                # make call to next link with the client's api-version 
    567                _parsed_next_link = urllib.parse.urlparse(next_link) 
    568                _next_request_params = case_insensitive_dict( 
    569                    { 
    570                        key: [urllib.parse.quote(v) for v in value] 
    571                        for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() 
    572                    } 
    573                ) 
    574                _next_request_params["api-version"] = self._config.api_version 
    575                request = HttpRequest( 
    576                    "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params 
    577                ) 
    578                request = _convert_request(request) 
    579                request.url = self._client.format_url(request.url) 
    580                request.method = "GET" 
    581            return request 
    582 
    583        def extract_data(pipeline_response): 
    584            deserialized = self._deserialize("MonitoredResourceListResponse", pipeline_response) 
    585            list_of_elem = deserialized.value 
    586            if cls: 
    587                list_of_elem = cls(list_of_elem)  # type: ignore 
    588            return deserialized.next_link or None, iter(list_of_elem) 
    589 
    590        def get_next(next_link=None): 
    591            request = prepare_request(next_link) 
    592 
    593            _stream = False 
    594            pipeline_response: PipelineResponse = self._client._pipeline.run(  # pylint: disable=protected-access 
    595                request, stream=_stream, **kwargs 
    596            ) 
    597            response = pipeline_response.http_response 
    598 
    599            if response.status_code not in [200]: 
    600                map_error(status_code=response.status_code, response=response, error_map=error_map) 
    601                error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) 
    602                raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) 
    603 
    604            return pipeline_response 
    605 
    606        return ItemPaged(get_next, extract_data) 
    607 
    608    list_monitored_resources.metadata = { 
    609        "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/listMonitoredResources" 
    610    } 
    611 
    612    @distributed_trace 
    613    def get_vm_host_payload( 
    614        self, resource_group_name: str, monitor_name: str, **kwargs: Any 
    615    ) -> _models.VMExtensionPayload: 
    616        """Returns the payload that needs to be passed in the request body for installing Dynatrace agent 
    617        on a VM. 
    618 
    619        Returns the payload that needs to be passed in the request body for installing Dynatrace agent 
    620        on a VM. 
    621 
    622        :param resource_group_name: The name of the resource group. The name is case insensitive. 
    623         Required. 
    624        :type resource_group_name: str 
    625        :param monitor_name: Monitor resource name. Required. 
    626        :type monitor_name: str 
    627        :keyword callable cls: A custom type or function that will be passed the direct response 
    628        :return: VMExtensionPayload or the result of cls(response) 
    629        :rtype: ~azure.mgmt.dynatrace.models.VMExtensionPayload 
    630        :raises ~azure.core.exceptions.HttpResponseError: 
    631        """ 
    632        error_map = { 
    633            401: ClientAuthenticationError, 
    634            404: ResourceNotFoundError, 
    635            409: ResourceExistsError, 
    636            304: ResourceNotModifiedError, 
    637        } 
    638        error_map.update(kwargs.pop("error_map", {}) or {}) 
    639 
    640        _headers = kwargs.pop("headers", {}) or {} 
    641        _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    642 
    643        api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) 
    644        cls: ClsType[_models.VMExtensionPayload] = kwargs.pop("cls", None) 
    645 
    646        request = build_get_vm_host_payload_request( 
    647            resource_group_name=resource_group_name, 
    648            monitor_name=monitor_name, 
    649            subscription_id=self._config.subscription_id, 
    650            api_version=api_version, 
    651            template_url=self.get_vm_host_payload.metadata["url"], 
    652            headers=_headers, 
    653            params=_params, 
    654        ) 
    655        request = _convert_request(request) 
    656        request.url = self._client.format_url(request.url) 
    657 
    658        _stream = False 
    659        pipeline_response: PipelineResponse = self._client._pipeline.run(  # pylint: disable=protected-access 
    660            request, stream=_stream, **kwargs 
    661        ) 
    662 
    663        response = pipeline_response.http_response 
    664 
    665        if response.status_code not in [200]: 
    666            map_error(status_code=response.status_code, response=response, error_map=error_map) 
    667            error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) 
    668            raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) 
    669 
    670        deserialized = self._deserialize("VMExtensionPayload", pipeline_response) 
    671 
    672        if cls: 
    673            return cls(pipeline_response, deserialized, {}) 
    674 
    675        return deserialized 
    676 
    677    get_vm_host_payload.metadata = { 
    678        "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/getVMHostPayload" 
    679    } 
    680 
    681    @distributed_trace 
    682    def get(self, resource_group_name: str, monitor_name: str, **kwargs: Any) -> _models.MonitorResource: 
    683        """Get a MonitorResource. 
    684 
    685        Get a MonitorResource. 
    686 
    687        :param resource_group_name: The name of the resource group. The name is case insensitive. 
    688         Required. 
    689        :type resource_group_name: str 
    690        :param monitor_name: Monitor resource name. Required. 
    691        :type monitor_name: str 
    692        :keyword callable cls: A custom type or function that will be passed the direct response 
    693        :return: MonitorResource or the result of cls(response) 
    694        :rtype: ~azure.mgmt.dynatrace.models.MonitorResource 
    695        :raises ~azure.core.exceptions.HttpResponseError: 
    696        """ 
    697        error_map = { 
    698            401: ClientAuthenticationError, 
    699            404: ResourceNotFoundError, 
    700            409: ResourceExistsError, 
    701            304: ResourceNotModifiedError, 
    702        } 
    703        error_map.update(kwargs.pop("error_map", {}) or {}) 
    704 
    705        _headers = kwargs.pop("headers", {}) or {} 
    706        _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    707 
    708        api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) 
    709        cls: ClsType[_models.MonitorResource] = kwargs.pop("cls", None) 
    710 
    711        request = build_get_request( 
    712            resource_group_name=resource_group_name, 
    713            monitor_name=monitor_name, 
    714            subscription_id=self._config.subscription_id, 
    715            api_version=api_version, 
    716            template_url=self.get.metadata["url"], 
    717            headers=_headers, 
    718            params=_params, 
    719        ) 
    720        request = _convert_request(request) 
    721        request.url = self._client.format_url(request.url) 
    722 
    723        _stream = False 
    724        pipeline_response: PipelineResponse = self._client._pipeline.run(  # pylint: disable=protected-access 
    725            request, stream=_stream, **kwargs 
    726        ) 
    727 
    728        response = pipeline_response.http_response 
    729 
    730        if response.status_code not in [200]: 
    731            map_error(status_code=response.status_code, response=response, error_map=error_map) 
    732            error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) 
    733            raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) 
    734 
    735        deserialized = self._deserialize("MonitorResource", pipeline_response) 
    736 
    737        if cls: 
    738            return cls(pipeline_response, deserialized, {}) 
    739 
    740        return deserialized 
    741 
    742    get.metadata = { 
    743        "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}" 
    744    } 
    745 
    746    def _create_or_update_initial( 
    747        self, resource_group_name: str, monitor_name: str, resource: Union[_models.MonitorResource, IO], **kwargs: Any 
    748    ) -> _models.MonitorResource: 
    749        error_map = { 
    750            401: ClientAuthenticationError, 
    751            404: ResourceNotFoundError, 
    752            409: ResourceExistsError, 
    753            304: ResourceNotModifiedError, 
    754        } 
    755        error_map.update(kwargs.pop("error_map", {}) or {}) 
    756 
    757        _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 
    758        _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    759 
    760        api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) 
    761        content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) 
    762        cls: ClsType[_models.MonitorResource] = kwargs.pop("cls", None) 
    763 
    764        content_type = content_type or "application/json" 
    765        _json = None 
    766        _content = None 
    767        if isinstance(resource, (IOBase, bytes)): 
    768            _content = resource 
    769        else: 
    770            _json = self._serialize.body(resource, "MonitorResource") 
    771 
    772        request = build_create_or_update_request( 
    773            resource_group_name=resource_group_name, 
    774            monitor_name=monitor_name, 
    775            subscription_id=self._config.subscription_id, 
    776            api_version=api_version, 
    777            content_type=content_type, 
    778            json=_json, 
    779            content=_content, 
    780            template_url=self._create_or_update_initial.metadata["url"], 
    781            headers=_headers, 
    782            params=_params, 
    783        ) 
    784        request = _convert_request(request) 
    785        request.url = self._client.format_url(request.url) 
    786 
    787        _stream = False 
    788        pipeline_response: PipelineResponse = self._client._pipeline.run(  # pylint: disable=protected-access 
    789            request, stream=_stream, **kwargs 
    790        ) 
    791 
    792        response = pipeline_response.http_response 
    793 
    794        if response.status_code not in [200, 201]: 
    795            map_error(status_code=response.status_code, response=response, error_map=error_map) 
    796            error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) 
    797            raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) 
    798 
    799        if response.status_code == 200: 
    800            deserialized = self._deserialize("MonitorResource", pipeline_response) 
    801 
    802        if response.status_code == 201: 
    803            deserialized = self._deserialize("MonitorResource", pipeline_response) 
    804 
    805        if cls: 
    806            return cls(pipeline_response, deserialized, {})  # type: ignore 
    807 
    808        return deserialized  # type: ignore 
    809 
    810    _create_or_update_initial.metadata = { 
    811        "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}" 
    812    } 
    813 
    814    @overload 
    815    def begin_create_or_update( 
    816        self, 
    817        resource_group_name: str, 
    818        monitor_name: str, 
    819        resource: _models.MonitorResource, 
    820        *, 
    821        content_type: str = "application/json", 
    822        **kwargs: Any 
    823    ) -> LROPoller[_models.MonitorResource]: 
    824        """Create a MonitorResource. 
    825 
    826        Create a MonitorResource. 
    827 
    828        :param resource_group_name: The name of the resource group. The name is case insensitive. 
    829         Required. 
    830        :type resource_group_name: str 
    831        :param monitor_name: Monitor resource name. Required. 
    832        :type monitor_name: str 
    833        :param resource: Resource create parameters. Required. 
    834        :type resource: ~azure.mgmt.dynatrace.models.MonitorResource 
    835        :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. 
    836         Default value is "application/json". 
    837        :paramtype content_type: str 
    838        :keyword callable cls: A custom type or function that will be passed the direct response 
    839        :keyword str continuation_token: A continuation token to restart a poller from a saved state. 
    840        :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this 
    841         operation to not poll, or pass in your own initialized polling object for a personal polling 
    842         strategy. 
    843        :paramtype polling: bool or ~azure.core.polling.PollingMethod 
    844        :keyword int polling_interval: Default waiting time between two polls for LRO operations if no 
    845         Retry-After header is present. 
    846        :return: An instance of LROPoller that returns either MonitorResource or the result of 
    847         cls(response) 
    848        :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.MonitorResource] 
    849        :raises ~azure.core.exceptions.HttpResponseError: 
    850        """ 
    851 
    852    @overload 
    853    def begin_create_or_update( 
    854        self, 
    855        resource_group_name: str, 
    856        monitor_name: str, 
    857        resource: IO, 
    858        *, 
    859        content_type: str = "application/json", 
    860        **kwargs: Any 
    861    ) -> LROPoller[_models.MonitorResource]: 
    862        """Create a MonitorResource. 
    863 
    864        Create a MonitorResource. 
    865 
    866        :param resource_group_name: The name of the resource group. The name is case insensitive. 
    867         Required. 
    868        :type resource_group_name: str 
    869        :param monitor_name: Monitor resource name. Required. 
    870        :type monitor_name: str 
    871        :param resource: Resource create parameters. Required. 
    872        :type resource: IO 
    873        :keyword content_type: Body Parameter content-type. Content type parameter for binary body. 
    874         Default value is "application/json". 
    875        :paramtype content_type: str 
    876        :keyword callable cls: A custom type or function that will be passed the direct response 
    877        :keyword str continuation_token: A continuation token to restart a poller from a saved state. 
    878        :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this 
    879         operation to not poll, or pass in your own initialized polling object for a personal polling 
    880         strategy. 
    881        :paramtype polling: bool or ~azure.core.polling.PollingMethod 
    882        :keyword int polling_interval: Default waiting time between two polls for LRO operations if no 
    883         Retry-After header is present. 
    884        :return: An instance of LROPoller that returns either MonitorResource or the result of 
    885         cls(response) 
    886        :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.MonitorResource] 
    887        :raises ~azure.core.exceptions.HttpResponseError: 
    888        """ 
    889 
    890    @distributed_trace 
    891    def begin_create_or_update( 
    892        self, resource_group_name: str, monitor_name: str, resource: Union[_models.MonitorResource, IO], **kwargs: Any 
    893    ) -> LROPoller[_models.MonitorResource]: 
    894        """Create a MonitorResource. 
    895 
    896        Create a MonitorResource. 
    897 
    898        :param resource_group_name: The name of the resource group. The name is case insensitive. 
    899         Required. 
    900        :type resource_group_name: str 
    901        :param monitor_name: Monitor resource name. Required. 
    902        :type monitor_name: str 
    903        :param resource: Resource create parameters. Is either a MonitorResource type or a IO type. 
    904         Required. 
    905        :type resource: ~azure.mgmt.dynatrace.models.MonitorResource or IO 
    906        :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. 
    907         Default value is None. 
    908        :paramtype content_type: str 
    909        :keyword callable cls: A custom type or function that will be passed the direct response 
    910        :keyword str continuation_token: A continuation token to restart a poller from a saved state. 
    911        :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this 
    912         operation to not poll, or pass in your own initialized polling object for a personal polling 
    913         strategy. 
    914        :paramtype polling: bool or ~azure.core.polling.PollingMethod 
    915        :keyword int polling_interval: Default waiting time between two polls for LRO operations if no 
    916         Retry-After header is present. 
    917        :return: An instance of LROPoller that returns either MonitorResource or the result of 
    918         cls(response) 
    919        :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.MonitorResource] 
    920        :raises ~azure.core.exceptions.HttpResponseError: 
    921        """ 
    922        _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 
    923        _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    924 
    925        api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) 
    926        content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) 
    927        cls: ClsType[_models.MonitorResource] = kwargs.pop("cls", None) 
    928        polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) 
    929        lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) 
    930        cont_token: Optional[str] = kwargs.pop("continuation_token", None) 
    931        if cont_token is None: 
    932            raw_result = self._create_or_update_initial( 
    933                resource_group_name=resource_group_name, 
    934                monitor_name=monitor_name, 
    935                resource=resource, 
    936                api_version=api_version, 
    937                content_type=content_type, 
    938                cls=lambda x, y, z: x, 
    939                headers=_headers, 
    940                params=_params, 
    941                **kwargs 
    942            ) 
    943        kwargs.pop("error_map", None) 
    944 
    945        def get_long_running_output(pipeline_response): 
    946            deserialized = self._deserialize("MonitorResource", pipeline_response) 
    947            if cls: 
    948                return cls(pipeline_response, deserialized, {}) 
    949            return deserialized 
    950 
    951        if polling is True: 
    952            polling_method: PollingMethod = cast( 
    953                PollingMethod, ARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs) 
    954            ) 
    955        elif polling is False: 
    956            polling_method = cast(PollingMethod, NoPolling()) 
    957        else: 
    958            polling_method = polling 
    959        if cont_token: 
    960            return LROPoller.from_continuation_token( 
    961                polling_method=polling_method, 
    962                continuation_token=cont_token, 
    963                client=self._client, 
    964                deserialization_callback=get_long_running_output, 
    965            ) 
    966        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)  # type: ignore 
    967 
    968    begin_create_or_update.metadata = { 
    969        "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}" 
    970    } 
    971 
    972    @overload 
    973    def update( 
    974        self, 
    975        resource_group_name: str, 
    976        monitor_name: str, 
    977        resource: _models.MonitorResourceUpdate, 
    978        *, 
    979        content_type: str = "application/json", 
    980        **kwargs: Any 
    981    ) -> _models.MonitorResource: 
    982        """Update a MonitorResource. 
    983 
    984        Update a MonitorResource. 
    985 
    986        :param resource_group_name: The name of the resource group. The name is case insensitive. 
    987         Required. 
    988        :type resource_group_name: str 
    989        :param monitor_name: Monitor resource name. Required. 
    990        :type monitor_name: str 
    991        :param resource: The resource properties to be updated. Required. 
    992        :type resource: ~azure.mgmt.dynatrace.models.MonitorResourceUpdate 
    993        :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. 
    994         Default value is "application/json". 
    995        :paramtype content_type: str 
    996        :keyword callable cls: A custom type or function that will be passed the direct response 
    997        :return: MonitorResource or the result of cls(response) 
    998        :rtype: ~azure.mgmt.dynatrace.models.MonitorResource 
    999        :raises ~azure.core.exceptions.HttpResponseError: 
    1000        """ 
    1001 
    1002    @overload 
    1003    def update( 
    1004        self, 
    1005        resource_group_name: str, 
    1006        monitor_name: str, 
    1007        resource: IO, 
    1008        *, 
    1009        content_type: str = "application/json", 
    1010        **kwargs: Any 
    1011    ) -> _models.MonitorResource: 
    1012        """Update a MonitorResource. 
    1013 
    1014        Update a MonitorResource. 
    1015 
    1016        :param resource_group_name: The name of the resource group. The name is case insensitive. 
    1017         Required. 
    1018        :type resource_group_name: str 
    1019        :param monitor_name: Monitor resource name. Required. 
    1020        :type monitor_name: str 
    1021        :param resource: The resource properties to be updated. Required. 
    1022        :type resource: IO 
    1023        :keyword content_type: Body Parameter content-type. Content type parameter for binary body. 
    1024         Default value is "application/json". 
    1025        :paramtype content_type: str 
    1026        :keyword callable cls: A custom type or function that will be passed the direct response 
    1027        :return: MonitorResource or the result of cls(response) 
    1028        :rtype: ~azure.mgmt.dynatrace.models.MonitorResource 
    1029        :raises ~azure.core.exceptions.HttpResponseError: 
    1030        """ 
    1031 
    1032    @distributed_trace 
    1033    def update( 
    1034        self, 
    1035        resource_group_name: str, 
    1036        monitor_name: str, 
    1037        resource: Union[_models.MonitorResourceUpdate, IO], 
    1038        **kwargs: Any 
    1039    ) -> _models.MonitorResource: 
    1040        """Update a MonitorResource. 
    1041 
    1042        Update a MonitorResource. 
    1043 
    1044        :param resource_group_name: The name of the resource group. The name is case insensitive. 
    1045         Required. 
    1046        :type resource_group_name: str 
    1047        :param monitor_name: Monitor resource name. Required. 
    1048        :type monitor_name: str 
    1049        :param resource: The resource properties to be updated. Is either a MonitorResourceUpdate type 
    1050         or a IO type. Required. 
    1051        :type resource: ~azure.mgmt.dynatrace.models.MonitorResourceUpdate or IO 
    1052        :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. 
    1053         Default value is None. 
    1054        :paramtype content_type: str 
    1055        :keyword callable cls: A custom type or function that will be passed the direct response 
    1056        :return: MonitorResource or the result of cls(response) 
    1057        :rtype: ~azure.mgmt.dynatrace.models.MonitorResource 
    1058        :raises ~azure.core.exceptions.HttpResponseError: 
    1059        """ 
    1060        error_map = { 
    1061            401: ClientAuthenticationError, 
    1062            404: ResourceNotFoundError, 
    1063            409: ResourceExistsError, 
    1064            304: ResourceNotModifiedError, 
    1065        } 
    1066        error_map.update(kwargs.pop("error_map", {}) or {}) 
    1067 
    1068        _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 
    1069        _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    1070 
    1071        api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) 
    1072        content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) 
    1073        cls: ClsType[_models.MonitorResource] = kwargs.pop("cls", None) 
    1074 
    1075        content_type = content_type or "application/json" 
    1076        _json = None 
    1077        _content = None 
    1078        if isinstance(resource, (IOBase, bytes)): 
    1079            _content = resource 
    1080        else: 
    1081            _json = self._serialize.body(resource, "MonitorResourceUpdate") 
    1082 
    1083        request = build_update_request( 
    1084            resource_group_name=resource_group_name, 
    1085            monitor_name=monitor_name, 
    1086            subscription_id=self._config.subscription_id, 
    1087            api_version=api_version, 
    1088            content_type=content_type, 
    1089            json=_json, 
    1090            content=_content, 
    1091            template_url=self.update.metadata["url"], 
    1092            headers=_headers, 
    1093            params=_params, 
    1094        ) 
    1095        request = _convert_request(request) 
    1096        request.url = self._client.format_url(request.url) 
    1097 
    1098        _stream = False 
    1099        pipeline_response: PipelineResponse = self._client._pipeline.run(  # pylint: disable=protected-access 
    1100            request, stream=_stream, **kwargs 
    1101        ) 
    1102 
    1103        response = pipeline_response.http_response 
    1104 
    1105        if response.status_code not in [200]: 
    1106            map_error(status_code=response.status_code, response=response, error_map=error_map) 
    1107            error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) 
    1108            raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) 
    1109 
    1110        deserialized = self._deserialize("MonitorResource", pipeline_response) 
    1111 
    1112        if cls: 
    1113            return cls(pipeline_response, deserialized, {}) 
    1114 
    1115        return deserialized 
    1116 
    1117    update.metadata = { 
    1118        "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}" 
    1119    } 
    1120 
    1121    def _delete_initial(  # pylint: disable=inconsistent-return-statements 
    1122        self, resource_group_name: str, monitor_name: str, **kwargs: Any 
    1123    ) -> None: 
    1124        error_map = { 
    1125            401: ClientAuthenticationError, 
    1126            404: ResourceNotFoundError, 
    1127            409: ResourceExistsError, 
    1128            304: ResourceNotModifiedError, 
    1129        } 
    1130        error_map.update(kwargs.pop("error_map", {}) or {}) 
    1131 
    1132        _headers = kwargs.pop("headers", {}) or {} 
    1133        _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    1134 
    1135        api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) 
    1136        cls: ClsType[None] = kwargs.pop("cls", None) 
    1137 
    1138        request = build_delete_request( 
    1139            resource_group_name=resource_group_name, 
    1140            monitor_name=monitor_name, 
    1141            subscription_id=self._config.subscription_id, 
    1142            api_version=api_version, 
    1143            template_url=self._delete_initial.metadata["url"], 
    1144            headers=_headers, 
    1145            params=_params, 
    1146        ) 
    1147        request = _convert_request(request) 
    1148        request.url = self._client.format_url(request.url) 
    1149 
    1150        _stream = False 
    1151        pipeline_response: PipelineResponse = self._client._pipeline.run(  # pylint: disable=protected-access 
    1152            request, stream=_stream, **kwargs 
    1153        ) 
    1154 
    1155        response = pipeline_response.http_response 
    1156 
    1157        if response.status_code not in [200, 202, 204]: 
    1158            map_error(status_code=response.status_code, response=response, error_map=error_map) 
    1159            error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) 
    1160            raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) 
    1161 
    1162        if cls: 
    1163            return cls(pipeline_response, None, {}) 
    1164 
    1165    _delete_initial.metadata = { 
    1166        "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}" 
    1167    } 
    1168 
    1169    @distributed_trace 
    1170    def begin_delete(self, resource_group_name: str, monitor_name: str, **kwargs: Any) -> LROPoller[None]: 
    1171        """Delete a MonitorResource. 
    1172 
    1173        Delete a MonitorResource. 
    1174 
    1175        :param resource_group_name: The name of the resource group. The name is case insensitive. 
    1176         Required. 
    1177        :type resource_group_name: str 
    1178        :param monitor_name: Monitor resource name. Required. 
    1179        :type monitor_name: str 
    1180        :keyword callable cls: A custom type or function that will be passed the direct response 
    1181        :keyword str continuation_token: A continuation token to restart a poller from a saved state. 
    1182        :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this 
    1183         operation to not poll, or pass in your own initialized polling object for a personal polling 
    1184         strategy. 
    1185        :paramtype polling: bool or ~azure.core.polling.PollingMethod 
    1186        :keyword int polling_interval: Default waiting time between two polls for LRO operations if no 
    1187         Retry-After header is present. 
    1188        :return: An instance of LROPoller that returns either None or the result of cls(response) 
    1189        :rtype: ~azure.core.polling.LROPoller[None] 
    1190        :raises ~azure.core.exceptions.HttpResponseError: 
    1191        """ 
    1192        _headers = kwargs.pop("headers", {}) or {} 
    1193        _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    1194 
    1195        api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) 
    1196        cls: ClsType[None] = kwargs.pop("cls", None) 
    1197        polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) 
    1198        lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) 
    1199        cont_token: Optional[str] = kwargs.pop("continuation_token", None) 
    1200        if cont_token is None: 
    1201            raw_result = self._delete_initial(  # type: ignore 
    1202                resource_group_name=resource_group_name, 
    1203                monitor_name=monitor_name, 
    1204                api_version=api_version, 
    1205                cls=lambda x, y, z: x, 
    1206                headers=_headers, 
    1207                params=_params, 
    1208                **kwargs 
    1209            ) 
    1210        kwargs.pop("error_map", None) 
    1211 
    1212        def get_long_running_output(pipeline_response):  # pylint: disable=inconsistent-return-statements 
    1213            if cls: 
    1214                return cls(pipeline_response, None, {}) 
    1215 
    1216        if polling is True: 
    1217            polling_method: PollingMethod = cast( 
    1218                PollingMethod, ARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs) 
    1219            ) 
    1220        elif polling is False: 
    1221            polling_method = cast(PollingMethod, NoPolling()) 
    1222        else: 
    1223            polling_method = polling 
    1224        if cont_token: 
    1225            return LROPoller.from_continuation_token( 
    1226                polling_method=polling_method, 
    1227                continuation_token=cont_token, 
    1228                client=self._client, 
    1229                deserialization_callback=get_long_running_output, 
    1230            ) 
    1231        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)  # type: ignore 
    1232 
    1233    begin_delete.metadata = { 
    1234        "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}" 
    1235    } 
    1236 
    1237    @distributed_trace 
    1238    def list_by_subscription_id(self, **kwargs: Any) -> Iterable["_models.MonitorResource"]: 
    1239        """List all MonitorResource by subscriptionId. 
    1240 
    1241        List all MonitorResource by subscriptionId. 
    1242 
    1243        :keyword callable cls: A custom type or function that will be passed the direct response 
    1244        :return: An iterator like instance of either MonitorResource or the result of cls(response) 
    1245        :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.MonitorResource] 
    1246        :raises ~azure.core.exceptions.HttpResponseError: 
    1247        """ 
    1248        _headers = kwargs.pop("headers", {}) or {} 
    1249        _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    1250 
    1251        api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) 
    1252        cls: ClsType[_models.MonitorResourceListResult] = kwargs.pop("cls", None) 
    1253 
    1254        error_map = { 
    1255            401: ClientAuthenticationError, 
    1256            404: ResourceNotFoundError, 
    1257            409: ResourceExistsError, 
    1258            304: ResourceNotModifiedError, 
    1259        } 
    1260        error_map.update(kwargs.pop("error_map", {}) or {}) 
    1261 
    1262        def prepare_request(next_link=None): 
    1263            if not next_link: 
    1264 
    1265                request = build_list_by_subscription_id_request( 
    1266                    subscription_id=self._config.subscription_id, 
    1267                    api_version=api_version, 
    1268                    template_url=self.list_by_subscription_id.metadata["url"], 
    1269                    headers=_headers, 
    1270                    params=_params, 
    1271                ) 
    1272                request = _convert_request(request) 
    1273                request.url = self._client.format_url(request.url) 
    1274 
    1275            else: 
    1276                # make call to next link with the client's api-version 
    1277                _parsed_next_link = urllib.parse.urlparse(next_link) 
    1278                _next_request_params = case_insensitive_dict( 
    1279                    { 
    1280                        key: [urllib.parse.quote(v) for v in value] 
    1281                        for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() 
    1282                    } 
    1283                ) 
    1284                _next_request_params["api-version"] = self._config.api_version 
    1285                request = HttpRequest( 
    1286                    "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params 
    1287                ) 
    1288                request = _convert_request(request) 
    1289                request.url = self._client.format_url(request.url) 
    1290                request.method = "GET" 
    1291            return request 
    1292 
    1293        def extract_data(pipeline_response): 
    1294            deserialized = self._deserialize("MonitorResourceListResult", pipeline_response) 
    1295            list_of_elem = deserialized.value 
    1296            if cls: 
    1297                list_of_elem = cls(list_of_elem)  # type: ignore 
    1298            return deserialized.next_link or None, iter(list_of_elem) 
    1299 
    1300        def get_next(next_link=None): 
    1301            request = prepare_request(next_link) 
    1302 
    1303            _stream = False 
    1304            pipeline_response: PipelineResponse = self._client._pipeline.run(  # pylint: disable=protected-access 
    1305                request, stream=_stream, **kwargs 
    1306            ) 
    1307            response = pipeline_response.http_response 
    1308 
    1309            if response.status_code not in [200]: 
    1310                map_error(status_code=response.status_code, response=response, error_map=error_map) 
    1311                error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) 
    1312                raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) 
    1313 
    1314            return pipeline_response 
    1315 
    1316        return ItemPaged(get_next, extract_data) 
    1317 
    1318    list_by_subscription_id.metadata = { 
    1319        "url": "/subscriptions/{subscriptionId}/providers/Dynatrace.Observability/monitors" 
    1320    } 
    1321 
    1322    @distributed_trace 
    1323    def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> Iterable["_models.MonitorResource"]: 
    1324        """List MonitorResource resources by resource group. 
    1325 
    1326        List MonitorResource resources by resource group. 
    1327 
    1328        :param resource_group_name: The name of the resource group. The name is case insensitive. 
    1329         Required. 
    1330        :type resource_group_name: str 
    1331        :keyword callable cls: A custom type or function that will be passed the direct response 
    1332        :return: An iterator like instance of either MonitorResource or the result of cls(response) 
    1333        :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.MonitorResource] 
    1334        :raises ~azure.core.exceptions.HttpResponseError: 
    1335        """ 
    1336        _headers = kwargs.pop("headers", {}) or {} 
    1337        _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    1338 
    1339        api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) 
    1340        cls: ClsType[_models.MonitorResourceListResult] = kwargs.pop("cls", None) 
    1341 
    1342        error_map = { 
    1343            401: ClientAuthenticationError, 
    1344            404: ResourceNotFoundError, 
    1345            409: ResourceExistsError, 
    1346            304: ResourceNotModifiedError, 
    1347        } 
    1348        error_map.update(kwargs.pop("error_map", {}) or {}) 
    1349 
    1350        def prepare_request(next_link=None): 
    1351            if not next_link: 
    1352 
    1353                request = build_list_by_resource_group_request( 
    1354                    resource_group_name=resource_group_name, 
    1355                    subscription_id=self._config.subscription_id, 
    1356                    api_version=api_version, 
    1357                    template_url=self.list_by_resource_group.metadata["url"], 
    1358                    headers=_headers, 
    1359                    params=_params, 
    1360                ) 
    1361                request = _convert_request(request) 
    1362                request.url = self._client.format_url(request.url) 
    1363 
    1364            else: 
    1365                # make call to next link with the client's api-version 
    1366                _parsed_next_link = urllib.parse.urlparse(next_link) 
    1367                _next_request_params = case_insensitive_dict( 
    1368                    { 
    1369                        key: [urllib.parse.quote(v) for v in value] 
    1370                        for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() 
    1371                    } 
    1372                ) 
    1373                _next_request_params["api-version"] = self._config.api_version 
    1374                request = HttpRequest( 
    1375                    "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params 
    1376                ) 
    1377                request = _convert_request(request) 
    1378                request.url = self._client.format_url(request.url) 
    1379                request.method = "GET" 
    1380            return request 
    1381 
    1382        def extract_data(pipeline_response): 
    1383            deserialized = self._deserialize("MonitorResourceListResult", pipeline_response) 
    1384            list_of_elem = deserialized.value 
    1385            if cls: 
    1386                list_of_elem = cls(list_of_elem)  # type: ignore 
    1387            return deserialized.next_link or None, iter(list_of_elem) 
    1388 
    1389        def get_next(next_link=None): 
    1390            request = prepare_request(next_link) 
    1391 
    1392            _stream = False 
    1393            pipeline_response: PipelineResponse = self._client._pipeline.run(  # pylint: disable=protected-access 
    1394                request, stream=_stream, **kwargs 
    1395            ) 
    1396            response = pipeline_response.http_response 
    1397 
    1398            if response.status_code not in [200]: 
    1399                map_error(status_code=response.status_code, response=response, error_map=error_map) 
    1400                error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) 
    1401                raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) 
    1402 
    1403            return pipeline_response 
    1404 
    1405        return ItemPaged(get_next, extract_data) 
    1406 
    1407    list_by_resource_group.metadata = { 
    1408        "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors" 
    1409    } 
    1410 
    1411    @overload 
    1412    def get_marketplace_saa_s_resource_details( 
    1413        self, 
    1414        request: _models.MarketplaceSaaSResourceDetailsRequest, 
    1415        *, 
    1416        content_type: str = "application/json", 
    1417        **kwargs: Any 
    1418    ) -> _models.MarketplaceSaaSResourceDetailsResponse: 
    1419        """Get Marketplace SaaS resource details of a tenant under a specific subscription. 
    1420 
    1421        :param request: Tenant Id. Required. 
    1422        :type request: ~azure.mgmt.dynatrace.models.MarketplaceSaaSResourceDetailsRequest 
    1423        :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. 
    1424         Default value is "application/json". 
    1425        :paramtype content_type: str 
    1426        :keyword callable cls: A custom type or function that will be passed the direct response 
    1427        :return: MarketplaceSaaSResourceDetailsResponse or the result of cls(response) 
    1428        :rtype: ~azure.mgmt.dynatrace.models.MarketplaceSaaSResourceDetailsResponse 
    1429        :raises ~azure.core.exceptions.HttpResponseError: 
    1430        """ 
    1431 
    1432    @overload 
    1433    def get_marketplace_saa_s_resource_details( 
    1434        self, request: IO, *, content_type: str = "application/json", **kwargs: Any 
    1435    ) -> _models.MarketplaceSaaSResourceDetailsResponse: 
    1436        """Get Marketplace SaaS resource details of a tenant under a specific subscription. 
    1437 
    1438        :param request: Tenant Id. Required. 
    1439        :type request: IO 
    1440        :keyword content_type: Body Parameter content-type. Content type parameter for binary body. 
    1441         Default value is "application/json". 
    1442        :paramtype content_type: str 
    1443        :keyword callable cls: A custom type or function that will be passed the direct response 
    1444        :return: MarketplaceSaaSResourceDetailsResponse or the result of cls(response) 
    1445        :rtype: ~azure.mgmt.dynatrace.models.MarketplaceSaaSResourceDetailsResponse 
    1446        :raises ~azure.core.exceptions.HttpResponseError: 
    1447        """ 
    1448 
    1449    @distributed_trace 
    1450    def get_marketplace_saa_s_resource_details( 
    1451        self, request: Union[_models.MarketplaceSaaSResourceDetailsRequest, IO], **kwargs: Any 
    1452    ) -> _models.MarketplaceSaaSResourceDetailsResponse: 
    1453        """Get Marketplace SaaS resource details of a tenant under a specific subscription. 
    1454 
    1455        :param request: Tenant Id. Is either a MarketplaceSaaSResourceDetailsRequest type or a IO type. 
    1456         Required. 
    1457        :type request: ~azure.mgmt.dynatrace.models.MarketplaceSaaSResourceDetailsRequest or IO 
    1458        :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. 
    1459         Default value is None. 
    1460        :paramtype content_type: str 
    1461        :keyword callable cls: A custom type or function that will be passed the direct response 
    1462        :return: MarketplaceSaaSResourceDetailsResponse or the result of cls(response) 
    1463        :rtype: ~azure.mgmt.dynatrace.models.MarketplaceSaaSResourceDetailsResponse 
    1464        :raises ~azure.core.exceptions.HttpResponseError: 
    1465        """ 
    1466        error_map = { 
    1467            401: ClientAuthenticationError, 
    1468            409: ResourceExistsError, 
    1469            304: ResourceNotModifiedError, 
    1470            404: lambda response: ResourceNotFoundError(response=response, error_format=ARMErrorFormat), 
    1471        } 
    1472        error_map.update(kwargs.pop("error_map", {}) or {}) 
    1473 
    1474        _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 
    1475        _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    1476 
    1477        api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) 
    1478        content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) 
    1479        cls: ClsType[_models.MarketplaceSaaSResourceDetailsResponse] = kwargs.pop("cls", None) 
    1480 
    1481        content_type = content_type or "application/json" 
    1482        _json = None 
    1483        _content = None 
    1484        if isinstance(request, (IOBase, bytes)): 
    1485            _content = request 
    1486        else: 
    1487            _json = self._serialize.body(request, "MarketplaceSaaSResourceDetailsRequest") 
    1488 
    1489        request = build_get_marketplace_saa_s_resource_details_request( 
    1490            subscription_id=self._config.subscription_id, 
    1491            api_version=api_version, 
    1492            content_type=content_type, 
    1493            json=_json, 
    1494            content=_content, 
    1495            template_url=self.get_marketplace_saa_s_resource_details.metadata["url"], 
    1496            headers=_headers, 
    1497            params=_params, 
    1498        ) 
    1499        request = _convert_request(request) 
    1500        request.url = self._client.format_url(request.url) 
    1501 
    1502        _stream = False 
    1503        pipeline_response: PipelineResponse = self._client._pipeline.run(  # pylint: disable=protected-access 
    1504            request, stream=_stream, **kwargs 
    1505        ) 
    1506 
    1507        response = pipeline_response.http_response 
    1508 
    1509        if response.status_code not in [200]: 
    1510            map_error(status_code=response.status_code, response=response, error_map=error_map) 
    1511            error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) 
    1512            raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) 
    1513 
    1514        deserialized = self._deserialize("MarketplaceSaaSResourceDetailsResponse", pipeline_response) 
    1515 
    1516        if cls: 
    1517            return cls(pipeline_response, deserialized, {}) 
    1518 
    1519        return deserialized 
    1520 
    1521    get_marketplace_saa_s_resource_details.metadata = { 
    1522        "url": "/subscriptions/{subscriptionId}/providers/Dynatrace.Observability/getMarketplaceSaaSResourceDetails" 
    1523    } 
    1524 
    1525    @distributed_trace 
    1526    def list_hosts(self, resource_group_name: str, monitor_name: str, **kwargs: Any) -> Iterable["_models.VMInfo"]: 
    1527        """List the VM/VMSS resources currently being monitored by the Dynatrace resource. 
    1528 
    1529        List the VM/VMSS resources currently being monitored by the Dynatrace resource. 
    1530 
    1531        :param resource_group_name: The name of the resource group. The name is case insensitive. 
    1532         Required. 
    1533        :type resource_group_name: str 
    1534        :param monitor_name: Monitor resource name. Required. 
    1535        :type monitor_name: str 
    1536        :keyword callable cls: A custom type or function that will be passed the direct response 
    1537        :return: An iterator like instance of either VMInfo or the result of cls(response) 
    1538        :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.VMInfo] 
    1539        :raises ~azure.core.exceptions.HttpResponseError: 
    1540        """ 
    1541        _headers = kwargs.pop("headers", {}) or {} 
    1542        _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    1543 
    1544        api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) 
    1545        cls: ClsType[_models.VMHostsListResponse] = kwargs.pop("cls", None) 
    1546 
    1547        error_map = { 
    1548            401: ClientAuthenticationError, 
    1549            404: ResourceNotFoundError, 
    1550            409: ResourceExistsError, 
    1551            304: ResourceNotModifiedError, 
    1552        } 
    1553        error_map.update(kwargs.pop("error_map", {}) or {}) 
    1554 
    1555        def prepare_request(next_link=None): 
    1556            if not next_link: 
    1557 
    1558                request = build_list_hosts_request( 
    1559                    resource_group_name=resource_group_name, 
    1560                    monitor_name=monitor_name, 
    1561                    subscription_id=self._config.subscription_id, 
    1562                    api_version=api_version, 
    1563                    template_url=self.list_hosts.metadata["url"], 
    1564                    headers=_headers, 
    1565                    params=_params, 
    1566                ) 
    1567                request = _convert_request(request) 
    1568                request.url = self._client.format_url(request.url) 
    1569 
    1570            else: 
    1571                # make call to next link with the client's api-version 
    1572                _parsed_next_link = urllib.parse.urlparse(next_link) 
    1573                _next_request_params = case_insensitive_dict( 
    1574                    { 
    1575                        key: [urllib.parse.quote(v) for v in value] 
    1576                        for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() 
    1577                    } 
    1578                ) 
    1579                _next_request_params["api-version"] = self._config.api_version 
    1580                request = HttpRequest( 
    1581                    "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params 
    1582                ) 
    1583                request = _convert_request(request) 
    1584                request.url = self._client.format_url(request.url) 
    1585                request.method = "GET" 
    1586            return request 
    1587 
    1588        def extract_data(pipeline_response): 
    1589            deserialized = self._deserialize("VMHostsListResponse", pipeline_response) 
    1590            list_of_elem = deserialized.value 
    1591            if cls: 
    1592                list_of_elem = cls(list_of_elem)  # type: ignore 
    1593            return deserialized.next_link or None, iter(list_of_elem) 
    1594 
    1595        def get_next(next_link=None): 
    1596            request = prepare_request(next_link) 
    1597 
    1598            _stream = False 
    1599            pipeline_response: PipelineResponse = self._client._pipeline.run(  # pylint: disable=protected-access 
    1600                request, stream=_stream, **kwargs 
    1601            ) 
    1602            response = pipeline_response.http_response 
    1603 
    1604            if response.status_code not in [200]: 
    1605                map_error(status_code=response.status_code, response=response, error_map=error_map) 
    1606                error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) 
    1607                raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) 
    1608 
    1609            return pipeline_response 
    1610 
    1611        return ItemPaged(get_next, extract_data) 
    1612 
    1613    list_hosts.metadata = { 
    1614        "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/listHosts" 
    1615    } 
    1616 
    1617    @distributed_trace 
    1618    def get_metric_status( 
    1619        self, resource_group_name: str, monitor_name: str, **kwargs: Any 
    1620    ) -> _models.MetricsStatusResponse: 
    1621        """Get metric status. 
    1622 
    1623        :param resource_group_name: The name of the resource group. The name is case insensitive. 
    1624         Required. 
    1625        :type resource_group_name: str 
    1626        :param monitor_name: Name of the Monitor resource. Required. 
    1627        :type monitor_name: str 
    1628        :keyword callable cls: A custom type or function that will be passed the direct response 
    1629        :return: MetricsStatusResponse or the result of cls(response) 
    1630        :rtype: ~azure.mgmt.dynatrace.models.MetricsStatusResponse 
    1631        :raises ~azure.core.exceptions.HttpResponseError: 
    1632        """ 
    1633        error_map = { 
    1634            401: ClientAuthenticationError, 
    1635            404: ResourceNotFoundError, 
    1636            409: ResourceExistsError, 
    1637            304: ResourceNotModifiedError, 
    1638        } 
    1639        error_map.update(kwargs.pop("error_map", {}) or {}) 
    1640 
    1641        _headers = kwargs.pop("headers", {}) or {} 
    1642        _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    1643 
    1644        api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) 
    1645        cls: ClsType[_models.MetricsStatusResponse] = kwargs.pop("cls", None) 
    1646 
    1647        request = build_get_metric_status_request( 
    1648            resource_group_name=resource_group_name, 
    1649            monitor_name=monitor_name, 
    1650            subscription_id=self._config.subscription_id, 
    1651            api_version=api_version, 
    1652            template_url=self.get_metric_status.metadata["url"], 
    1653            headers=_headers, 
    1654            params=_params, 
    1655        ) 
    1656        request = _convert_request(request) 
    1657        request.url = self._client.format_url(request.url) 
    1658 
    1659        _stream = False 
    1660        pipeline_response: PipelineResponse = self._client._pipeline.run(  # pylint: disable=protected-access 
    1661            request, stream=_stream, **kwargs 
    1662        ) 
    1663 
    1664        response = pipeline_response.http_response 
    1665 
    1666        if response.status_code not in [200]: 
    1667            map_error(status_code=response.status_code, response=response, error_map=error_map) 
    1668            error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) 
    1669            raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) 
    1670 
    1671        deserialized = self._deserialize("MetricsStatusResponse", pipeline_response) 
    1672 
    1673        if cls: 
    1674            return cls(pipeline_response, deserialized, {}) 
    1675 
    1676        return deserialized 
    1677 
    1678    get_metric_status.metadata = { 
    1679        "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/getMetricStatus" 
    1680    } 
    1681 
    1682    @distributed_trace 
    1683    def list_app_services( 
    1684        self, resource_group_name: str, monitor_name: str, **kwargs: Any 
    1685    ) -> Iterable["_models.AppServiceInfo"]: 
    1686        """Gets list of App Services with Dynatrace PaaS OneAgent enabled. 
    1687 
    1688        Gets list of App Services with Dynatrace PaaS OneAgent enabled. 
    1689 
    1690        :param resource_group_name: The name of the resource group. The name is case insensitive. 
    1691         Required. 
    1692        :type resource_group_name: str 
    1693        :param monitor_name: Monitor resource name. Required. 
    1694        :type monitor_name: str 
    1695        :keyword callable cls: A custom type or function that will be passed the direct response 
    1696        :return: An iterator like instance of either AppServiceInfo or the result of cls(response) 
    1697        :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.AppServiceInfo] 
    1698        :raises ~azure.core.exceptions.HttpResponseError: 
    1699        """ 
    1700        _headers = kwargs.pop("headers", {}) or {} 
    1701        _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    1702 
    1703        api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) 
    1704        cls: ClsType[_models.AppServiceListResponse] = kwargs.pop("cls", None) 
    1705 
    1706        error_map = { 
    1707            401: ClientAuthenticationError, 
    1708            404: ResourceNotFoundError, 
    1709            409: ResourceExistsError, 
    1710            304: ResourceNotModifiedError, 
    1711        } 
    1712        error_map.update(kwargs.pop("error_map", {}) or {}) 
    1713 
    1714        def prepare_request(next_link=None): 
    1715            if not next_link: 
    1716 
    1717                request = build_list_app_services_request( 
    1718                    resource_group_name=resource_group_name, 
    1719                    monitor_name=monitor_name, 
    1720                    subscription_id=self._config.subscription_id, 
    1721                    api_version=api_version, 
    1722                    template_url=self.list_app_services.metadata["url"], 
    1723                    headers=_headers, 
    1724                    params=_params, 
    1725                ) 
    1726                request = _convert_request(request) 
    1727                request.url = self._client.format_url(request.url) 
    1728 
    1729            else: 
    1730                # make call to next link with the client's api-version 
    1731                _parsed_next_link = urllib.parse.urlparse(next_link) 
    1732                _next_request_params = case_insensitive_dict( 
    1733                    { 
    1734                        key: [urllib.parse.quote(v) for v in value] 
    1735                        for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() 
    1736                    } 
    1737                ) 
    1738                _next_request_params["api-version"] = self._config.api_version 
    1739                request = HttpRequest( 
    1740                    "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params 
    1741                ) 
    1742                request = _convert_request(request) 
    1743                request.url = self._client.format_url(request.url) 
    1744                request.method = "GET" 
    1745            return request 
    1746 
    1747        def extract_data(pipeline_response): 
    1748            deserialized = self._deserialize("AppServiceListResponse", pipeline_response) 
    1749            list_of_elem = deserialized.value 
    1750            if cls: 
    1751                list_of_elem = cls(list_of_elem)  # type: ignore 
    1752            return deserialized.next_link or None, iter(list_of_elem) 
    1753 
    1754        def get_next(next_link=None): 
    1755            request = prepare_request(next_link) 
    1756 
    1757            _stream = False 
    1758            pipeline_response: PipelineResponse = self._client._pipeline.run(  # pylint: disable=protected-access 
    1759                request, stream=_stream, **kwargs 
    1760            ) 
    1761            response = pipeline_response.http_response 
    1762 
    1763            if response.status_code not in [200]: 
    1764                map_error(status_code=response.status_code, response=response, error_map=error_map) 
    1765                error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) 
    1766                raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) 
    1767 
    1768            return pipeline_response 
    1769 
    1770        return ItemPaged(get_next, extract_data) 
    1771 
    1772    list_app_services.metadata = { 
    1773        "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/listAppServices" 
    1774    } 
    1775 
    1776    @overload 
    1777    def get_sso_details( 
    1778        self, 
    1779        resource_group_name: str, 
    1780        monitor_name: str, 
    1781        request: Optional[_models.SSODetailsRequest] = None, 
    1782        *, 
    1783        content_type: str = "application/json", 
    1784        **kwargs: Any 
    1785    ) -> _models.SSODetailsResponse: 
    1786        """Gets the SSO configuration details from the partner. 
    1787 
    1788        Gets the SSO configuration details from the partner. 
    1789 
    1790        :param resource_group_name: The name of the resource group. The name is case insensitive. 
    1791         Required. 
    1792        :type resource_group_name: str 
    1793        :param monitor_name: Monitor resource name. Required. 
    1794        :type monitor_name: str 
    1795        :param request: The details of the get sso details request. Default value is None. 
    1796        :type request: ~azure.mgmt.dynatrace.models.SSODetailsRequest 
    1797        :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. 
    1798         Default value is "application/json". 
    1799        :paramtype content_type: str 
    1800        :keyword callable cls: A custom type or function that will be passed the direct response 
    1801        :return: SSODetailsResponse or the result of cls(response) 
    1802        :rtype: ~azure.mgmt.dynatrace.models.SSODetailsResponse 
    1803        :raises ~azure.core.exceptions.HttpResponseError: 
    1804        """ 
    1805 
    1806    @overload 
    1807    def get_sso_details( 
    1808        self, 
    1809        resource_group_name: str, 
    1810        monitor_name: str, 
    1811        request: Optional[IO] = None, 
    1812        *, 
    1813        content_type: str = "application/json", 
    1814        **kwargs: Any 
    1815    ) -> _models.SSODetailsResponse: 
    1816        """Gets the SSO configuration details from the partner. 
    1817 
    1818        Gets the SSO configuration details from the partner. 
    1819 
    1820        :param resource_group_name: The name of the resource group. The name is case insensitive. 
    1821         Required. 
    1822        :type resource_group_name: str 
    1823        :param monitor_name: Monitor resource name. Required. 
    1824        :type monitor_name: str 
    1825        :param request: The details of the get sso details request. Default value is None. 
    1826        :type request: IO 
    1827        :keyword content_type: Body Parameter content-type. Content type parameter for binary body. 
    1828         Default value is "application/json". 
    1829        :paramtype content_type: str 
    1830        :keyword callable cls: A custom type or function that will be passed the direct response 
    1831        :return: SSODetailsResponse or the result of cls(response) 
    1832        :rtype: ~azure.mgmt.dynatrace.models.SSODetailsResponse 
    1833        :raises ~azure.core.exceptions.HttpResponseError: 
    1834        """ 
    1835 
    1836    @distributed_trace 
    1837    def get_sso_details( 
    1838        self, 
    1839        resource_group_name: str, 
    1840        monitor_name: str, 
    1841        request: Optional[Union[_models.SSODetailsRequest, IO]] = None, 
    1842        **kwargs: Any 
    1843    ) -> _models.SSODetailsResponse: 
    1844        """Gets the SSO configuration details from the partner. 
    1845 
    1846        Gets the SSO configuration details from the partner. 
    1847 
    1848        :param resource_group_name: The name of the resource group. The name is case insensitive. 
    1849         Required. 
    1850        :type resource_group_name: str 
    1851        :param monitor_name: Monitor resource name. Required. 
    1852        :type monitor_name: str 
    1853        :param request: The details of the get sso details request. Is either a SSODetailsRequest type 
    1854         or a IO type. Default value is None. 
    1855        :type request: ~azure.mgmt.dynatrace.models.SSODetailsRequest or IO 
    1856        :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. 
    1857         Default value is None. 
    1858        :paramtype content_type: str 
    1859        :keyword callable cls: A custom type or function that will be passed the direct response 
    1860        :return: SSODetailsResponse or the result of cls(response) 
    1861        :rtype: ~azure.mgmt.dynatrace.models.SSODetailsResponse 
    1862        :raises ~azure.core.exceptions.HttpResponseError: 
    1863        """ 
    1864        error_map = { 
    1865            404: ResourceNotFoundError, 
    1866            409: ResourceExistsError, 
    1867            304: ResourceNotModifiedError, 
    1868            401: lambda response: ClientAuthenticationError(response=response, error_format=ARMErrorFormat), 
    1869        } 
    1870        error_map.update(kwargs.pop("error_map", {}) or {}) 
    1871 
    1872        _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 
    1873        _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    1874 
    1875        api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) 
    1876        content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) 
    1877        cls: ClsType[_models.SSODetailsResponse] = kwargs.pop("cls", None) 
    1878 
    1879        content_type = content_type or "application/json" 
    1880        _json = None 
    1881        _content = None 
    1882        if isinstance(request, (IOBase, bytes)): 
    1883            _content = request 
    1884        else: 
    1885            if request is not None: 
    1886                _json = self._serialize.body(request, "SSODetailsRequest") 
    1887            else: 
    1888                _json = None 
    1889 
    1890        request = build_get_sso_details_request( 
    1891            resource_group_name=resource_group_name, 
    1892            monitor_name=monitor_name, 
    1893            subscription_id=self._config.subscription_id, 
    1894            api_version=api_version, 
    1895            content_type=content_type, 
    1896            json=_json, 
    1897            content=_content, 
    1898            template_url=self.get_sso_details.metadata["url"], 
    1899            headers=_headers, 
    1900            params=_params, 
    1901        ) 
    1902        request = _convert_request(request) 
    1903        request.url = self._client.format_url(request.url) 
    1904 
    1905        _stream = False 
    1906        pipeline_response: PipelineResponse = self._client._pipeline.run(  # pylint: disable=protected-access 
    1907            request, stream=_stream, **kwargs 
    1908        ) 
    1909 
    1910        response = pipeline_response.http_response 
    1911 
    1912        if response.status_code not in [200]: 
    1913            map_error(status_code=response.status_code, response=response, error_map=error_map) 
    1914            error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) 
    1915            raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) 
    1916 
    1917        deserialized = self._deserialize("SSODetailsResponse", pipeline_response) 
    1918 
    1919        if cls: 
    1920            return cls(pipeline_response, deserialized, {}) 
    1921 
    1922        return deserialized 
    1923 
    1924    get_sso_details.metadata = { 
    1925        "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/getSSODetails" 
    1926    } 
    1927 
    1928    @overload 
    1929    def list_linkable_environments( 
    1930        self, 
    1931        resource_group_name: str, 
    1932        monitor_name: str, 
    1933        request: _models.LinkableEnvironmentRequest, 
    1934        *, 
    1935        content_type: str = "application/json", 
    1936        **kwargs: Any 
    1937    ) -> Iterable["_models.LinkableEnvironmentResponse"]: 
    1938        """Gets all the Dynatrace environments that a user can link a azure resource to. 
    1939 
    1940        Gets all the Dynatrace environments that a user can link a azure resource to. 
    1941 
    1942        :param resource_group_name: The name of the resource group. The name is case insensitive. 
    1943         Required. 
    1944        :type resource_group_name: str 
    1945        :param monitor_name: Monitor resource name. Required. 
    1946        :type monitor_name: str 
    1947        :param request: The details of the linkable environment request. Required. 
    1948        :type request: ~azure.mgmt.dynatrace.models.LinkableEnvironmentRequest 
    1949        :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. 
    1950         Default value is "application/json". 
    1951        :paramtype content_type: str 
    1952        :keyword callable cls: A custom type or function that will be passed the direct response 
    1953        :return: An iterator like instance of either LinkableEnvironmentResponse or the result of 
    1954         cls(response) 
    1955        :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.LinkableEnvironmentResponse] 
    1956        :raises ~azure.core.exceptions.HttpResponseError: 
    1957        """ 
    1958 
    1959    @overload 
    1960    def list_linkable_environments( 
    1961        self, 
    1962        resource_group_name: str, 
    1963        monitor_name: str, 
    1964        request: IO, 
    1965        *, 
    1966        content_type: str = "application/json", 
    1967        **kwargs: Any 
    1968    ) -> Iterable["_models.LinkableEnvironmentResponse"]: 
    1969        """Gets all the Dynatrace environments that a user can link a azure resource to. 
    1970 
    1971        Gets all the Dynatrace environments that a user can link a azure resource to. 
    1972 
    1973        :param resource_group_name: The name of the resource group. The name is case insensitive. 
    1974         Required. 
    1975        :type resource_group_name: str 
    1976        :param monitor_name: Monitor resource name. Required. 
    1977        :type monitor_name: str 
    1978        :param request: The details of the linkable environment request. Required. 
    1979        :type request: IO 
    1980        :keyword content_type: Body Parameter content-type. Content type parameter for binary body. 
    1981         Default value is "application/json". 
    1982        :paramtype content_type: str 
    1983        :keyword callable cls: A custom type or function that will be passed the direct response 
    1984        :return: An iterator like instance of either LinkableEnvironmentResponse or the result of 
    1985         cls(response) 
    1986        :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.LinkableEnvironmentResponse] 
    1987        :raises ~azure.core.exceptions.HttpResponseError: 
    1988        """ 
    1989 
    1990    @distributed_trace 
    1991    def list_linkable_environments( 
    1992        self, 
    1993        resource_group_name: str, 
    1994        monitor_name: str, 
    1995        request: Union[_models.LinkableEnvironmentRequest, IO], 
    1996        **kwargs: Any 
    1997    ) -> Iterable["_models.LinkableEnvironmentResponse"]: 
    1998        """Gets all the Dynatrace environments that a user can link a azure resource to. 
    1999 
    2000        Gets all the Dynatrace environments that a user can link a azure resource to. 
    2001 
    2002        :param resource_group_name: The name of the resource group. The name is case insensitive. 
    2003         Required. 
    2004        :type resource_group_name: str 
    2005        :param monitor_name: Monitor resource name. Required. 
    2006        :type monitor_name: str 
    2007        :param request: The details of the linkable environment request. Is either a 
    2008         LinkableEnvironmentRequest type or a IO type. Required. 
    2009        :type request: ~azure.mgmt.dynatrace.models.LinkableEnvironmentRequest or IO 
    2010        :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. 
    2011         Default value is None. 
    2012        :paramtype content_type: str 
    2013        :keyword callable cls: A custom type or function that will be passed the direct response 
    2014        :return: An iterator like instance of either LinkableEnvironmentResponse or the result of 
    2015         cls(response) 
    2016        :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.LinkableEnvironmentResponse] 
    2017        :raises ~azure.core.exceptions.HttpResponseError: 
    2018        """ 
    2019        _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 
    2020        _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 
    2021 
    2022        api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) 
    2023        content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) 
    2024        cls: ClsType[_models.LinkableEnvironmentListResponse] = kwargs.pop("cls", None) 
    2025 
    2026        error_map = { 
    2027            401: ClientAuthenticationError, 
    2028            404: ResourceNotFoundError, 
    2029            409: ResourceExistsError, 
    2030            304: ResourceNotModifiedError, 
    2031        } 
    2032        error_map.update(kwargs.pop("error_map", {}) or {}) 
    2033        content_type = content_type or "application/json" 
    2034        _json = None 
    2035        _content = None 
    2036        if isinstance(request, (IOBase, bytes)): 
    2037            _content = request 
    2038        else: 
    2039            _json = self._serialize.body(request, "LinkableEnvironmentRequest") 
    2040 
    2041        def prepare_request(next_link=None): 
    2042            if not next_link: 
    2043 
    2044                request = build_list_linkable_environments_request( 
    2045                    resource_group_name=resource_group_name, 
    2046                    monitor_name=monitor_name, 
    2047                    subscription_id=self._config.subscription_id, 
    2048                    api_version=api_version, 
    2049                    content_type=content_type, 
    2050                    json=_json, 
    2051                    content=_content, 
    2052                    template_url=self.list_linkable_environments.metadata["url"], 
    2053                    headers=_headers, 
    2054                    params=_params, 
    2055                ) 
    2056                request = _convert_request(request) 
    2057                request.url = self._client.format_url(request.url) 
    2058 
    2059            else: 
    2060                # make call to next link with the client's api-version 
    2061                _parsed_next_link = urllib.parse.urlparse(next_link) 
    2062                _next_request_params = case_insensitive_dict( 
    2063                    { 
    2064                        key: [urllib.parse.quote(v) for v in value] 
    2065                        for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() 
    2066                    } 
    2067                ) 
    2068                _next_request_params["api-version"] = self._config.api_version 
    2069                request = HttpRequest( 
    2070                    "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params 
    2071                ) 
    2072                request = _convert_request(request) 
    2073                request.url = self._client.format_url(request.url) 
    2074                request.method = "GET" 
    2075            return request 
    2076 
    2077        def extract_data(pipeline_response): 
    2078            deserialized = self._deserialize("LinkableEnvironmentListResponse", pipeline_response) 
    2079            list_of_elem = deserialized.value 
    2080            if cls: 
    2081                list_of_elem = cls(list_of_elem)  # type: ignore 
    2082            return deserialized.next_link or None, iter(list_of_elem) 
    2083 
    2084        def get_next(next_link=None): 
    2085            request = prepare_request(next_link) 
    2086 
    2087            _stream = False 
    2088            pipeline_response: PipelineResponse = self._client._pipeline.run(  # pylint: disable=protected-access 
    2089                request, stream=_stream, **kwargs 
    2090            ) 
    2091            response = pipeline_response.http_response 
    2092 
    2093            if response.status_code not in [200]: 
    2094                map_error(status_code=response.status_code, response=response, error_map=error_map) 
    2095                error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) 
    2096                raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) 
    2097 
    2098            return pipeline_response 
    2099 
    2100        return ItemPaged(get_next, extract_data) 
    2101 
    2102    list_linkable_environments.metadata = { 
    2103        "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/listLinkableEnvironments" 
    2104    }