1# pylint: disable=line-too-long,useless-suppression,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) Python Code Generator.
7# Changes may cause incorrect behavior and will be lost if the code is regenerated.
8# --------------------------------------------------------------------------
9from collections.abc import MutableMapping
10from io import IOBase
11import json
12from typing import Any, Callable, IO, Iterator, Optional, TypeVar, Union, cast, overload
13import urllib.parse
14
15from azure.core import PipelineClient
16from azure.core.exceptions import (
17 ClientAuthenticationError,
18 HttpResponseError,
19 ResourceExistsError,
20 ResourceNotFoundError,
21 ResourceNotModifiedError,
22 StreamClosedError,
23 StreamConsumedError,
24 map_error,
25)
26from azure.core.paging import ItemPaged
27from azure.core.pipeline import PipelineResponse
28from azure.core.polling import LROPoller, NoPolling, PollingMethod
29from azure.core.rest import HttpRequest, HttpResponse
30from azure.core.tracing.decorator import distributed_trace
31from azure.core.utils import case_insensitive_dict
32from azure.mgmt.core.exceptions import ARMErrorFormat
33from azure.mgmt.core.polling.arm_polling import ARMPolling
34
35from .. import models as _models, types as _types
36from .._configuration import DynatraceObservabilityMgmtClientConfiguration
37from .._utils.model_base import SdkJSONEncoder, _deserialize, _failsafe_deserialize
38from .._utils.serialization import Deserializer, Serializer
39
40T = TypeVar("T")
41ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, dict[str, Any]], Any]]
42List = list
43
44_SERIALIZER = Serializer()
45_SERIALIZER.client_side_validation = False
46
47
48def build_operations_list_request(**kwargs: Any) -> HttpRequest:
49 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
50 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
51
52 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
53 accept = _headers.pop("Accept", "application/json")
54
55 # Construct URL
56 _url = "/providers/Dynatrace.Observability/operations"
57
58 # Construct parameters
59 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
60
61 # Construct headers
62 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
63
64 return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs)
65
66
67def build_monitored_subscriptions_get_request( # pylint: disable=name-too-long
68 resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any
69) -> HttpRequest:
70 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
71 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
72
73 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
74 accept = _headers.pop("Accept", "application/json")
75
76 # Construct URL
77 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/monitoredSubscriptions/default"
78 path_format_arguments = {
79 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
80 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
81 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
82 }
83
84 _url: str = _url.format(**path_format_arguments) # type: ignore
85
86 # Construct parameters
87 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
88
89 # Construct headers
90 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
91
92 return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs)
93
94
95def build_monitored_subscriptions_create_or_update_request( # pylint: disable=name-too-long
96 resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any
97) -> HttpRequest:
98 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
99 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
100
101 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
102 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
103 accept = _headers.pop("Accept", "application/json")
104
105 # Construct URL
106 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/monitoredSubscriptions/default"
107 path_format_arguments = {
108 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
109 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
110 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
111 }
112
113 _url: str = _url.format(**path_format_arguments) # type: ignore
114
115 # Construct parameters
116 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
117
118 # Construct headers
119 if content_type is not None:
120 _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str")
121 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
122
123 return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs)
124
125
126def build_monitored_subscriptions_update_request( # pylint: disable=name-too-long
127 resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any
128) -> HttpRequest:
129 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
130 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
131
132 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
133 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
134 accept = _headers.pop("Accept", "application/json")
135
136 # Construct URL
137 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/monitoredSubscriptions/default"
138 path_format_arguments = {
139 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
140 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
141 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
142 }
143
144 _url: str = _url.format(**path_format_arguments) # type: ignore
145
146 # Construct parameters
147 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
148
149 # Construct headers
150 if content_type is not None:
151 _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str")
152 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
153
154 return HttpRequest(method="PATCH", url=_url, params=_params, headers=_headers, **kwargs)
155
156
157def build_monitored_subscriptions_delete_request( # pylint: disable=name-too-long
158 resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any
159) -> HttpRequest:
160 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
161
162 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
163 # Construct URL
164 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/monitoredSubscriptions/default"
165 path_format_arguments = {
166 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
167 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
168 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
169 }
170
171 _url: str = _url.format(**path_format_arguments) # type: ignore
172
173 # Construct parameters
174 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
175
176 return HttpRequest(method="DELETE", url=_url, params=_params, **kwargs)
177
178
179def build_monitored_subscriptions_list_request( # pylint: disable=name-too-long
180 resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any
181) -> HttpRequest:
182 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
183 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
184
185 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
186 accept = _headers.pop("Accept", "application/json")
187
188 # Construct URL
189 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/monitoredSubscriptions"
190 path_format_arguments = {
191 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
192 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
193 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
194 }
195
196 _url: str = _url.format(**path_format_arguments) # type: ignore
197
198 # Construct parameters
199 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
200
201 # Construct headers
202 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
203
204 return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs)
205
206
207def build_tag_rules_get_request(
208 resource_group_name: str, monitor_name: str, rule_set_name: str, subscription_id: str, **kwargs: Any
209) -> HttpRequest:
210 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
211 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
212
213 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
214 accept = _headers.pop("Accept", "application/json")
215
216 # Construct URL
217 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/tagRules/{ruleSetName}"
218 path_format_arguments = {
219 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
220 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
221 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
222 "ruleSetName": _SERIALIZER.url("rule_set_name", rule_set_name, "str"),
223 }
224
225 _url: str = _url.format(**path_format_arguments) # type: ignore
226
227 # Construct parameters
228 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
229
230 # Construct headers
231 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
232
233 return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs)
234
235
236def build_tag_rules_create_or_update_request(
237 resource_group_name: str, monitor_name: str, rule_set_name: str, subscription_id: str, **kwargs: Any
238) -> HttpRequest:
239 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
240 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
241
242 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
243 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
244 accept = _headers.pop("Accept", "application/json")
245
246 # Construct URL
247 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/tagRules/{ruleSetName}"
248 path_format_arguments = {
249 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
250 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
251 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
252 "ruleSetName": _SERIALIZER.url("rule_set_name", rule_set_name, "str"),
253 }
254
255 _url: str = _url.format(**path_format_arguments) # type: ignore
256
257 # Construct parameters
258 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
259
260 # Construct headers
261 if content_type is not None:
262 _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str")
263 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
264
265 return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs)
266
267
268def build_tag_rules_delete_request(
269 resource_group_name: str, monitor_name: str, rule_set_name: str, subscription_id: str, **kwargs: Any
270) -> HttpRequest:
271 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
272
273 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
274 # Construct URL
275 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/tagRules/{ruleSetName}"
276 path_format_arguments = {
277 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
278 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
279 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
280 "ruleSetName": _SERIALIZER.url("rule_set_name", rule_set_name, "str"),
281 }
282
283 _url: str = _url.format(**path_format_arguments) # type: ignore
284
285 # Construct parameters
286 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
287
288 return HttpRequest(method="DELETE", url=_url, params=_params, **kwargs)
289
290
291def build_tag_rules_list_request(
292 resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any
293) -> HttpRequest:
294 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
295 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
296
297 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
298 accept = _headers.pop("Accept", "application/json")
299
300 # Construct URL
301 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/tagRules"
302 path_format_arguments = {
303 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
304 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
305 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
306 }
307
308 _url: str = _url.format(**path_format_arguments) # type: ignore
309
310 # Construct parameters
311 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
312
313 # Construct headers
314 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
315
316 return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs)
317
318
319def build_monitors_get_request(
320 resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any
321) -> HttpRequest:
322 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
323 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
324
325 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
326 accept = _headers.pop("Accept", "application/json")
327
328 # Construct URL
329 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}"
330 path_format_arguments = {
331 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
332 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
333 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
334 }
335
336 _url: str = _url.format(**path_format_arguments) # type: ignore
337
338 # Construct parameters
339 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
340
341 # Construct headers
342 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
343
344 return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs)
345
346
347def build_monitors_create_or_update_request(
348 resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any
349) -> HttpRequest:
350 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
351 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
352
353 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
354 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
355 accept = _headers.pop("Accept", "application/json")
356
357 # Construct URL
358 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}"
359 path_format_arguments = {
360 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
361 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
362 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
363 }
364
365 _url: str = _url.format(**path_format_arguments) # type: ignore
366
367 # Construct parameters
368 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
369
370 # Construct headers
371 if content_type is not None:
372 _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str")
373 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
374
375 return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs)
376
377
378def build_monitors_update_request(
379 resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any
380) -> HttpRequest:
381 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
382 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
383
384 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
385 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
386 accept = _headers.pop("Accept", "application/json")
387
388 # Construct URL
389 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}"
390 path_format_arguments = {
391 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
392 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
393 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
394 }
395
396 _url: str = _url.format(**path_format_arguments) # type: ignore
397
398 # Construct parameters
399 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
400
401 # Construct headers
402 if content_type is not None:
403 _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str")
404 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
405
406 return HttpRequest(method="PATCH", url=_url, params=_params, headers=_headers, **kwargs)
407
408
409def build_monitors_delete_request(
410 resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any
411) -> HttpRequest:
412 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
413
414 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
415 # Construct URL
416 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}"
417 path_format_arguments = {
418 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
419 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
420 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
421 }
422
423 _url: str = _url.format(**path_format_arguments) # type: ignore
424
425 # Construct parameters
426 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
427
428 return HttpRequest(method="DELETE", url=_url, params=_params, **kwargs)
429
430
431def build_monitors_list_by_resource_group_request( # pylint: disable=name-too-long
432 resource_group_name: str, subscription_id: str, **kwargs: Any
433) -> HttpRequest:
434 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
435 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
436
437 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
438 accept = _headers.pop("Accept", "application/json")
439
440 # Construct URL
441 _url = (
442 "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors"
443 )
444 path_format_arguments = {
445 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
446 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
447 }
448
449 _url: str = _url.format(**path_format_arguments) # type: ignore
450
451 # Construct parameters
452 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
453
454 # Construct headers
455 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
456
457 return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs)
458
459
460def build_monitors_list_by_subscription_id_request( # pylint: disable=name-too-long
461 subscription_id: str, **kwargs: Any
462) -> HttpRequest:
463 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
464 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
465
466 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
467 accept = _headers.pop("Accept", "application/json")
468
469 # Construct URL
470 _url = "/subscriptions/{subscriptionId}/providers/Dynatrace.Observability/monitors"
471 path_format_arguments = {
472 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
473 }
474
475 _url: str = _url.format(**path_format_arguments) # type: ignore
476
477 # Construct parameters
478 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
479
480 # Construct headers
481 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
482
483 return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs)
484
485
486def build_monitors_list_monitored_resources_request( # pylint: disable=name-too-long
487 resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any
488) -> HttpRequest:
489 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
490 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
491
492 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
493 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
494 accept = _headers.pop("Accept", "application/json")
495
496 # Construct URL
497 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/listMonitoredResources"
498 path_format_arguments = {
499 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
500 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
501 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
502 }
503
504 _url: str = _url.format(**path_format_arguments) # type: ignore
505
506 # Construct parameters
507 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
508
509 # Construct headers
510 if content_type is not None:
511 _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str")
512 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
513
514 return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs)
515
516
517def build_monitors_get_vm_host_payload_request( # pylint: disable=name-too-long
518 resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any
519) -> HttpRequest:
520 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
521 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
522
523 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
524 accept = _headers.pop("Accept", "application/json")
525
526 # Construct URL
527 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/getVMHostPayload"
528 path_format_arguments = {
529 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
530 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
531 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
532 }
533
534 _url: str = _url.format(**path_format_arguments) # type: ignore
535
536 # Construct parameters
537 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
538
539 # Construct headers
540 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
541
542 return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs)
543
544
545def build_monitors_manage_agent_installation_request( # pylint: disable=name-too-long
546 resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any
547) -> HttpRequest:
548 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
549 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
550
551 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
552 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
553 # Construct URL
554 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/manageAgentInstallation"
555 path_format_arguments = {
556 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
557 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
558 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
559 }
560
561 _url: str = _url.format(**path_format_arguments) # type: ignore
562
563 # Construct parameters
564 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
565
566 # Construct headers
567 if content_type is not None:
568 _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str")
569
570 return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs)
571
572
573def build_monitors_list_hosts_request(
574 resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any
575) -> HttpRequest:
576 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
577 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
578
579 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
580 accept = _headers.pop("Accept", "application/json")
581
582 # Construct URL
583 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/listHosts"
584 path_format_arguments = {
585 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
586 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
587 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
588 }
589
590 _url: str = _url.format(**path_format_arguments) # type: ignore
591
592 # Construct parameters
593 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
594
595 # Construct headers
596 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
597
598 return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs)
599
600
601def build_monitors_get_metric_status_request(
602 resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any
603) -> HttpRequest:
604 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
605 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
606
607 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
608 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
609 accept = _headers.pop("Accept", "application/json")
610
611 # Construct URL
612 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/getMetricStatus"
613 path_format_arguments = {
614 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
615 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
616 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
617 }
618
619 _url: str = _url.format(**path_format_arguments) # type: ignore
620
621 # Construct parameters
622 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
623
624 # Construct headers
625 if content_type is not None:
626 _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str")
627 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
628
629 return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs)
630
631
632def build_monitors_list_app_services_request(
633 resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any
634) -> HttpRequest:
635 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
636 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
637
638 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
639 accept = _headers.pop("Accept", "application/json")
640
641 # Construct URL
642 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/listAppServices"
643 path_format_arguments = {
644 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
645 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
646 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
647 }
648
649 _url: str = _url.format(**path_format_arguments) # type: ignore
650
651 # Construct parameters
652 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
653
654 # Construct headers
655 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
656
657 return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs)
658
659
660def build_monitors_upgrade_plan_request(
661 resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any
662) -> HttpRequest:
663 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
664 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
665
666 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
667 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
668 # Construct URL
669 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/upgradePlan"
670 path_format_arguments = {
671 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
672 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
673 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
674 }
675
676 _url: str = _url.format(**path_format_arguments) # type: ignore
677
678 # Construct parameters
679 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
680
681 # Construct headers
682 if content_type is not None:
683 _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str")
684
685 return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs)
686
687
688def build_monitors_get_sso_details_request(
689 resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any
690) -> HttpRequest:
691 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
692 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
693
694 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
695 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
696 accept = _headers.pop("Accept", "application/json")
697
698 # Construct URL
699 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/getSSODetails"
700 path_format_arguments = {
701 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
702 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
703 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
704 }
705
706 _url: str = _url.format(**path_format_arguments) # type: ignore
707
708 # Construct parameters
709 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
710
711 # Construct headers
712 if content_type is not None:
713 _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str")
714 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
715
716 return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs)
717
718
719def build_monitors_list_linkable_environments_request( # pylint: disable=name-too-long
720 resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any
721) -> HttpRequest:
722 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
723 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
724
725 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
726 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
727 accept = _headers.pop("Accept", "application/json")
728
729 # Construct URL
730 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/listLinkableEnvironments"
731 path_format_arguments = {
732 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
733 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
734 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
735 }
736
737 _url: str = _url.format(**path_format_arguments) # type: ignore
738
739 # Construct parameters
740 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
741
742 # Construct headers
743 if content_type is not None:
744 _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str")
745 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
746
747 return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs)
748
749
750def build_monitors_get_all_connected_resources_count_request( # pylint: disable=name-too-long
751 subscription_id: str, **kwargs: Any
752) -> HttpRequest:
753 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
754 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
755
756 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
757 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
758 accept = _headers.pop("Accept", "application/json")
759
760 # Construct URL
761 _url = "/subscriptions/{subscriptionId}/providers/Dynatrace.Observability/getAllConnectedResourcesCount"
762 path_format_arguments = {
763 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
764 }
765
766 _url: str = _url.format(**path_format_arguments) # type: ignore
767
768 # Construct parameters
769 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
770
771 # Construct headers
772 if content_type is not None:
773 _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str")
774 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
775
776 return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs)
777
778
779def build_monitors_get_marketplace_saa_s_resource_details_request( # pylint: disable=name-too-long
780 subscription_id: str, **kwargs: Any
781) -> HttpRequest:
782 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
783 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
784
785 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
786 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
787 accept = _headers.pop("Accept", "application/json")
788
789 # Construct URL
790 _url = "/subscriptions/{subscriptionId}/providers/Dynatrace.Observability/getMarketplaceSaaSResourceDetails"
791 path_format_arguments = {
792 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
793 }
794
795 _url: str = _url.format(**path_format_arguments) # type: ignore
796
797 # Construct parameters
798 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
799
800 # Construct headers
801 if content_type is not None:
802 _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str")
803 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
804
805 return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs)
806
807
808def build_single_sign_on_get_request(
809 resource_group_name: str, monitor_name: str, configuration_name: str, subscription_id: str, **kwargs: Any
810) -> HttpRequest:
811 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
812 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
813
814 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
815 accept = _headers.pop("Accept", "application/json")
816
817 # Construct URL
818 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/singleSignOnConfigurations/{configurationName}"
819 path_format_arguments = {
820 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
821 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
822 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
823 "configurationName": _SERIALIZER.url("configuration_name", configuration_name, "str"),
824 }
825
826 _url: str = _url.format(**path_format_arguments) # type: ignore
827
828 # Construct parameters
829 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
830
831 # Construct headers
832 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
833
834 return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs)
835
836
837def build_single_sign_on_create_or_update_request( # pylint: disable=name-too-long
838 resource_group_name: str, monitor_name: str, configuration_name: str, subscription_id: str, **kwargs: Any
839) -> HttpRequest:
840 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
841 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
842
843 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
844 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
845 accept = _headers.pop("Accept", "application/json")
846
847 # Construct URL
848 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/singleSignOnConfigurations/{configurationName}"
849 path_format_arguments = {
850 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
851 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
852 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
853 "configurationName": _SERIALIZER.url("configuration_name", configuration_name, "str"),
854 }
855
856 _url: str = _url.format(**path_format_arguments) # type: ignore
857
858 # Construct parameters
859 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
860
861 # Construct headers
862 if content_type is not None:
863 _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str")
864 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
865
866 return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs)
867
868
869def build_single_sign_on_list_request(
870 resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any
871) -> HttpRequest:
872 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
873 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
874
875 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
876 accept = _headers.pop("Accept", "application/json")
877
878 # Construct URL
879 _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/singleSignOnConfigurations"
880 path_format_arguments = {
881 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
882 "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"),
883 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"),
884 }
885
886 _url: str = _url.format(**path_format_arguments) # type: ignore
887
888 # Construct parameters
889 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
890
891 # Construct headers
892 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
893
894 return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs)
895
896
897def build_creation_supported_list_request(
898 dynatrace_environment_id: str, subscription_id: str, **kwargs: Any
899) -> HttpRequest:
900 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
901 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
902
903 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
904 accept = _headers.pop("Accept", "application/json")
905
906 # Construct URL
907 _url = "/subscriptions/{subscriptionId}/providers/Dynatrace.Observability/subscriptionStatuses/{dynatraceEnvironmentId}"
908 path_format_arguments = {
909 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
910 "dynatraceEnvironmentId": _SERIALIZER.url("dynatrace_environment_id", dynatrace_environment_id, "str"),
911 }
912
913 _url: str = _url.format(**path_format_arguments) # type: ignore
914
915 # Construct parameters
916 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
917
918 # Construct headers
919 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
920
921 return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs)
922
923
924def build_creation_supported_get_request(
925 dynatrace_environment_id: str, subscription_id: str, **kwargs: Any
926) -> HttpRequest:
927 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
928 _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
929
930 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-04-24"))
931 accept = _headers.pop("Accept", "application/json")
932
933 # Construct URL
934 _url = "/subscriptions/{subscriptionId}/providers/Dynatrace.Observability/subscriptionStatuses/{dynatraceEnvironmentId}/default"
935 path_format_arguments = {
936 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"),
937 "dynatraceEnvironmentId": _SERIALIZER.url("dynatrace_environment_id", dynatrace_environment_id, "str"),
938 }
939
940 _url: str = _url.format(**path_format_arguments) # type: ignore
941
942 # Construct parameters
943 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
944
945 # Construct headers
946 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
947
948 return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs)
949
950
951class Operations:
952 """
953 .. warning::
954 **DO NOT** instantiate this class directly.
955
956 Instead, you should access the following operations through
957 :class:`~azure.mgmt.dynatrace.DynatraceObservabilityMgmtClient`'s
958 :attr:`operations` attribute.
959 """
960
961 def __init__(self, *args, **kwargs) -> None:
962 input_args = list(args)
963 self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client")
964 self._config: DynatraceObservabilityMgmtClientConfiguration = (
965 input_args.pop(0) if input_args else kwargs.pop("config")
966 )
967 self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer")
968 self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer")
969
970 @distributed_trace
971 def list(self, **kwargs: Any) -> ItemPaged["_models.Operation"]:
972 """List the operations for the provider.
973
974 :return: An iterator like instance of Operation
975 :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.Operation]
976 :raises ~azure.core.exceptions.HttpResponseError:
977 """
978 _headers = kwargs.pop("headers", {}) or {}
979 _params = kwargs.pop("params", {}) or {}
980
981 cls: ClsType[List[_models.Operation]] = kwargs.pop("cls", None)
982
983 error_map: MutableMapping = {
984 401: ClientAuthenticationError,
985 404: ResourceNotFoundError,
986 409: ResourceExistsError,
987 304: ResourceNotModifiedError,
988 }
989 error_map.update(kwargs.pop("error_map", {}) or {})
990
991 def prepare_request(next_link=None):
992 if not next_link:
993
994 _request = build_operations_list_request(
995 api_version=self._config.api_version,
996 headers=_headers,
997 params=_params,
998 )
999 path_format_arguments = {
1000 "endpoint": self._serialize.url(
1001 "self._config.base_url", self._config.base_url, "str", skip_quote=True
1002 ),
1003 }
1004 _request.url = self._client.format_url(_request.url, **path_format_arguments)
1005
1006 else:
1007 # make call to next link with the client's api-version
1008 _parsed_next_link = urllib.parse.urlparse(next_link)
1009 _next_request_params = case_insensitive_dict(
1010 {
1011 key: [urllib.parse.quote(v) for v in value]
1012 for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items()
1013 }
1014 )
1015 _next_request_params["api-version"] = self._config.api_version
1016 _request = HttpRequest(
1017 "GET",
1018 urllib.parse.urljoin(next_link, _parsed_next_link.path),
1019 headers=_headers,
1020 params=_next_request_params,
1021 )
1022 path_format_arguments = {
1023 "endpoint": self._serialize.url(
1024 "self._config.base_url", self._config.base_url, "str", skip_quote=True
1025 ),
1026 }
1027 _request.url = self._client.format_url(_request.url, **path_format_arguments)
1028
1029 return _request
1030
1031 def extract_data(pipeline_response):
1032 deserialized = pipeline_response.http_response.json()
1033 list_of_elem = _deserialize(
1034 List[_models.Operation],
1035 deserialized.get("value", []),
1036 )
1037 if cls:
1038 list_of_elem = cls(list_of_elem) # type: ignore
1039 return deserialized.get("nextLink") or None, iter(list_of_elem)
1040
1041 def get_next(next_link=None):
1042 _request = prepare_request(next_link)
1043
1044 _stream = False
1045 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
1046 _request, stream=_stream, **kwargs
1047 )
1048 response = pipeline_response.http_response
1049
1050 if response.status_code not in [200]:
1051 map_error(status_code=response.status_code, response=response, error_map=error_map)
1052 error = _failsafe_deserialize(
1053 _models.ErrorResponse,
1054 response,
1055 )
1056 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
1057
1058 return pipeline_response
1059
1060 return ItemPaged(get_next, extract_data)
1061
1062
1063class MonitoredSubscriptionsOperations:
1064 """
1065 .. warning::
1066 **DO NOT** instantiate this class directly.
1067
1068 Instead, you should access the following operations through
1069 :class:`~azure.mgmt.dynatrace.DynatraceObservabilityMgmtClient`'s
1070 :attr:`monitored_subscriptions` attribute.
1071 """
1072
1073 def __init__(self, *args, **kwargs) -> None:
1074 input_args = list(args)
1075 self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client")
1076 self._config: DynatraceObservabilityMgmtClientConfiguration = (
1077 input_args.pop(0) if input_args else kwargs.pop("config")
1078 )
1079 self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer")
1080 self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer")
1081
1082 @distributed_trace
1083 def get(
1084 self, resource_group_name: str, monitor_name: str, **kwargs: Any
1085 ) -> _models.MonitoredSubscriptionProperties:
1086 """List the subscriptions currently being monitored by the Dynatrace monitor resource.
1087
1088 :param resource_group_name: The name of the resource group. The name is case insensitive.
1089 Required.
1090 :type resource_group_name: str
1091 :param monitor_name: Monitor resource name. Required.
1092 :type monitor_name: str
1093 :return: MonitoredSubscriptionProperties. The MonitoredSubscriptionProperties is compatible
1094 with MutableMapping
1095 :rtype: ~azure.mgmt.dynatrace.models.MonitoredSubscriptionProperties
1096 :raises ~azure.core.exceptions.HttpResponseError:
1097 """
1098 error_map: MutableMapping = {
1099 401: ClientAuthenticationError,
1100 404: ResourceNotFoundError,
1101 409: ResourceExistsError,
1102 304: ResourceNotModifiedError,
1103 }
1104 error_map.update(kwargs.pop("error_map", {}) or {})
1105
1106 _headers = kwargs.pop("headers", {}) or {}
1107 _params = kwargs.pop("params", {}) or {}
1108
1109 cls: ClsType[_models.MonitoredSubscriptionProperties] = kwargs.pop("cls", None)
1110
1111 _request = build_monitored_subscriptions_get_request(
1112 resource_group_name=resource_group_name,
1113 monitor_name=monitor_name,
1114 subscription_id=self._config.subscription_id,
1115 api_version=self._config.api_version,
1116 headers=_headers,
1117 params=_params,
1118 )
1119 path_format_arguments = {
1120 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
1121 }
1122 _request.url = self._client.format_url(_request.url, **path_format_arguments)
1123
1124 _decompress = kwargs.pop("decompress", True)
1125 _stream = kwargs.pop("stream", False)
1126 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
1127 _request, stream=_stream, **kwargs
1128 )
1129
1130 response = pipeline_response.http_response
1131
1132 if response.status_code not in [200]:
1133 if _stream:
1134 try:
1135 response.read() # Load the body in memory and close the socket
1136 except (StreamConsumedError, StreamClosedError):
1137 pass
1138 map_error(status_code=response.status_code, response=response, error_map=error_map)
1139 error = _failsafe_deserialize(
1140 _models.ErrorResponse,
1141 response,
1142 )
1143 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
1144
1145 if _stream:
1146 deserialized = response.iter_bytes() if _decompress else response.iter_raw()
1147 else:
1148 deserialized = _deserialize(_models.MonitoredSubscriptionProperties, response.json())
1149
1150 if cls:
1151 return cls(pipeline_response, deserialized, {}) # type: ignore
1152
1153 return deserialized # type: ignore
1154
1155 def _create_or_update_initial(
1156 self,
1157 resource_group_name: str,
1158 monitor_name: str,
1159 body: Optional[
1160 Union[_models.MonitoredSubscriptionProperties, _types.MonitoredSubscriptionProperties, IO[bytes]]
1161 ] = None,
1162 **kwargs: Any
1163 ) -> Iterator[bytes]:
1164 error_map: MutableMapping = {
1165 401: ClientAuthenticationError,
1166 404: ResourceNotFoundError,
1167 409: ResourceExistsError,
1168 304: ResourceNotModifiedError,
1169 }
1170 error_map.update(kwargs.pop("error_map", {}) or {})
1171
1172 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
1173 _params = kwargs.pop("params", {}) or {}
1174
1175 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
1176 content_type = content_type if body else None
1177 cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None)
1178
1179 content_type = content_type or "application/json" if body else None
1180 _content = None
1181 if isinstance(body, (IOBase, bytes)):
1182 _content = body
1183 else:
1184 if body is not None:
1185 _content = json.dumps(body, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore
1186 else:
1187 _content = None
1188
1189 _request = build_monitored_subscriptions_create_or_update_request(
1190 resource_group_name=resource_group_name,
1191 monitor_name=monitor_name,
1192 subscription_id=self._config.subscription_id,
1193 content_type=content_type,
1194 api_version=self._config.api_version,
1195 content=_content,
1196 headers=_headers,
1197 params=_params,
1198 )
1199 path_format_arguments = {
1200 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
1201 }
1202 _request.url = self._client.format_url(_request.url, **path_format_arguments)
1203
1204 _decompress = kwargs.pop("decompress", True)
1205 _stream = True
1206 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
1207 _request, stream=_stream, **kwargs
1208 )
1209
1210 response = pipeline_response.http_response
1211
1212 if response.status_code not in [200, 201]:
1213 try:
1214 response.read() # Load the body in memory and close the socket
1215 except (StreamConsumedError, StreamClosedError):
1216 pass
1217 map_error(status_code=response.status_code, response=response, error_map=error_map)
1218 error = _failsafe_deserialize(
1219 _models.ErrorResponse,
1220 response,
1221 )
1222 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
1223
1224 response_headers = {}
1225 if response.status_code == 201:
1226 response_headers["Location"] = self._deserialize("str", response.headers.get("Location"))
1227 response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After"))
1228
1229 deserialized = response.iter_bytes() if _decompress else response.iter_raw()
1230
1231 if cls:
1232 return cls(pipeline_response, deserialized, response_headers) # type: ignore
1233
1234 return deserialized # type: ignore
1235
1236 @overload
1237 def begin_create_or_update(
1238 self,
1239 resource_group_name: str,
1240 monitor_name: str,
1241 body: Optional[_models.MonitoredSubscriptionProperties] = None,
1242 *,
1243 content_type: str = "application/json",
1244 **kwargs: Any
1245 ) -> LROPoller[_models.MonitoredSubscriptionProperties]:
1246 """Add the subscriptions that should be monitored by the Dynatrace monitor resource.
1247
1248 :param resource_group_name: The name of the resource group. The name is case insensitive.
1249 Required.
1250 :type resource_group_name: str
1251 :param monitor_name: Monitor resource name. Required.
1252 :type monitor_name: str
1253 :param body: Default value is None.
1254 :type body: ~azure.mgmt.dynatrace.models.MonitoredSubscriptionProperties
1255 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
1256 Default value is "application/json".
1257 :paramtype content_type: str
1258 :return: An instance of LROPoller that returns MonitoredSubscriptionProperties. The
1259 MonitoredSubscriptionProperties is compatible with MutableMapping
1260 :rtype:
1261 ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.MonitoredSubscriptionProperties]
1262 :raises ~azure.core.exceptions.HttpResponseError:
1263 """
1264
1265 @overload
1266 def begin_create_or_update(
1267 self,
1268 resource_group_name: str,
1269 monitor_name: str,
1270 body: Optional[_types.MonitoredSubscriptionProperties] = None,
1271 *,
1272 content_type: str = "application/json",
1273 **kwargs: Any
1274 ) -> LROPoller[_models.MonitoredSubscriptionProperties]:
1275 """Add the subscriptions that should be monitored by the Dynatrace monitor resource.
1276
1277 :param resource_group_name: The name of the resource group. The name is case insensitive.
1278 Required.
1279 :type resource_group_name: str
1280 :param monitor_name: Monitor resource name. Required.
1281 :type monitor_name: str
1282 :param body: Default value is None.
1283 :type body: ~azure.mgmt.dynatrace.types.MonitoredSubscriptionProperties
1284 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
1285 Default value is "application/json".
1286 :paramtype content_type: str
1287 :return: An instance of LROPoller that returns MonitoredSubscriptionProperties. The
1288 MonitoredSubscriptionProperties is compatible with MutableMapping
1289 :rtype:
1290 ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.MonitoredSubscriptionProperties]
1291 :raises ~azure.core.exceptions.HttpResponseError:
1292 """
1293
1294 @overload
1295 def begin_create_or_update(
1296 self,
1297 resource_group_name: str,
1298 monitor_name: str,
1299 body: Optional[IO[bytes]] = None,
1300 *,
1301 content_type: str = "application/json",
1302 **kwargs: Any
1303 ) -> LROPoller[_models.MonitoredSubscriptionProperties]:
1304 """Add the subscriptions that should be monitored by the Dynatrace monitor resource.
1305
1306 :param resource_group_name: The name of the resource group. The name is case insensitive.
1307 Required.
1308 :type resource_group_name: str
1309 :param monitor_name: Monitor resource name. Required.
1310 :type monitor_name: str
1311 :param body: Default value is None.
1312 :type body: IO[bytes]
1313 :keyword content_type: Body Parameter content-type. Content type parameter for binary body.
1314 Default value is "application/json".
1315 :paramtype content_type: str
1316 :return: An instance of LROPoller that returns MonitoredSubscriptionProperties. The
1317 MonitoredSubscriptionProperties is compatible with MutableMapping
1318 :rtype:
1319 ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.MonitoredSubscriptionProperties]
1320 :raises ~azure.core.exceptions.HttpResponseError:
1321 """
1322
1323 @distributed_trace
1324 def begin_create_or_update(
1325 self,
1326 resource_group_name: str,
1327 monitor_name: str,
1328 body: Optional[
1329 Union[_models.MonitoredSubscriptionProperties, _types.MonitoredSubscriptionProperties, IO[bytes]]
1330 ] = None,
1331 **kwargs: Any
1332 ) -> LROPoller[_models.MonitoredSubscriptionProperties]:
1333 """Add the subscriptions that should be monitored by the Dynatrace monitor resource.
1334
1335 :param resource_group_name: The name of the resource group. The name is case insensitive.
1336 Required.
1337 :type resource_group_name: str
1338 :param monitor_name: Monitor resource name. Required.
1339 :type monitor_name: str
1340 :param body: Is either a MonitoredSubscriptionProperties type or a IO[bytes] type. Default
1341 value is None.
1342 :type body: ~azure.mgmt.dynatrace.models.MonitoredSubscriptionProperties or
1343 ~azure.mgmt.dynatrace.types.MonitoredSubscriptionProperties or IO[bytes]
1344 :return: An instance of LROPoller that returns MonitoredSubscriptionProperties. The
1345 MonitoredSubscriptionProperties is compatible with MutableMapping
1346 :rtype:
1347 ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.MonitoredSubscriptionProperties]
1348 :raises ~azure.core.exceptions.HttpResponseError:
1349 """
1350 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
1351 _params = kwargs.pop("params", {}) or {}
1352
1353 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
1354 content_type = content_type if body else None
1355 cls: ClsType[_models.MonitoredSubscriptionProperties] = kwargs.pop("cls", None)
1356 polling: Union[bool, PollingMethod] = kwargs.pop("polling", True)
1357 lro_delay = kwargs.pop("polling_interval", self._config.polling_interval)
1358 cont_token: Optional[str] = kwargs.pop("continuation_token", None)
1359 if cont_token is None:
1360 raw_result = self._create_or_update_initial(
1361 resource_group_name=resource_group_name,
1362 monitor_name=monitor_name,
1363 body=body,
1364 content_type=content_type,
1365 cls=lambda x, y, z: x,
1366 headers=_headers,
1367 params=_params,
1368 **kwargs
1369 )
1370 raw_result.http_response.read() # type: ignore
1371 kwargs.pop("error_map", None)
1372
1373 def get_long_running_output(pipeline_response):
1374 response = pipeline_response.http_response
1375 deserialized = _deserialize(_models.MonitoredSubscriptionProperties, response.json())
1376 if cls:
1377 return cls(pipeline_response, deserialized, {}) # type: ignore
1378 return deserialized
1379
1380 path_format_arguments = {
1381 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
1382 }
1383
1384 if polling is True:
1385 polling_method: PollingMethod = cast(
1386 PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs)
1387 )
1388 elif polling is False:
1389 polling_method = cast(PollingMethod, NoPolling())
1390 else:
1391 polling_method = polling
1392 if cont_token:
1393 return LROPoller[_models.MonitoredSubscriptionProperties].from_continuation_token(
1394 polling_method=polling_method,
1395 continuation_token=cont_token,
1396 client=self._client,
1397 deserialization_callback=get_long_running_output,
1398 )
1399 return LROPoller[_models.MonitoredSubscriptionProperties](
1400 self._client, raw_result, get_long_running_output, polling_method # type: ignore
1401 )
1402
1403 def _update_initial(
1404 self,
1405 resource_group_name: str,
1406 monitor_name: str,
1407 body: Optional[
1408 Union[_models.MonitoredSubscriptionProperties, _types.MonitoredSubscriptionProperties, IO[bytes]]
1409 ] = None,
1410 **kwargs: Any
1411 ) -> Iterator[bytes]:
1412 error_map: MutableMapping = {
1413 401: ClientAuthenticationError,
1414 404: ResourceNotFoundError,
1415 409: ResourceExistsError,
1416 304: ResourceNotModifiedError,
1417 }
1418 error_map.update(kwargs.pop("error_map", {}) or {})
1419
1420 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
1421 _params = kwargs.pop("params", {}) or {}
1422
1423 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
1424 content_type = content_type if body else None
1425 cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None)
1426
1427 content_type = content_type or "application/json" if body else None
1428 _content = None
1429 if isinstance(body, (IOBase, bytes)):
1430 _content = body
1431 else:
1432 if body is not None:
1433 _content = json.dumps(body, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore
1434 else:
1435 _content = None
1436
1437 _request = build_monitored_subscriptions_update_request(
1438 resource_group_name=resource_group_name,
1439 monitor_name=monitor_name,
1440 subscription_id=self._config.subscription_id,
1441 content_type=content_type,
1442 api_version=self._config.api_version,
1443 content=_content,
1444 headers=_headers,
1445 params=_params,
1446 )
1447 path_format_arguments = {
1448 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
1449 }
1450 _request.url = self._client.format_url(_request.url, **path_format_arguments)
1451
1452 _decompress = kwargs.pop("decompress", True)
1453 _stream = True
1454 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
1455 _request, stream=_stream, **kwargs
1456 )
1457
1458 response = pipeline_response.http_response
1459
1460 if response.status_code not in [200, 202]:
1461 try:
1462 response.read() # Load the body in memory and close the socket
1463 except (StreamConsumedError, StreamClosedError):
1464 pass
1465 map_error(status_code=response.status_code, response=response, error_map=error_map)
1466 error = _failsafe_deserialize(
1467 _models.ErrorResponse,
1468 response,
1469 )
1470 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
1471
1472 response_headers = {}
1473 if response.status_code == 202:
1474 response_headers["Location"] = self._deserialize("str", response.headers.get("Location"))
1475 response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After"))
1476
1477 deserialized = response.iter_bytes() if _decompress else response.iter_raw()
1478
1479 if cls:
1480 return cls(pipeline_response, deserialized, response_headers) # type: ignore
1481
1482 return deserialized # type: ignore
1483
1484 @overload
1485 def begin_update(
1486 self,
1487 resource_group_name: str,
1488 monitor_name: str,
1489 body: Optional[_models.MonitoredSubscriptionProperties] = None,
1490 *,
1491 content_type: str = "application/json",
1492 **kwargs: Any
1493 ) -> LROPoller[_models.MonitoredSubscriptionProperties]:
1494 """Updates the subscriptions that are being monitored by the Dynatrace monitor resource.
1495
1496 :param resource_group_name: The name of the resource group. The name is case insensitive.
1497 Required.
1498 :type resource_group_name: str
1499 :param monitor_name: Monitor resource name. Required.
1500 :type monitor_name: str
1501 :param body: Default value is None.
1502 :type body: ~azure.mgmt.dynatrace.models.MonitoredSubscriptionProperties
1503 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
1504 Default value is "application/json".
1505 :paramtype content_type: str
1506 :return: An instance of LROPoller that returns MonitoredSubscriptionProperties. The
1507 MonitoredSubscriptionProperties is compatible with MutableMapping
1508 :rtype:
1509 ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.MonitoredSubscriptionProperties]
1510 :raises ~azure.core.exceptions.HttpResponseError:
1511 """
1512
1513 @overload
1514 def begin_update(
1515 self,
1516 resource_group_name: str,
1517 monitor_name: str,
1518 body: Optional[_types.MonitoredSubscriptionProperties] = None,
1519 *,
1520 content_type: str = "application/json",
1521 **kwargs: Any
1522 ) -> LROPoller[_models.MonitoredSubscriptionProperties]:
1523 """Updates the subscriptions that are being monitored by the Dynatrace monitor resource.
1524
1525 :param resource_group_name: The name of the resource group. The name is case insensitive.
1526 Required.
1527 :type resource_group_name: str
1528 :param monitor_name: Monitor resource name. Required.
1529 :type monitor_name: str
1530 :param body: Default value is None.
1531 :type body: ~azure.mgmt.dynatrace.types.MonitoredSubscriptionProperties
1532 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
1533 Default value is "application/json".
1534 :paramtype content_type: str
1535 :return: An instance of LROPoller that returns MonitoredSubscriptionProperties. The
1536 MonitoredSubscriptionProperties is compatible with MutableMapping
1537 :rtype:
1538 ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.MonitoredSubscriptionProperties]
1539 :raises ~azure.core.exceptions.HttpResponseError:
1540 """
1541
1542 @overload
1543 def begin_update(
1544 self,
1545 resource_group_name: str,
1546 monitor_name: str,
1547 body: Optional[IO[bytes]] = None,
1548 *,
1549 content_type: str = "application/json",
1550 **kwargs: Any
1551 ) -> LROPoller[_models.MonitoredSubscriptionProperties]:
1552 """Updates the subscriptions that are being monitored by the Dynatrace monitor resource.
1553
1554 :param resource_group_name: The name of the resource group. The name is case insensitive.
1555 Required.
1556 :type resource_group_name: str
1557 :param monitor_name: Monitor resource name. Required.
1558 :type monitor_name: str
1559 :param body: Default value is None.
1560 :type body: IO[bytes]
1561 :keyword content_type: Body Parameter content-type. Content type parameter for binary body.
1562 Default value is "application/json".
1563 :paramtype content_type: str
1564 :return: An instance of LROPoller that returns MonitoredSubscriptionProperties. The
1565 MonitoredSubscriptionProperties is compatible with MutableMapping
1566 :rtype:
1567 ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.MonitoredSubscriptionProperties]
1568 :raises ~azure.core.exceptions.HttpResponseError:
1569 """
1570
1571 @distributed_trace
1572 def begin_update(
1573 self,
1574 resource_group_name: str,
1575 monitor_name: str,
1576 body: Optional[
1577 Union[_models.MonitoredSubscriptionProperties, _types.MonitoredSubscriptionProperties, IO[bytes]]
1578 ] = None,
1579 **kwargs: Any
1580 ) -> LROPoller[_models.MonitoredSubscriptionProperties]:
1581 """Updates the subscriptions that are being monitored by the Dynatrace monitor resource.
1582
1583 :param resource_group_name: The name of the resource group. The name is case insensitive.
1584 Required.
1585 :type resource_group_name: str
1586 :param monitor_name: Monitor resource name. Required.
1587 :type monitor_name: str
1588 :param body: Is either a MonitoredSubscriptionProperties type or a IO[bytes] type. Default
1589 value is None.
1590 :type body: ~azure.mgmt.dynatrace.models.MonitoredSubscriptionProperties or
1591 ~azure.mgmt.dynatrace.types.MonitoredSubscriptionProperties or IO[bytes]
1592 :return: An instance of LROPoller that returns MonitoredSubscriptionProperties. The
1593 MonitoredSubscriptionProperties is compatible with MutableMapping
1594 :rtype:
1595 ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.MonitoredSubscriptionProperties]
1596 :raises ~azure.core.exceptions.HttpResponseError:
1597 """
1598 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
1599 _params = kwargs.pop("params", {}) or {}
1600
1601 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
1602 content_type = content_type if body else None
1603 cls: ClsType[_models.MonitoredSubscriptionProperties] = kwargs.pop("cls", None)
1604 polling: Union[bool, PollingMethod] = kwargs.pop("polling", True)
1605 lro_delay = kwargs.pop("polling_interval", self._config.polling_interval)
1606 cont_token: Optional[str] = kwargs.pop("continuation_token", None)
1607 if cont_token is None:
1608 raw_result = self._update_initial(
1609 resource_group_name=resource_group_name,
1610 monitor_name=monitor_name,
1611 body=body,
1612 content_type=content_type,
1613 cls=lambda x, y, z: x,
1614 headers=_headers,
1615 params=_params,
1616 **kwargs
1617 )
1618 raw_result.http_response.read() # type: ignore
1619 kwargs.pop("error_map", None)
1620
1621 def get_long_running_output(pipeline_response):
1622 response = pipeline_response.http_response
1623 deserialized = _deserialize(_models.MonitoredSubscriptionProperties, response.json())
1624 if cls:
1625 return cls(pipeline_response, deserialized, {}) # type: ignore
1626 return deserialized
1627
1628 path_format_arguments = {
1629 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
1630 }
1631
1632 if polling is True:
1633 polling_method: PollingMethod = cast(
1634 PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs)
1635 )
1636 elif polling is False:
1637 polling_method = cast(PollingMethod, NoPolling())
1638 else:
1639 polling_method = polling
1640 if cont_token:
1641 return LROPoller[_models.MonitoredSubscriptionProperties].from_continuation_token(
1642 polling_method=polling_method,
1643 continuation_token=cont_token,
1644 client=self._client,
1645 deserialization_callback=get_long_running_output,
1646 )
1647 return LROPoller[_models.MonitoredSubscriptionProperties](
1648 self._client, raw_result, get_long_running_output, polling_method # type: ignore
1649 )
1650
1651 def _delete_initial(self, resource_group_name: str, monitor_name: str, **kwargs: Any) -> Iterator[bytes]:
1652 error_map: MutableMapping = {
1653 401: ClientAuthenticationError,
1654 404: ResourceNotFoundError,
1655 409: ResourceExistsError,
1656 304: ResourceNotModifiedError,
1657 }
1658 error_map.update(kwargs.pop("error_map", {}) or {})
1659
1660 _headers = kwargs.pop("headers", {}) or {}
1661 _params = kwargs.pop("params", {}) or {}
1662
1663 cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None)
1664
1665 _request = build_monitored_subscriptions_delete_request(
1666 resource_group_name=resource_group_name,
1667 monitor_name=monitor_name,
1668 subscription_id=self._config.subscription_id,
1669 api_version=self._config.api_version,
1670 headers=_headers,
1671 params=_params,
1672 )
1673 path_format_arguments = {
1674 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
1675 }
1676 _request.url = self._client.format_url(_request.url, **path_format_arguments)
1677
1678 _decompress = kwargs.pop("decompress", True)
1679 _stream = True
1680 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
1681 _request, stream=_stream, **kwargs
1682 )
1683
1684 response = pipeline_response.http_response
1685
1686 if response.status_code not in [202, 204]:
1687 try:
1688 response.read() # Load the body in memory and close the socket
1689 except (StreamConsumedError, StreamClosedError):
1690 pass
1691 map_error(status_code=response.status_code, response=response, error_map=error_map)
1692 error = _failsafe_deserialize(
1693 _models.ErrorResponse,
1694 response,
1695 )
1696 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
1697
1698 response_headers = {}
1699 if response.status_code == 202:
1700 response_headers["Location"] = self._deserialize("str", response.headers.get("Location"))
1701 response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After"))
1702
1703 deserialized = response.iter_bytes() if _decompress else response.iter_raw()
1704
1705 if cls:
1706 return cls(pipeline_response, deserialized, response_headers) # type: ignore
1707
1708 return deserialized # type: ignore
1709
1710 @distributed_trace
1711 def begin_delete(self, resource_group_name: str, monitor_name: str, **kwargs: Any) -> LROPoller[None]:
1712 """Updates the subscriptions that are being monitored by the Dynatrace monitor resource.
1713
1714 :param resource_group_name: The name of the resource group. The name is case insensitive.
1715 Required.
1716 :type resource_group_name: str
1717 :param monitor_name: Monitor resource name. Required.
1718 :type monitor_name: str
1719 :return: An instance of LROPoller that returns None
1720 :rtype: ~azure.core.polling.LROPoller[None]
1721 :raises ~azure.core.exceptions.HttpResponseError:
1722 """
1723 _headers = kwargs.pop("headers", {}) or {}
1724 _params = kwargs.pop("params", {}) or {}
1725
1726 cls: ClsType[None] = kwargs.pop("cls", None)
1727 polling: Union[bool, PollingMethod] = kwargs.pop("polling", True)
1728 lro_delay = kwargs.pop("polling_interval", self._config.polling_interval)
1729 cont_token: Optional[str] = kwargs.pop("continuation_token", None)
1730 if cont_token is None:
1731 raw_result = self._delete_initial(
1732 resource_group_name=resource_group_name,
1733 monitor_name=monitor_name,
1734 cls=lambda x, y, z: x,
1735 headers=_headers,
1736 params=_params,
1737 **kwargs
1738 )
1739 raw_result.http_response.read() # type: ignore
1740 kwargs.pop("error_map", None)
1741
1742 def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements
1743 if cls:
1744 return cls(pipeline_response, None, {}) # type: ignore
1745
1746 path_format_arguments = {
1747 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
1748 }
1749
1750 if polling is True:
1751 polling_method: PollingMethod = cast(
1752 PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs)
1753 )
1754 elif polling is False:
1755 polling_method = cast(PollingMethod, NoPolling())
1756 else:
1757 polling_method = polling
1758 if cont_token:
1759 return LROPoller[None].from_continuation_token(
1760 polling_method=polling_method,
1761 continuation_token=cont_token,
1762 client=self._client,
1763 deserialization_callback=get_long_running_output,
1764 )
1765 return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore
1766
1767 @distributed_trace
1768 def list(
1769 self, resource_group_name: str, monitor_name: str, **kwargs: Any
1770 ) -> ItemPaged["_models.MonitoredSubscriptionProperties"]:
1771 """List the subscriptions currently being monitored by the Dynatrace monitor resource.
1772
1773 :param resource_group_name: The name of the resource group. The name is case insensitive.
1774 Required.
1775 :type resource_group_name: str
1776 :param monitor_name: Monitor resource name. Required.
1777 :type monitor_name: str
1778 :return: An iterator like instance of MonitoredSubscriptionProperties
1779 :rtype:
1780 ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.MonitoredSubscriptionProperties]
1781 :raises ~azure.core.exceptions.HttpResponseError:
1782 """
1783 _headers = kwargs.pop("headers", {}) or {}
1784 _params = kwargs.pop("params", {}) or {}
1785
1786 cls: ClsType[List[_models.MonitoredSubscriptionProperties]] = kwargs.pop("cls", None)
1787
1788 error_map: MutableMapping = {
1789 401: ClientAuthenticationError,
1790 404: ResourceNotFoundError,
1791 409: ResourceExistsError,
1792 304: ResourceNotModifiedError,
1793 }
1794 error_map.update(kwargs.pop("error_map", {}) or {})
1795
1796 def prepare_request(next_link=None):
1797 if not next_link:
1798
1799 _request = build_monitored_subscriptions_list_request(
1800 resource_group_name=resource_group_name,
1801 monitor_name=monitor_name,
1802 subscription_id=self._config.subscription_id,
1803 api_version=self._config.api_version,
1804 headers=_headers,
1805 params=_params,
1806 )
1807 path_format_arguments = {
1808 "endpoint": self._serialize.url(
1809 "self._config.base_url", self._config.base_url, "str", skip_quote=True
1810 ),
1811 }
1812 _request.url = self._client.format_url(_request.url, **path_format_arguments)
1813
1814 else:
1815 # make call to next link with the client's api-version
1816 _parsed_next_link = urllib.parse.urlparse(next_link)
1817 _next_request_params = case_insensitive_dict(
1818 {
1819 key: [urllib.parse.quote(v) for v in value]
1820 for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items()
1821 }
1822 )
1823 _next_request_params["api-version"] = self._config.api_version
1824 _request = HttpRequest(
1825 "GET",
1826 urllib.parse.urljoin(next_link, _parsed_next_link.path),
1827 headers=_headers,
1828 params=_next_request_params,
1829 )
1830 path_format_arguments = {
1831 "endpoint": self._serialize.url(
1832 "self._config.base_url", self._config.base_url, "str", skip_quote=True
1833 ),
1834 }
1835 _request.url = self._client.format_url(_request.url, **path_format_arguments)
1836
1837 return _request
1838
1839 def extract_data(pipeline_response):
1840 deserialized = pipeline_response.http_response.json()
1841 list_of_elem = _deserialize(
1842 List[_models.MonitoredSubscriptionProperties],
1843 deserialized.get("value", []),
1844 )
1845 if cls:
1846 list_of_elem = cls(list_of_elem) # type: ignore
1847 return deserialized.get("nextLink") or None, iter(list_of_elem)
1848
1849 def get_next(next_link=None):
1850 _request = prepare_request(next_link)
1851
1852 _stream = False
1853 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
1854 _request, stream=_stream, **kwargs
1855 )
1856 response = pipeline_response.http_response
1857
1858 if response.status_code not in [200]:
1859 map_error(status_code=response.status_code, response=response, error_map=error_map)
1860 error = _failsafe_deserialize(
1861 _models.ErrorResponse,
1862 response,
1863 )
1864 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
1865
1866 return pipeline_response
1867
1868 return ItemPaged(get_next, extract_data)
1869
1870
1871class TagRulesOperations:
1872 """
1873 .. warning::
1874 **DO NOT** instantiate this class directly.
1875
1876 Instead, you should access the following operations through
1877 :class:`~azure.mgmt.dynatrace.DynatraceObservabilityMgmtClient`'s
1878 :attr:`tag_rules` attribute.
1879 """
1880
1881 def __init__(self, *args, **kwargs) -> None:
1882 input_args = list(args)
1883 self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client")
1884 self._config: DynatraceObservabilityMgmtClientConfiguration = (
1885 input_args.pop(0) if input_args else kwargs.pop("config")
1886 )
1887 self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer")
1888 self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer")
1889
1890 @distributed_trace
1891 def get(self, resource_group_name: str, monitor_name: str, rule_set_name: str, **kwargs: Any) -> _models.TagRule:
1892 """Get a TagRule.
1893
1894 :param resource_group_name: The name of the resource group. The name is case insensitive.
1895 Required.
1896 :type resource_group_name: str
1897 :param monitor_name: Monitor resource name. Required.
1898 :type monitor_name: str
1899 :param rule_set_name: Monitor resource name. Required.
1900 :type rule_set_name: str
1901 :return: TagRule. The TagRule is compatible with MutableMapping
1902 :rtype: ~azure.mgmt.dynatrace.models.TagRule
1903 :raises ~azure.core.exceptions.HttpResponseError:
1904 """
1905 error_map: MutableMapping = {
1906 401: ClientAuthenticationError,
1907 404: ResourceNotFoundError,
1908 409: ResourceExistsError,
1909 304: ResourceNotModifiedError,
1910 }
1911 error_map.update(kwargs.pop("error_map", {}) or {})
1912
1913 _headers = kwargs.pop("headers", {}) or {}
1914 _params = kwargs.pop("params", {}) or {}
1915
1916 cls: ClsType[_models.TagRule] = kwargs.pop("cls", None)
1917
1918 _request = build_tag_rules_get_request(
1919 resource_group_name=resource_group_name,
1920 monitor_name=monitor_name,
1921 rule_set_name=rule_set_name,
1922 subscription_id=self._config.subscription_id,
1923 api_version=self._config.api_version,
1924 headers=_headers,
1925 params=_params,
1926 )
1927 path_format_arguments = {
1928 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
1929 }
1930 _request.url = self._client.format_url(_request.url, **path_format_arguments)
1931
1932 _decompress = kwargs.pop("decompress", True)
1933 _stream = kwargs.pop("stream", False)
1934 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
1935 _request, stream=_stream, **kwargs
1936 )
1937
1938 response = pipeline_response.http_response
1939
1940 if response.status_code not in [200]:
1941 if _stream:
1942 try:
1943 response.read() # Load the body in memory and close the socket
1944 except (StreamConsumedError, StreamClosedError):
1945 pass
1946 map_error(status_code=response.status_code, response=response, error_map=error_map)
1947 error = _failsafe_deserialize(
1948 _models.ErrorResponse,
1949 response,
1950 )
1951 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
1952
1953 if _stream:
1954 deserialized = response.iter_bytes() if _decompress else response.iter_raw()
1955 else:
1956 deserialized = _deserialize(_models.TagRule, response.json())
1957
1958 if cls:
1959 return cls(pipeline_response, deserialized, {}) # type: ignore
1960
1961 return deserialized # type: ignore
1962
1963 def _create_or_update_initial(
1964 self,
1965 resource_group_name: str,
1966 monitor_name: str,
1967 rule_set_name: str,
1968 resource: Union[_models.TagRule, _types.TagRule, IO[bytes]],
1969 **kwargs: Any
1970 ) -> Iterator[bytes]:
1971 error_map: MutableMapping = {
1972 401: ClientAuthenticationError,
1973 404: ResourceNotFoundError,
1974 409: ResourceExistsError,
1975 304: ResourceNotModifiedError,
1976 }
1977 error_map.update(kwargs.pop("error_map", {}) or {})
1978
1979 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
1980 _params = kwargs.pop("params", {}) or {}
1981
1982 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
1983 cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None)
1984
1985 content_type = content_type or "application/json"
1986 _content = None
1987 if isinstance(resource, (IOBase, bytes)):
1988 _content = resource
1989 else:
1990 _content = json.dumps(resource, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore
1991
1992 _request = build_tag_rules_create_or_update_request(
1993 resource_group_name=resource_group_name,
1994 monitor_name=monitor_name,
1995 rule_set_name=rule_set_name,
1996 subscription_id=self._config.subscription_id,
1997 content_type=content_type,
1998 api_version=self._config.api_version,
1999 content=_content,
2000 headers=_headers,
2001 params=_params,
2002 )
2003 path_format_arguments = {
2004 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
2005 }
2006 _request.url = self._client.format_url(_request.url, **path_format_arguments)
2007
2008 _decompress = kwargs.pop("decompress", True)
2009 _stream = True
2010 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
2011 _request, stream=_stream, **kwargs
2012 )
2013
2014 response = pipeline_response.http_response
2015
2016 if response.status_code not in [200, 201]:
2017 try:
2018 response.read() # Load the body in memory and close the socket
2019 except (StreamConsumedError, StreamClosedError):
2020 pass
2021 map_error(status_code=response.status_code, response=response, error_map=error_map)
2022 error = _failsafe_deserialize(
2023 _models.ErrorResponse,
2024 response,
2025 )
2026 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
2027
2028 response_headers = {}
2029 if response.status_code == 201:
2030 response_headers["Azure-AsyncOperation"] = self._deserialize(
2031 "str", response.headers.get("Azure-AsyncOperation")
2032 )
2033 response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After"))
2034
2035 deserialized = response.iter_bytes() if _decompress else response.iter_raw()
2036
2037 if cls:
2038 return cls(pipeline_response, deserialized, response_headers) # type: ignore
2039
2040 return deserialized # type: ignore
2041
2042 @overload
2043 def begin_create_or_update(
2044 self,
2045 resource_group_name: str,
2046 monitor_name: str,
2047 rule_set_name: str,
2048 resource: _models.TagRule,
2049 *,
2050 content_type: str = "application/json",
2051 **kwargs: Any
2052 ) -> LROPoller[_models.TagRule]:
2053 """Create a TagRule.
2054
2055 :param resource_group_name: The name of the resource group. The name is case insensitive.
2056 Required.
2057 :type resource_group_name: str
2058 :param monitor_name: Monitor resource name. Required.
2059 :type monitor_name: str
2060 :param rule_set_name: Monitor resource name. Required.
2061 :type rule_set_name: str
2062 :param resource: Resource create parameters. Required.
2063 :type resource: ~azure.mgmt.dynatrace.models.TagRule
2064 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
2065 Default value is "application/json".
2066 :paramtype content_type: str
2067 :return: An instance of LROPoller that returns TagRule. The TagRule is compatible with
2068 MutableMapping
2069 :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.TagRule]
2070 :raises ~azure.core.exceptions.HttpResponseError:
2071 """
2072
2073 @overload
2074 def begin_create_or_update(
2075 self,
2076 resource_group_name: str,
2077 monitor_name: str,
2078 rule_set_name: str,
2079 resource: _types.TagRule,
2080 *,
2081 content_type: str = "application/json",
2082 **kwargs: Any
2083 ) -> LROPoller[_models.TagRule]:
2084 """Create a TagRule.
2085
2086 :param resource_group_name: The name of the resource group. The name is case insensitive.
2087 Required.
2088 :type resource_group_name: str
2089 :param monitor_name: Monitor resource name. Required.
2090 :type monitor_name: str
2091 :param rule_set_name: Monitor resource name. Required.
2092 :type rule_set_name: str
2093 :param resource: Resource create parameters. Required.
2094 :type resource: ~azure.mgmt.dynatrace.types.TagRule
2095 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
2096 Default value is "application/json".
2097 :paramtype content_type: str
2098 :return: An instance of LROPoller that returns TagRule. The TagRule is compatible with
2099 MutableMapping
2100 :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.TagRule]
2101 :raises ~azure.core.exceptions.HttpResponseError:
2102 """
2103
2104 @overload
2105 def begin_create_or_update(
2106 self,
2107 resource_group_name: str,
2108 monitor_name: str,
2109 rule_set_name: str,
2110 resource: IO[bytes],
2111 *,
2112 content_type: str = "application/json",
2113 **kwargs: Any
2114 ) -> LROPoller[_models.TagRule]:
2115 """Create a TagRule.
2116
2117 :param resource_group_name: The name of the resource group. The name is case insensitive.
2118 Required.
2119 :type resource_group_name: str
2120 :param monitor_name: Monitor resource name. Required.
2121 :type monitor_name: str
2122 :param rule_set_name: Monitor resource name. Required.
2123 :type rule_set_name: str
2124 :param resource: Resource create parameters. Required.
2125 :type resource: IO[bytes]
2126 :keyword content_type: Body Parameter content-type. Content type parameter for binary body.
2127 Default value is "application/json".
2128 :paramtype content_type: str
2129 :return: An instance of LROPoller that returns TagRule. The TagRule is compatible with
2130 MutableMapping
2131 :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.TagRule]
2132 :raises ~azure.core.exceptions.HttpResponseError:
2133 """
2134
2135 @distributed_trace
2136 def begin_create_or_update(
2137 self,
2138 resource_group_name: str,
2139 monitor_name: str,
2140 rule_set_name: str,
2141 resource: Union[_models.TagRule, _types.TagRule, IO[bytes]],
2142 **kwargs: Any
2143 ) -> LROPoller[_models.TagRule]:
2144 """Create a TagRule.
2145
2146 :param resource_group_name: The name of the resource group. The name is case insensitive.
2147 Required.
2148 :type resource_group_name: str
2149 :param monitor_name: Monitor resource name. Required.
2150 :type monitor_name: str
2151 :param rule_set_name: Monitor resource name. Required.
2152 :type rule_set_name: str
2153 :param resource: Resource create parameters. Is either a TagRule type or a IO[bytes] type.
2154 Required.
2155 :type resource: ~azure.mgmt.dynatrace.models.TagRule or ~azure.mgmt.dynatrace.types.TagRule or
2156 IO[bytes]
2157 :return: An instance of LROPoller that returns TagRule. The TagRule is compatible with
2158 MutableMapping
2159 :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.TagRule]
2160 :raises ~azure.core.exceptions.HttpResponseError:
2161 """
2162 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
2163 _params = kwargs.pop("params", {}) or {}
2164
2165 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
2166 cls: ClsType[_models.TagRule] = kwargs.pop("cls", None)
2167 polling: Union[bool, PollingMethod] = kwargs.pop("polling", True)
2168 lro_delay = kwargs.pop("polling_interval", self._config.polling_interval)
2169 cont_token: Optional[str] = kwargs.pop("continuation_token", None)
2170 if cont_token is None:
2171 raw_result = self._create_or_update_initial(
2172 resource_group_name=resource_group_name,
2173 monitor_name=monitor_name,
2174 rule_set_name=rule_set_name,
2175 resource=resource,
2176 content_type=content_type,
2177 cls=lambda x, y, z: x,
2178 headers=_headers,
2179 params=_params,
2180 **kwargs
2181 )
2182 raw_result.http_response.read() # type: ignore
2183 kwargs.pop("error_map", None)
2184
2185 def get_long_running_output(pipeline_response):
2186 response = pipeline_response.http_response
2187 deserialized = _deserialize(_models.TagRule, response.json())
2188 if cls:
2189 return cls(pipeline_response, deserialized, {}) # type: ignore
2190 return deserialized
2191
2192 path_format_arguments = {
2193 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
2194 }
2195
2196 if polling is True:
2197 polling_method: PollingMethod = cast(
2198 PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs)
2199 )
2200 elif polling is False:
2201 polling_method = cast(PollingMethod, NoPolling())
2202 else:
2203 polling_method = polling
2204 if cont_token:
2205 return LROPoller[_models.TagRule].from_continuation_token(
2206 polling_method=polling_method,
2207 continuation_token=cont_token,
2208 client=self._client,
2209 deserialization_callback=get_long_running_output,
2210 )
2211 return LROPoller[_models.TagRule](
2212 self._client, raw_result, get_long_running_output, polling_method # type: ignore
2213 )
2214
2215 def _delete_initial(
2216 self, resource_group_name: str, monitor_name: str, rule_set_name: str, **kwargs: Any
2217 ) -> Iterator[bytes]:
2218 error_map: MutableMapping = {
2219 401: ClientAuthenticationError,
2220 404: ResourceNotFoundError,
2221 409: ResourceExistsError,
2222 304: ResourceNotModifiedError,
2223 }
2224 error_map.update(kwargs.pop("error_map", {}) or {})
2225
2226 _headers = kwargs.pop("headers", {}) or {}
2227 _params = kwargs.pop("params", {}) or {}
2228
2229 cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None)
2230
2231 _request = build_tag_rules_delete_request(
2232 resource_group_name=resource_group_name,
2233 monitor_name=monitor_name,
2234 rule_set_name=rule_set_name,
2235 subscription_id=self._config.subscription_id,
2236 api_version=self._config.api_version,
2237 headers=_headers,
2238 params=_params,
2239 )
2240 path_format_arguments = {
2241 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
2242 }
2243 _request.url = self._client.format_url(_request.url, **path_format_arguments)
2244
2245 _decompress = kwargs.pop("decompress", True)
2246 _stream = True
2247 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
2248 _request, stream=_stream, **kwargs
2249 )
2250
2251 response = pipeline_response.http_response
2252
2253 if response.status_code not in [202, 204]:
2254 try:
2255 response.read() # Load the body in memory and close the socket
2256 except (StreamConsumedError, StreamClosedError):
2257 pass
2258 map_error(status_code=response.status_code, response=response, error_map=error_map)
2259 error = _failsafe_deserialize(
2260 _models.ErrorResponse,
2261 response,
2262 )
2263 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
2264
2265 response_headers = {}
2266 if response.status_code == 202:
2267 response_headers["Azure-AsyncOperation"] = self._deserialize(
2268 "str", response.headers.get("Azure-AsyncOperation")
2269 )
2270 response_headers["Location"] = self._deserialize("str", response.headers.get("Location"))
2271 response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After"))
2272
2273 deserialized = response.iter_bytes() if _decompress else response.iter_raw()
2274
2275 if cls:
2276 return cls(pipeline_response, deserialized, response_headers) # type: ignore
2277
2278 return deserialized # type: ignore
2279
2280 @distributed_trace
2281 def begin_delete(
2282 self, resource_group_name: str, monitor_name: str, rule_set_name: str, **kwargs: Any
2283 ) -> LROPoller[None]:
2284 """Delete a TagRule.
2285
2286 :param resource_group_name: The name of the resource group. The name is case insensitive.
2287 Required.
2288 :type resource_group_name: str
2289 :param monitor_name: Monitor resource name. Required.
2290 :type monitor_name: str
2291 :param rule_set_name: Monitor resource name. Required.
2292 :type rule_set_name: str
2293 :return: An instance of LROPoller that returns None
2294 :rtype: ~azure.core.polling.LROPoller[None]
2295 :raises ~azure.core.exceptions.HttpResponseError:
2296 """
2297 _headers = kwargs.pop("headers", {}) or {}
2298 _params = kwargs.pop("params", {}) or {}
2299
2300 cls: ClsType[None] = kwargs.pop("cls", None)
2301 polling: Union[bool, PollingMethod] = kwargs.pop("polling", True)
2302 lro_delay = kwargs.pop("polling_interval", self._config.polling_interval)
2303 cont_token: Optional[str] = kwargs.pop("continuation_token", None)
2304 if cont_token is None:
2305 raw_result = self._delete_initial(
2306 resource_group_name=resource_group_name,
2307 monitor_name=monitor_name,
2308 rule_set_name=rule_set_name,
2309 cls=lambda x, y, z: x,
2310 headers=_headers,
2311 params=_params,
2312 **kwargs
2313 )
2314 raw_result.http_response.read() # type: ignore
2315 kwargs.pop("error_map", None)
2316
2317 def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements
2318 if cls:
2319 return cls(pipeline_response, None, {}) # type: ignore
2320
2321 path_format_arguments = {
2322 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
2323 }
2324
2325 if polling is True:
2326 polling_method: PollingMethod = cast(
2327 PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs)
2328 )
2329 elif polling is False:
2330 polling_method = cast(PollingMethod, NoPolling())
2331 else:
2332 polling_method = polling
2333 if cont_token:
2334 return LROPoller[None].from_continuation_token(
2335 polling_method=polling_method,
2336 continuation_token=cont_token,
2337 client=self._client,
2338 deserialization_callback=get_long_running_output,
2339 )
2340 return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore
2341
2342 @distributed_trace
2343 def list(self, resource_group_name: str, monitor_name: str, **kwargs: Any) -> ItemPaged["_models.TagRule"]:
2344 """List all TagRule by monitorName.
2345
2346 :param resource_group_name: The name of the resource group. The name is case insensitive.
2347 Required.
2348 :type resource_group_name: str
2349 :param monitor_name: Monitor resource name. Required.
2350 :type monitor_name: str
2351 :return: An iterator like instance of TagRule
2352 :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.TagRule]
2353 :raises ~azure.core.exceptions.HttpResponseError:
2354 """
2355 _headers = kwargs.pop("headers", {}) or {}
2356 _params = kwargs.pop("params", {}) or {}
2357
2358 cls: ClsType[List[_models.TagRule]] = kwargs.pop("cls", None)
2359
2360 error_map: MutableMapping = {
2361 401: ClientAuthenticationError,
2362 404: ResourceNotFoundError,
2363 409: ResourceExistsError,
2364 304: ResourceNotModifiedError,
2365 }
2366 error_map.update(kwargs.pop("error_map", {}) or {})
2367
2368 def prepare_request(next_link=None):
2369 if not next_link:
2370
2371 _request = build_tag_rules_list_request(
2372 resource_group_name=resource_group_name,
2373 monitor_name=monitor_name,
2374 subscription_id=self._config.subscription_id,
2375 api_version=self._config.api_version,
2376 headers=_headers,
2377 params=_params,
2378 )
2379 path_format_arguments = {
2380 "endpoint": self._serialize.url(
2381 "self._config.base_url", self._config.base_url, "str", skip_quote=True
2382 ),
2383 }
2384 _request.url = self._client.format_url(_request.url, **path_format_arguments)
2385
2386 else:
2387 # make call to next link with the client's api-version
2388 _parsed_next_link = urllib.parse.urlparse(next_link)
2389 _next_request_params = case_insensitive_dict(
2390 {
2391 key: [urllib.parse.quote(v) for v in value]
2392 for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items()
2393 }
2394 )
2395 _next_request_params["api-version"] = self._config.api_version
2396 _request = HttpRequest(
2397 "GET",
2398 urllib.parse.urljoin(next_link, _parsed_next_link.path),
2399 headers=_headers,
2400 params=_next_request_params,
2401 )
2402 path_format_arguments = {
2403 "endpoint": self._serialize.url(
2404 "self._config.base_url", self._config.base_url, "str", skip_quote=True
2405 ),
2406 }
2407 _request.url = self._client.format_url(_request.url, **path_format_arguments)
2408
2409 return _request
2410
2411 def extract_data(pipeline_response):
2412 deserialized = pipeline_response.http_response.json()
2413 list_of_elem = _deserialize(
2414 List[_models.TagRule],
2415 deserialized.get("value", []),
2416 )
2417 if cls:
2418 list_of_elem = cls(list_of_elem) # type: ignore
2419 return deserialized.get("nextLink") or None, iter(list_of_elem)
2420
2421 def get_next(next_link=None):
2422 _request = prepare_request(next_link)
2423
2424 _stream = False
2425 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
2426 _request, stream=_stream, **kwargs
2427 )
2428 response = pipeline_response.http_response
2429
2430 if response.status_code not in [200]:
2431 map_error(status_code=response.status_code, response=response, error_map=error_map)
2432 error = _failsafe_deserialize(
2433 _models.ErrorResponse,
2434 response,
2435 )
2436 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
2437
2438 return pipeline_response
2439
2440 return ItemPaged(get_next, extract_data)
2441
2442
2443class MonitorsOperations:
2444 """
2445 .. warning::
2446 **DO NOT** instantiate this class directly.
2447
2448 Instead, you should access the following operations through
2449 :class:`~azure.mgmt.dynatrace.DynatraceObservabilityMgmtClient`'s
2450 :attr:`monitors` attribute.
2451 """
2452
2453 def __init__(self, *args, **kwargs) -> None:
2454 input_args = list(args)
2455 self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client")
2456 self._config: DynatraceObservabilityMgmtClientConfiguration = (
2457 input_args.pop(0) if input_args else kwargs.pop("config")
2458 )
2459 self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer")
2460 self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer")
2461
2462 @distributed_trace
2463 def get(self, resource_group_name: str, monitor_name: str, **kwargs: Any) -> _models.MonitorResource:
2464 """Get a MonitorResource.
2465
2466 :param resource_group_name: The name of the resource group. The name is case insensitive.
2467 Required.
2468 :type resource_group_name: str
2469 :param monitor_name: Monitor resource name. Required.
2470 :type monitor_name: str
2471 :return: MonitorResource. The MonitorResource is compatible with MutableMapping
2472 :rtype: ~azure.mgmt.dynatrace.models.MonitorResource
2473 :raises ~azure.core.exceptions.HttpResponseError:
2474 """
2475 error_map: MutableMapping = {
2476 401: ClientAuthenticationError,
2477 404: ResourceNotFoundError,
2478 409: ResourceExistsError,
2479 304: ResourceNotModifiedError,
2480 }
2481 error_map.update(kwargs.pop("error_map", {}) or {})
2482
2483 _headers = kwargs.pop("headers", {}) or {}
2484 _params = kwargs.pop("params", {}) or {}
2485
2486 cls: ClsType[_models.MonitorResource] = kwargs.pop("cls", None)
2487
2488 _request = build_monitors_get_request(
2489 resource_group_name=resource_group_name,
2490 monitor_name=monitor_name,
2491 subscription_id=self._config.subscription_id,
2492 api_version=self._config.api_version,
2493 headers=_headers,
2494 params=_params,
2495 )
2496 path_format_arguments = {
2497 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
2498 }
2499 _request.url = self._client.format_url(_request.url, **path_format_arguments)
2500
2501 _decompress = kwargs.pop("decompress", True)
2502 _stream = kwargs.pop("stream", False)
2503 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
2504 _request, stream=_stream, **kwargs
2505 )
2506
2507 response = pipeline_response.http_response
2508
2509 if response.status_code not in [200]:
2510 if _stream:
2511 try:
2512 response.read() # Load the body in memory and close the socket
2513 except (StreamConsumedError, StreamClosedError):
2514 pass
2515 map_error(status_code=response.status_code, response=response, error_map=error_map)
2516 error = _failsafe_deserialize(
2517 _models.ErrorResponse,
2518 response,
2519 )
2520 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
2521
2522 if _stream:
2523 deserialized = response.iter_bytes() if _decompress else response.iter_raw()
2524 else:
2525 deserialized = _deserialize(_models.MonitorResource, response.json())
2526
2527 if cls:
2528 return cls(pipeline_response, deserialized, {}) # type: ignore
2529
2530 return deserialized # type: ignore
2531
2532 def _create_or_update_initial(
2533 self,
2534 resource_group_name: str,
2535 monitor_name: str,
2536 resource: Union[_models.MonitorResource, _types.MonitorResource, IO[bytes]],
2537 **kwargs: Any
2538 ) -> Iterator[bytes]:
2539 error_map: MutableMapping = {
2540 401: ClientAuthenticationError,
2541 404: ResourceNotFoundError,
2542 409: ResourceExistsError,
2543 304: ResourceNotModifiedError,
2544 }
2545 error_map.update(kwargs.pop("error_map", {}) or {})
2546
2547 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
2548 _params = kwargs.pop("params", {}) or {}
2549
2550 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
2551 cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None)
2552
2553 content_type = content_type or "application/json"
2554 _content = None
2555 if isinstance(resource, (IOBase, bytes)):
2556 _content = resource
2557 else:
2558 _content = json.dumps(resource, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore
2559
2560 _request = build_monitors_create_or_update_request(
2561 resource_group_name=resource_group_name,
2562 monitor_name=monitor_name,
2563 subscription_id=self._config.subscription_id,
2564 content_type=content_type,
2565 api_version=self._config.api_version,
2566 content=_content,
2567 headers=_headers,
2568 params=_params,
2569 )
2570 path_format_arguments = {
2571 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
2572 }
2573 _request.url = self._client.format_url(_request.url, **path_format_arguments)
2574
2575 _decompress = kwargs.pop("decompress", True)
2576 _stream = True
2577 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
2578 _request, stream=_stream, **kwargs
2579 )
2580
2581 response = pipeline_response.http_response
2582
2583 if response.status_code not in [200, 201]:
2584 try:
2585 response.read() # Load the body in memory and close the socket
2586 except (StreamConsumedError, StreamClosedError):
2587 pass
2588 map_error(status_code=response.status_code, response=response, error_map=error_map)
2589 error = _failsafe_deserialize(
2590 _models.ErrorResponse,
2591 response,
2592 )
2593 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
2594
2595 response_headers = {}
2596 if response.status_code == 201:
2597 response_headers["Azure-AsyncOperation"] = self._deserialize(
2598 "str", response.headers.get("Azure-AsyncOperation")
2599 )
2600 response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After"))
2601
2602 deserialized = response.iter_bytes() if _decompress else response.iter_raw()
2603
2604 if cls:
2605 return cls(pipeline_response, deserialized, response_headers) # type: ignore
2606
2607 return deserialized # type: ignore
2608
2609 @overload
2610 def begin_create_or_update(
2611 self,
2612 resource_group_name: str,
2613 monitor_name: str,
2614 resource: _models.MonitorResource,
2615 *,
2616 content_type: str = "application/json",
2617 **kwargs: Any
2618 ) -> LROPoller[_models.MonitorResource]:
2619 """Create a MonitorResource.
2620
2621 :param resource_group_name: The name of the resource group. The name is case insensitive.
2622 Required.
2623 :type resource_group_name: str
2624 :param monitor_name: Monitor resource name. Required.
2625 :type monitor_name: str
2626 :param resource: Resource create parameters. Required.
2627 :type resource: ~azure.mgmt.dynatrace.models.MonitorResource
2628 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
2629 Default value is "application/json".
2630 :paramtype content_type: str
2631 :return: An instance of LROPoller that returns MonitorResource. The MonitorResource is
2632 compatible with MutableMapping
2633 :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.MonitorResource]
2634 :raises ~azure.core.exceptions.HttpResponseError:
2635 """
2636
2637 @overload
2638 def begin_create_or_update(
2639 self,
2640 resource_group_name: str,
2641 monitor_name: str,
2642 resource: _types.MonitorResource,
2643 *,
2644 content_type: str = "application/json",
2645 **kwargs: Any
2646 ) -> LROPoller[_models.MonitorResource]:
2647 """Create a MonitorResource.
2648
2649 :param resource_group_name: The name of the resource group. The name is case insensitive.
2650 Required.
2651 :type resource_group_name: str
2652 :param monitor_name: Monitor resource name. Required.
2653 :type monitor_name: str
2654 :param resource: Resource create parameters. Required.
2655 :type resource: ~azure.mgmt.dynatrace.types.MonitorResource
2656 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
2657 Default value is "application/json".
2658 :paramtype content_type: str
2659 :return: An instance of LROPoller that returns MonitorResource. The MonitorResource is
2660 compatible with MutableMapping
2661 :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.MonitorResource]
2662 :raises ~azure.core.exceptions.HttpResponseError:
2663 """
2664
2665 @overload
2666 def begin_create_or_update(
2667 self,
2668 resource_group_name: str,
2669 monitor_name: str,
2670 resource: IO[bytes],
2671 *,
2672 content_type: str = "application/json",
2673 **kwargs: Any
2674 ) -> LROPoller[_models.MonitorResource]:
2675 """Create a MonitorResource.
2676
2677 :param resource_group_name: The name of the resource group. The name is case insensitive.
2678 Required.
2679 :type resource_group_name: str
2680 :param monitor_name: Monitor resource name. Required.
2681 :type monitor_name: str
2682 :param resource: Resource create parameters. Required.
2683 :type resource: IO[bytes]
2684 :keyword content_type: Body Parameter content-type. Content type parameter for binary body.
2685 Default value is "application/json".
2686 :paramtype content_type: str
2687 :return: An instance of LROPoller that returns MonitorResource. The MonitorResource is
2688 compatible with MutableMapping
2689 :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.MonitorResource]
2690 :raises ~azure.core.exceptions.HttpResponseError:
2691 """
2692
2693 @distributed_trace
2694 def begin_create_or_update(
2695 self,
2696 resource_group_name: str,
2697 monitor_name: str,
2698 resource: Union[_models.MonitorResource, _types.MonitorResource, IO[bytes]],
2699 **kwargs: Any
2700 ) -> LROPoller[_models.MonitorResource]:
2701 """Create a MonitorResource.
2702
2703 :param resource_group_name: The name of the resource group. The name is case insensitive.
2704 Required.
2705 :type resource_group_name: str
2706 :param monitor_name: Monitor resource name. Required.
2707 :type monitor_name: str
2708 :param resource: Resource create parameters. Is either a MonitorResource type or a IO[bytes]
2709 type. Required.
2710 :type resource: ~azure.mgmt.dynatrace.models.MonitorResource or
2711 ~azure.mgmt.dynatrace.types.MonitorResource or IO[bytes]
2712 :return: An instance of LROPoller that returns MonitorResource. The MonitorResource is
2713 compatible with MutableMapping
2714 :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.MonitorResource]
2715 :raises ~azure.core.exceptions.HttpResponseError:
2716 """
2717 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
2718 _params = kwargs.pop("params", {}) or {}
2719
2720 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
2721 cls: ClsType[_models.MonitorResource] = kwargs.pop("cls", None)
2722 polling: Union[bool, PollingMethod] = kwargs.pop("polling", True)
2723 lro_delay = kwargs.pop("polling_interval", self._config.polling_interval)
2724 cont_token: Optional[str] = kwargs.pop("continuation_token", None)
2725 if cont_token is None:
2726 raw_result = self._create_or_update_initial(
2727 resource_group_name=resource_group_name,
2728 monitor_name=monitor_name,
2729 resource=resource,
2730 content_type=content_type,
2731 cls=lambda x, y, z: x,
2732 headers=_headers,
2733 params=_params,
2734 **kwargs
2735 )
2736 raw_result.http_response.read() # type: ignore
2737 kwargs.pop("error_map", None)
2738
2739 def get_long_running_output(pipeline_response):
2740 response = pipeline_response.http_response
2741 deserialized = _deserialize(_models.MonitorResource, response.json())
2742 if cls:
2743 return cls(pipeline_response, deserialized, {}) # type: ignore
2744 return deserialized
2745
2746 path_format_arguments = {
2747 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
2748 }
2749
2750 if polling is True:
2751 polling_method: PollingMethod = cast(
2752 PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs)
2753 )
2754 elif polling is False:
2755 polling_method = cast(PollingMethod, NoPolling())
2756 else:
2757 polling_method = polling
2758 if cont_token:
2759 return LROPoller[_models.MonitorResource].from_continuation_token(
2760 polling_method=polling_method,
2761 continuation_token=cont_token,
2762 client=self._client,
2763 deserialization_callback=get_long_running_output,
2764 )
2765 return LROPoller[_models.MonitorResource](
2766 self._client, raw_result, get_long_running_output, polling_method # type: ignore
2767 )
2768
2769 @overload
2770 def update(
2771 self,
2772 resource_group_name: str,
2773 monitor_name: str,
2774 resource: _models.MonitorResourceUpdate,
2775 *,
2776 content_type: str = "application/json",
2777 **kwargs: Any
2778 ) -> _models.MonitorResource:
2779 """Update a MonitorResource.
2780
2781 :param resource_group_name: The name of the resource group. The name is case insensitive.
2782 Required.
2783 :type resource_group_name: str
2784 :param monitor_name: Monitor resource name. Required.
2785 :type monitor_name: str
2786 :param resource: The resource properties to be updated. Required.
2787 :type resource: ~azure.mgmt.dynatrace.models.MonitorResourceUpdate
2788 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
2789 Default value is "application/json".
2790 :paramtype content_type: str
2791 :return: MonitorResource. The MonitorResource is compatible with MutableMapping
2792 :rtype: ~azure.mgmt.dynatrace.models.MonitorResource
2793 :raises ~azure.core.exceptions.HttpResponseError:
2794 """
2795
2796 @overload
2797 def update(
2798 self,
2799 resource_group_name: str,
2800 monitor_name: str,
2801 resource: _types.MonitorResourceUpdate,
2802 *,
2803 content_type: str = "application/json",
2804 **kwargs: Any
2805 ) -> _models.MonitorResource:
2806 """Update a MonitorResource.
2807
2808 :param resource_group_name: The name of the resource group. The name is case insensitive.
2809 Required.
2810 :type resource_group_name: str
2811 :param monitor_name: Monitor resource name. Required.
2812 :type monitor_name: str
2813 :param resource: The resource properties to be updated. Required.
2814 :type resource: ~azure.mgmt.dynatrace.types.MonitorResourceUpdate
2815 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
2816 Default value is "application/json".
2817 :paramtype content_type: str
2818 :return: MonitorResource. The MonitorResource is compatible with MutableMapping
2819 :rtype: ~azure.mgmt.dynatrace.models.MonitorResource
2820 :raises ~azure.core.exceptions.HttpResponseError:
2821 """
2822
2823 @overload
2824 def update(
2825 self,
2826 resource_group_name: str,
2827 monitor_name: str,
2828 resource: IO[bytes],
2829 *,
2830 content_type: str = "application/json",
2831 **kwargs: Any
2832 ) -> _models.MonitorResource:
2833 """Update a MonitorResource.
2834
2835 :param resource_group_name: The name of the resource group. The name is case insensitive.
2836 Required.
2837 :type resource_group_name: str
2838 :param monitor_name: Monitor resource name. Required.
2839 :type monitor_name: str
2840 :param resource: The resource properties to be updated. Required.
2841 :type resource: IO[bytes]
2842 :keyword content_type: Body Parameter content-type. Content type parameter for binary body.
2843 Default value is "application/json".
2844 :paramtype content_type: str
2845 :return: MonitorResource. The MonitorResource is compatible with MutableMapping
2846 :rtype: ~azure.mgmt.dynatrace.models.MonitorResource
2847 :raises ~azure.core.exceptions.HttpResponseError:
2848 """
2849
2850 @distributed_trace
2851 def update(
2852 self,
2853 resource_group_name: str,
2854 monitor_name: str,
2855 resource: Union[_models.MonitorResourceUpdate, _types.MonitorResourceUpdate, IO[bytes]],
2856 **kwargs: Any
2857 ) -> _models.MonitorResource:
2858 """Update a MonitorResource.
2859
2860 :param resource_group_name: The name of the resource group. The name is case insensitive.
2861 Required.
2862 :type resource_group_name: str
2863 :param monitor_name: Monitor resource name. Required.
2864 :type monitor_name: str
2865 :param resource: The resource properties to be updated. Is either a MonitorResourceUpdate type
2866 or a IO[bytes] type. Required.
2867 :type resource: ~azure.mgmt.dynatrace.models.MonitorResourceUpdate or
2868 ~azure.mgmt.dynatrace.types.MonitorResourceUpdate or IO[bytes]
2869 :return: MonitorResource. The MonitorResource is compatible with MutableMapping
2870 :rtype: ~azure.mgmt.dynatrace.models.MonitorResource
2871 :raises ~azure.core.exceptions.HttpResponseError:
2872 """
2873 error_map: MutableMapping = {
2874 401: ClientAuthenticationError,
2875 404: ResourceNotFoundError,
2876 409: ResourceExistsError,
2877 304: ResourceNotModifiedError,
2878 }
2879 error_map.update(kwargs.pop("error_map", {}) or {})
2880
2881 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
2882 _params = kwargs.pop("params", {}) or {}
2883
2884 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
2885 cls: ClsType[_models.MonitorResource] = kwargs.pop("cls", None)
2886
2887 content_type = content_type or "application/json"
2888 _content = None
2889 if isinstance(resource, (IOBase, bytes)):
2890 _content = resource
2891 else:
2892 _content = json.dumps(resource, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore
2893
2894 _request = build_monitors_update_request(
2895 resource_group_name=resource_group_name,
2896 monitor_name=monitor_name,
2897 subscription_id=self._config.subscription_id,
2898 content_type=content_type,
2899 api_version=self._config.api_version,
2900 content=_content,
2901 headers=_headers,
2902 params=_params,
2903 )
2904 path_format_arguments = {
2905 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
2906 }
2907 _request.url = self._client.format_url(_request.url, **path_format_arguments)
2908
2909 _decompress = kwargs.pop("decompress", True)
2910 _stream = kwargs.pop("stream", False)
2911 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
2912 _request, stream=_stream, **kwargs
2913 )
2914
2915 response = pipeline_response.http_response
2916
2917 if response.status_code not in [200]:
2918 if _stream:
2919 try:
2920 response.read() # Load the body in memory and close the socket
2921 except (StreamConsumedError, StreamClosedError):
2922 pass
2923 map_error(status_code=response.status_code, response=response, error_map=error_map)
2924 error = _failsafe_deserialize(
2925 _models.ErrorResponse,
2926 response,
2927 )
2928 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
2929
2930 if _stream:
2931 deserialized = response.iter_bytes() if _decompress else response.iter_raw()
2932 else:
2933 deserialized = _deserialize(_models.MonitorResource, response.json())
2934
2935 if cls:
2936 return cls(pipeline_response, deserialized, {}) # type: ignore
2937
2938 return deserialized # type: ignore
2939
2940 def _delete_initial(self, resource_group_name: str, monitor_name: str, **kwargs: Any) -> Iterator[bytes]:
2941 error_map: MutableMapping = {
2942 401: ClientAuthenticationError,
2943 404: ResourceNotFoundError,
2944 409: ResourceExistsError,
2945 304: ResourceNotModifiedError,
2946 }
2947 error_map.update(kwargs.pop("error_map", {}) or {})
2948
2949 _headers = kwargs.pop("headers", {}) or {}
2950 _params = kwargs.pop("params", {}) or {}
2951
2952 cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None)
2953
2954 _request = build_monitors_delete_request(
2955 resource_group_name=resource_group_name,
2956 monitor_name=monitor_name,
2957 subscription_id=self._config.subscription_id,
2958 api_version=self._config.api_version,
2959 headers=_headers,
2960 params=_params,
2961 )
2962 path_format_arguments = {
2963 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
2964 }
2965 _request.url = self._client.format_url(_request.url, **path_format_arguments)
2966
2967 _decompress = kwargs.pop("decompress", True)
2968 _stream = True
2969 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
2970 _request, stream=_stream, **kwargs
2971 )
2972
2973 response = pipeline_response.http_response
2974
2975 if response.status_code not in [202, 204]:
2976 try:
2977 response.read() # Load the body in memory and close the socket
2978 except (StreamConsumedError, StreamClosedError):
2979 pass
2980 map_error(status_code=response.status_code, response=response, error_map=error_map)
2981 error = _failsafe_deserialize(
2982 _models.ErrorResponse,
2983 response,
2984 )
2985 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
2986
2987 response_headers = {}
2988 if response.status_code == 202:
2989 response_headers["Azure-AsyncOperation"] = self._deserialize(
2990 "str", response.headers.get("Azure-AsyncOperation")
2991 )
2992 response_headers["Location"] = self._deserialize("str", response.headers.get("Location"))
2993 response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After"))
2994
2995 deserialized = response.iter_bytes() if _decompress else response.iter_raw()
2996
2997 if cls:
2998 return cls(pipeline_response, deserialized, response_headers) # type: ignore
2999
3000 return deserialized # type: ignore
3001
3002 @distributed_trace
3003 def begin_delete(self, resource_group_name: str, monitor_name: str, **kwargs: Any) -> LROPoller[None]:
3004 """Delete a MonitorResource.
3005
3006 :param resource_group_name: The name of the resource group. The name is case insensitive.
3007 Required.
3008 :type resource_group_name: str
3009 :param monitor_name: Monitor resource name. Required.
3010 :type monitor_name: str
3011 :return: An instance of LROPoller that returns None
3012 :rtype: ~azure.core.polling.LROPoller[None]
3013 :raises ~azure.core.exceptions.HttpResponseError:
3014 """
3015 _headers = kwargs.pop("headers", {}) or {}
3016 _params = kwargs.pop("params", {}) or {}
3017
3018 cls: ClsType[None] = kwargs.pop("cls", None)
3019 polling: Union[bool, PollingMethod] = kwargs.pop("polling", True)
3020 lro_delay = kwargs.pop("polling_interval", self._config.polling_interval)
3021 cont_token: Optional[str] = kwargs.pop("continuation_token", None)
3022 if cont_token is None:
3023 raw_result = self._delete_initial(
3024 resource_group_name=resource_group_name,
3025 monitor_name=monitor_name,
3026 cls=lambda x, y, z: x,
3027 headers=_headers,
3028 params=_params,
3029 **kwargs
3030 )
3031 raw_result.http_response.read() # type: ignore
3032 kwargs.pop("error_map", None)
3033
3034 def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements
3035 if cls:
3036 return cls(pipeline_response, None, {}) # type: ignore
3037
3038 path_format_arguments = {
3039 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
3040 }
3041
3042 if polling is True:
3043 polling_method: PollingMethod = cast(
3044 PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs)
3045 )
3046 elif polling is False:
3047 polling_method = cast(PollingMethod, NoPolling())
3048 else:
3049 polling_method = polling
3050 if cont_token:
3051 return LROPoller[None].from_continuation_token(
3052 polling_method=polling_method,
3053 continuation_token=cont_token,
3054 client=self._client,
3055 deserialization_callback=get_long_running_output,
3056 )
3057 return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore
3058
3059 @distributed_trace
3060 def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> ItemPaged["_models.MonitorResource"]:
3061 """List MonitorResource resources by resource group.
3062
3063 :param resource_group_name: The name of the resource group. The name is case insensitive.
3064 Required.
3065 :type resource_group_name: str
3066 :return: An iterator like instance of MonitorResource
3067 :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.MonitorResource]
3068 :raises ~azure.core.exceptions.HttpResponseError:
3069 """
3070 _headers = kwargs.pop("headers", {}) or {}
3071 _params = kwargs.pop("params", {}) or {}
3072
3073 cls: ClsType[List[_models.MonitorResource]] = kwargs.pop("cls", None)
3074
3075 error_map: MutableMapping = {
3076 401: ClientAuthenticationError,
3077 404: ResourceNotFoundError,
3078 409: ResourceExistsError,
3079 304: ResourceNotModifiedError,
3080 }
3081 error_map.update(kwargs.pop("error_map", {}) or {})
3082
3083 def prepare_request(next_link=None):
3084 if not next_link:
3085
3086 _request = build_monitors_list_by_resource_group_request(
3087 resource_group_name=resource_group_name,
3088 subscription_id=self._config.subscription_id,
3089 api_version=self._config.api_version,
3090 headers=_headers,
3091 params=_params,
3092 )
3093 path_format_arguments = {
3094 "endpoint": self._serialize.url(
3095 "self._config.base_url", self._config.base_url, "str", skip_quote=True
3096 ),
3097 }
3098 _request.url = self._client.format_url(_request.url, **path_format_arguments)
3099
3100 else:
3101 # make call to next link with the client's api-version
3102 _parsed_next_link = urllib.parse.urlparse(next_link)
3103 _next_request_params = case_insensitive_dict(
3104 {
3105 key: [urllib.parse.quote(v) for v in value]
3106 for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items()
3107 }
3108 )
3109 _next_request_params["api-version"] = self._config.api_version
3110 _request = HttpRequest(
3111 "GET",
3112 urllib.parse.urljoin(next_link, _parsed_next_link.path),
3113 headers=_headers,
3114 params=_next_request_params,
3115 )
3116 path_format_arguments = {
3117 "endpoint": self._serialize.url(
3118 "self._config.base_url", self._config.base_url, "str", skip_quote=True
3119 ),
3120 }
3121 _request.url = self._client.format_url(_request.url, **path_format_arguments)
3122
3123 return _request
3124
3125 def extract_data(pipeline_response):
3126 deserialized = pipeline_response.http_response.json()
3127 list_of_elem = _deserialize(
3128 List[_models.MonitorResource],
3129 deserialized.get("value", []),
3130 )
3131 if cls:
3132 list_of_elem = cls(list_of_elem) # type: ignore
3133 return deserialized.get("nextLink") or None, iter(list_of_elem)
3134
3135 def get_next(next_link=None):
3136 _request = prepare_request(next_link)
3137
3138 _stream = False
3139 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
3140 _request, stream=_stream, **kwargs
3141 )
3142 response = pipeline_response.http_response
3143
3144 if response.status_code not in [200]:
3145 map_error(status_code=response.status_code, response=response, error_map=error_map)
3146 error = _failsafe_deserialize(
3147 _models.ErrorResponse,
3148 response,
3149 )
3150 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
3151
3152 return pipeline_response
3153
3154 return ItemPaged(get_next, extract_data)
3155
3156 @distributed_trace
3157 def list_by_subscription_id(self, **kwargs: Any) -> ItemPaged["_models.MonitorResource"]:
3158 """List all MonitorResource by subscriptionId.
3159
3160 :return: An iterator like instance of MonitorResource
3161 :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.MonitorResource]
3162 :raises ~azure.core.exceptions.HttpResponseError:
3163 """
3164 _headers = kwargs.pop("headers", {}) or {}
3165 _params = kwargs.pop("params", {}) or {}
3166
3167 cls: ClsType[List[_models.MonitorResource]] = kwargs.pop("cls", None)
3168
3169 error_map: MutableMapping = {
3170 401: ClientAuthenticationError,
3171 404: ResourceNotFoundError,
3172 409: ResourceExistsError,
3173 304: ResourceNotModifiedError,
3174 }
3175 error_map.update(kwargs.pop("error_map", {}) or {})
3176
3177 def prepare_request(next_link=None):
3178 if not next_link:
3179
3180 _request = build_monitors_list_by_subscription_id_request(
3181 subscription_id=self._config.subscription_id,
3182 api_version=self._config.api_version,
3183 headers=_headers,
3184 params=_params,
3185 )
3186 path_format_arguments = {
3187 "endpoint": self._serialize.url(
3188 "self._config.base_url", self._config.base_url, "str", skip_quote=True
3189 ),
3190 }
3191 _request.url = self._client.format_url(_request.url, **path_format_arguments)
3192
3193 else:
3194 # make call to next link with the client's api-version
3195 _parsed_next_link = urllib.parse.urlparse(next_link)
3196 _next_request_params = case_insensitive_dict(
3197 {
3198 key: [urllib.parse.quote(v) for v in value]
3199 for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items()
3200 }
3201 )
3202 _next_request_params["api-version"] = self._config.api_version
3203 _request = HttpRequest(
3204 "GET",
3205 urllib.parse.urljoin(next_link, _parsed_next_link.path),
3206 headers=_headers,
3207 params=_next_request_params,
3208 )
3209 path_format_arguments = {
3210 "endpoint": self._serialize.url(
3211 "self._config.base_url", self._config.base_url, "str", skip_quote=True
3212 ),
3213 }
3214 _request.url = self._client.format_url(_request.url, **path_format_arguments)
3215
3216 return _request
3217
3218 def extract_data(pipeline_response):
3219 deserialized = pipeline_response.http_response.json()
3220 list_of_elem = _deserialize(
3221 List[_models.MonitorResource],
3222 deserialized.get("value", []),
3223 )
3224 if cls:
3225 list_of_elem = cls(list_of_elem) # type: ignore
3226 return deserialized.get("nextLink") or None, iter(list_of_elem)
3227
3228 def get_next(next_link=None):
3229 _request = prepare_request(next_link)
3230
3231 _stream = False
3232 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
3233 _request, stream=_stream, **kwargs
3234 )
3235 response = pipeline_response.http_response
3236
3237 if response.status_code not in [200]:
3238 map_error(status_code=response.status_code, response=response, error_map=error_map)
3239 error = _failsafe_deserialize(
3240 _models.ErrorResponse,
3241 response,
3242 )
3243 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
3244
3245 return pipeline_response
3246
3247 return ItemPaged(get_next, extract_data)
3248
3249 @overload
3250 def list_monitored_resources(
3251 self,
3252 resource_group_name: str,
3253 monitor_name: str,
3254 request: Optional[_models.LogStatusRequest] = None,
3255 *,
3256 content_type: str = "application/json",
3257 **kwargs: Any
3258 ) -> ItemPaged["_models.MonitoredResource"]:
3259 """List the resources currently being monitored by the Dynatrace monitor resource.
3260
3261 :param resource_group_name: The name of the resource group. The name is case insensitive.
3262 Required.
3263 :type resource_group_name: str
3264 :param monitor_name: Monitor resource name. Required.
3265 :type monitor_name: str
3266 :param request: The details of the log status request. Default value is None.
3267 :type request: ~azure.mgmt.dynatrace.models.LogStatusRequest
3268 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
3269 Default value is "application/json".
3270 :paramtype content_type: str
3271 :return: An iterator like instance of MonitoredResource
3272 :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.MonitoredResource]
3273 :raises ~azure.core.exceptions.HttpResponseError:
3274 """
3275
3276 @overload
3277 def list_monitored_resources(
3278 self,
3279 resource_group_name: str,
3280 monitor_name: str,
3281 request: Optional[_types.LogStatusRequest] = None,
3282 *,
3283 content_type: str = "application/json",
3284 **kwargs: Any
3285 ) -> ItemPaged["_models.MonitoredResource"]:
3286 """List the resources currently being monitored by the Dynatrace monitor resource.
3287
3288 :param resource_group_name: The name of the resource group. The name is case insensitive.
3289 Required.
3290 :type resource_group_name: str
3291 :param monitor_name: Monitor resource name. Required.
3292 :type monitor_name: str
3293 :param request: The details of the log status request. Default value is None.
3294 :type request: ~azure.mgmt.dynatrace.types.LogStatusRequest
3295 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
3296 Default value is "application/json".
3297 :paramtype content_type: str
3298 :return: An iterator like instance of MonitoredResource
3299 :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.MonitoredResource]
3300 :raises ~azure.core.exceptions.HttpResponseError:
3301 """
3302
3303 @overload
3304 def list_monitored_resources(
3305 self,
3306 resource_group_name: str,
3307 monitor_name: str,
3308 request: Optional[IO[bytes]] = None,
3309 *,
3310 content_type: str = "application/json",
3311 **kwargs: Any
3312 ) -> ItemPaged["_models.MonitoredResource"]:
3313 """List the resources currently being monitored by the Dynatrace monitor resource.
3314
3315 :param resource_group_name: The name of the resource group. The name is case insensitive.
3316 Required.
3317 :type resource_group_name: str
3318 :param monitor_name: Monitor resource name. Required.
3319 :type monitor_name: str
3320 :param request: The details of the log status request. Default value is None.
3321 :type request: IO[bytes]
3322 :keyword content_type: Body Parameter content-type. Content type parameter for binary body.
3323 Default value is "application/json".
3324 :paramtype content_type: str
3325 :return: An iterator like instance of MonitoredResource
3326 :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.MonitoredResource]
3327 :raises ~azure.core.exceptions.HttpResponseError:
3328 """
3329
3330 @distributed_trace
3331 def list_monitored_resources(
3332 self,
3333 resource_group_name: str,
3334 monitor_name: str,
3335 request: Optional[Union[_models.LogStatusRequest, _types.LogStatusRequest, IO[bytes]]] = None,
3336 **kwargs: Any
3337 ) -> ItemPaged["_models.MonitoredResource"]:
3338 """List the resources currently being monitored by the Dynatrace monitor resource.
3339
3340 :param resource_group_name: The name of the resource group. The name is case insensitive.
3341 Required.
3342 :type resource_group_name: str
3343 :param monitor_name: Monitor resource name. Required.
3344 :type monitor_name: str
3345 :param request: The details of the log status request. Is either a LogStatusRequest type or a
3346 IO[bytes] type. Default value is None.
3347 :type request: ~azure.mgmt.dynatrace.models.LogStatusRequest or
3348 ~azure.mgmt.dynatrace.types.LogStatusRequest or IO[bytes]
3349 :return: An iterator like instance of MonitoredResource
3350 :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.MonitoredResource]
3351 :raises ~azure.core.exceptions.HttpResponseError:
3352 """
3353 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
3354 _params = kwargs.pop("params", {}) or {}
3355
3356 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
3357 content_type = content_type if request else None
3358 cls: ClsType[List[_models.MonitoredResource]] = kwargs.pop("cls", None)
3359
3360 error_map: MutableMapping = {
3361 401: ClientAuthenticationError,
3362 404: ResourceNotFoundError,
3363 409: ResourceExistsError,
3364 304: ResourceNotModifiedError,
3365 }
3366 error_map.update(kwargs.pop("error_map", {}) or {})
3367 content_type = content_type or "application/json" if request else None
3368 _content = None
3369 if isinstance(request, (IOBase, bytes)):
3370 _content = request
3371 else:
3372 if request is not None:
3373 _content = json.dumps(request, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore
3374 else:
3375 _content = None
3376
3377 def prepare_request(next_link=None):
3378 if not next_link:
3379
3380 _request = build_monitors_list_monitored_resources_request(
3381 resource_group_name=resource_group_name,
3382 monitor_name=monitor_name,
3383 subscription_id=self._config.subscription_id,
3384 content_type=content_type,
3385 api_version=self._config.api_version,
3386 content=_content,
3387 headers=_headers,
3388 params=_params,
3389 )
3390 path_format_arguments = {
3391 "endpoint": self._serialize.url(
3392 "self._config.base_url", self._config.base_url, "str", skip_quote=True
3393 ),
3394 }
3395 _request.url = self._client.format_url(_request.url, **path_format_arguments)
3396
3397 else:
3398 # make call to next link with the client's api-version
3399 _parsed_next_link = urllib.parse.urlparse(next_link)
3400 _next_request_params = case_insensitive_dict(
3401 {
3402 key: [urllib.parse.quote(v) for v in value]
3403 for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items()
3404 }
3405 )
3406 _next_request_params["api-version"] = self._config.api_version
3407 _request = HttpRequest(
3408 "GET",
3409 urllib.parse.urljoin(next_link, _parsed_next_link.path),
3410 headers=_headers,
3411 params=_next_request_params,
3412 )
3413 path_format_arguments = {
3414 "endpoint": self._serialize.url(
3415 "self._config.base_url", self._config.base_url, "str", skip_quote=True
3416 ),
3417 }
3418 _request.url = self._client.format_url(_request.url, **path_format_arguments)
3419
3420 return _request
3421
3422 def extract_data(pipeline_response):
3423 deserialized = pipeline_response.http_response.json()
3424 list_of_elem = _deserialize(
3425 List[_models.MonitoredResource],
3426 deserialized.get("value", []),
3427 )
3428 if cls:
3429 list_of_elem = cls(list_of_elem) # type: ignore
3430 return deserialized.get("nextLink") or None, iter(list_of_elem)
3431
3432 def get_next(next_link=None):
3433 _request = prepare_request(next_link)
3434
3435 _stream = False
3436 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
3437 _request, stream=_stream, **kwargs
3438 )
3439 response = pipeline_response.http_response
3440
3441 if response.status_code not in [200]:
3442 map_error(status_code=response.status_code, response=response, error_map=error_map)
3443 error = _failsafe_deserialize(
3444 _models.ErrorResponse,
3445 response,
3446 )
3447 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
3448
3449 return pipeline_response
3450
3451 return ItemPaged(get_next, extract_data)
3452
3453 @distributed_trace
3454 def get_vm_host_payload(
3455 self, resource_group_name: str, monitor_name: str, **kwargs: Any
3456 ) -> _models.VMExtensionPayload:
3457 """Returns the payload that needs to be passed in the request body for installing Dynatrace agent
3458 on a VM.
3459
3460 :param resource_group_name: The name of the resource group. The name is case insensitive.
3461 Required.
3462 :type resource_group_name: str
3463 :param monitor_name: Monitor resource name. Required.
3464 :type monitor_name: str
3465 :return: VMExtensionPayload. The VMExtensionPayload is compatible with MutableMapping
3466 :rtype: ~azure.mgmt.dynatrace.models.VMExtensionPayload
3467 :raises ~azure.core.exceptions.HttpResponseError:
3468 """
3469 error_map: MutableMapping = {
3470 401: ClientAuthenticationError,
3471 404: ResourceNotFoundError,
3472 409: ResourceExistsError,
3473 304: ResourceNotModifiedError,
3474 }
3475 error_map.update(kwargs.pop("error_map", {}) or {})
3476
3477 _headers = kwargs.pop("headers", {}) or {}
3478 _params = kwargs.pop("params", {}) or {}
3479
3480 cls: ClsType[_models.VMExtensionPayload] = kwargs.pop("cls", None)
3481
3482 _request = build_monitors_get_vm_host_payload_request(
3483 resource_group_name=resource_group_name,
3484 monitor_name=monitor_name,
3485 subscription_id=self._config.subscription_id,
3486 api_version=self._config.api_version,
3487 headers=_headers,
3488 params=_params,
3489 )
3490 path_format_arguments = {
3491 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
3492 }
3493 _request.url = self._client.format_url(_request.url, **path_format_arguments)
3494
3495 _decompress = kwargs.pop("decompress", True)
3496 _stream = kwargs.pop("stream", False)
3497 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
3498 _request, stream=_stream, **kwargs
3499 )
3500
3501 response = pipeline_response.http_response
3502
3503 if response.status_code not in [200]:
3504 if _stream:
3505 try:
3506 response.read() # Load the body in memory and close the socket
3507 except (StreamConsumedError, StreamClosedError):
3508 pass
3509 map_error(status_code=response.status_code, response=response, error_map=error_map)
3510 error = _failsafe_deserialize(
3511 _models.ErrorResponse,
3512 response,
3513 )
3514 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
3515
3516 if _stream:
3517 deserialized = response.iter_bytes() if _decompress else response.iter_raw()
3518 else:
3519 deserialized = _deserialize(_models.VMExtensionPayload, response.json())
3520
3521 if cls:
3522 return cls(pipeline_response, deserialized, {}) # type: ignore
3523
3524 return deserialized # type: ignore
3525
3526 @overload
3527 def manage_agent_installation(
3528 self,
3529 resource_group_name: str,
3530 monitor_name: str,
3531 request: _models.ManageAgentInstallationRequest,
3532 *,
3533 content_type: str = "application/json",
3534 **kwargs: Any
3535 ) -> None:
3536 """Performs Dynatrace agent install/uninstall action through the Azure Dynatrace resource on the
3537 provided list of resources.
3538
3539 :param resource_group_name: The name of the resource group. The name is case insensitive.
3540 Required.
3541 :type resource_group_name: str
3542 :param monitor_name: Monitor resource name. Required.
3543 :type monitor_name: str
3544 :param request: List of resources and action. Required.
3545 :type request: ~azure.mgmt.dynatrace.models.ManageAgentInstallationRequest
3546 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
3547 Default value is "application/json".
3548 :paramtype content_type: str
3549 :return: None
3550 :rtype: None
3551 :raises ~azure.core.exceptions.HttpResponseError:
3552 """
3553
3554 @overload
3555 def manage_agent_installation(
3556 self,
3557 resource_group_name: str,
3558 monitor_name: str,
3559 request: _types.ManageAgentInstallationRequest,
3560 *,
3561 content_type: str = "application/json",
3562 **kwargs: Any
3563 ) -> None:
3564 """Performs Dynatrace agent install/uninstall action through the Azure Dynatrace resource on the
3565 provided list of resources.
3566
3567 :param resource_group_name: The name of the resource group. The name is case insensitive.
3568 Required.
3569 :type resource_group_name: str
3570 :param monitor_name: Monitor resource name. Required.
3571 :type monitor_name: str
3572 :param request: List of resources and action. Required.
3573 :type request: ~azure.mgmt.dynatrace.types.ManageAgentInstallationRequest
3574 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
3575 Default value is "application/json".
3576 :paramtype content_type: str
3577 :return: None
3578 :rtype: None
3579 :raises ~azure.core.exceptions.HttpResponseError:
3580 """
3581
3582 @overload
3583 def manage_agent_installation(
3584 self,
3585 resource_group_name: str,
3586 monitor_name: str,
3587 request: IO[bytes],
3588 *,
3589 content_type: str = "application/json",
3590 **kwargs: Any
3591 ) -> None:
3592 """Performs Dynatrace agent install/uninstall action through the Azure Dynatrace resource on the
3593 provided list of resources.
3594
3595 :param resource_group_name: The name of the resource group. The name is case insensitive.
3596 Required.
3597 :type resource_group_name: str
3598 :param monitor_name: Monitor resource name. Required.
3599 :type monitor_name: str
3600 :param request: List of resources and action. Required.
3601 :type request: IO[bytes]
3602 :keyword content_type: Body Parameter content-type. Content type parameter for binary body.
3603 Default value is "application/json".
3604 :paramtype content_type: str
3605 :return: None
3606 :rtype: None
3607 :raises ~azure.core.exceptions.HttpResponseError:
3608 """
3609
3610 @distributed_trace
3611 def manage_agent_installation( # pylint: disable=inconsistent-return-statements
3612 self,
3613 resource_group_name: str,
3614 monitor_name: str,
3615 request: Union[_models.ManageAgentInstallationRequest, _types.ManageAgentInstallationRequest, IO[bytes]],
3616 **kwargs: Any
3617 ) -> None:
3618 """Performs Dynatrace agent install/uninstall action through the Azure Dynatrace resource on the
3619 provided list of resources.
3620
3621 :param resource_group_name: The name of the resource group. The name is case insensitive.
3622 Required.
3623 :type resource_group_name: str
3624 :param monitor_name: Monitor resource name. Required.
3625 :type monitor_name: str
3626 :param request: List of resources and action. Is either a ManageAgentInstallationRequest type
3627 or a IO[bytes] type. Required.
3628 :type request: ~azure.mgmt.dynatrace.models.ManageAgentInstallationRequest or
3629 ~azure.mgmt.dynatrace.types.ManageAgentInstallationRequest or IO[bytes]
3630 :return: None
3631 :rtype: None
3632 :raises ~azure.core.exceptions.HttpResponseError:
3633 """
3634 error_map: MutableMapping = {
3635 401: ClientAuthenticationError,
3636 404: ResourceNotFoundError,
3637 409: ResourceExistsError,
3638 304: ResourceNotModifiedError,
3639 }
3640 error_map.update(kwargs.pop("error_map", {}) or {})
3641
3642 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
3643 _params = kwargs.pop("params", {}) or {}
3644
3645 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
3646 cls: ClsType[None] = kwargs.pop("cls", None)
3647
3648 content_type = content_type or "application/json"
3649 _content = None
3650 if isinstance(request, (IOBase, bytes)):
3651 _content = request
3652 else:
3653 _content = json.dumps(request, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore
3654
3655 _request = build_monitors_manage_agent_installation_request(
3656 resource_group_name=resource_group_name,
3657 monitor_name=monitor_name,
3658 subscription_id=self._config.subscription_id,
3659 content_type=content_type,
3660 api_version=self._config.api_version,
3661 content=_content,
3662 headers=_headers,
3663 params=_params,
3664 )
3665 path_format_arguments = {
3666 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
3667 }
3668 _request.url = self._client.format_url(_request.url, **path_format_arguments)
3669
3670 _stream = False
3671 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
3672 _request, stream=_stream, **kwargs
3673 )
3674
3675 response = pipeline_response.http_response
3676
3677 if response.status_code not in [204]:
3678 map_error(status_code=response.status_code, response=response, error_map=error_map)
3679 error = _failsafe_deserialize(
3680 _models.ErrorResponse,
3681 response,
3682 )
3683 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
3684
3685 if cls:
3686 return cls(pipeline_response, None, {}) # type: ignore
3687
3688 @distributed_trace
3689 def list_hosts(self, resource_group_name: str, monitor_name: str, **kwargs: Any) -> ItemPaged["_models.VMInfo"]:
3690 """List the VM/VMSS resources currently being monitored by the Dynatrace resource.
3691
3692 :param resource_group_name: The name of the resource group. The name is case insensitive.
3693 Required.
3694 :type resource_group_name: str
3695 :param monitor_name: Monitor resource name. Required.
3696 :type monitor_name: str
3697 :return: An iterator like instance of VMInfo
3698 :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.VMInfo]
3699 :raises ~azure.core.exceptions.HttpResponseError:
3700 """
3701 _headers = kwargs.pop("headers", {}) or {}
3702 _params = kwargs.pop("params", {}) or {}
3703
3704 cls: ClsType[List[_models.VMInfo]] = kwargs.pop("cls", None)
3705
3706 error_map: MutableMapping = {
3707 401: ClientAuthenticationError,
3708 404: ResourceNotFoundError,
3709 409: ResourceExistsError,
3710 304: ResourceNotModifiedError,
3711 }
3712 error_map.update(kwargs.pop("error_map", {}) or {})
3713
3714 def prepare_request(next_link=None):
3715 if not next_link:
3716
3717 _request = build_monitors_list_hosts_request(
3718 resource_group_name=resource_group_name,
3719 monitor_name=monitor_name,
3720 subscription_id=self._config.subscription_id,
3721 api_version=self._config.api_version,
3722 headers=_headers,
3723 params=_params,
3724 )
3725 path_format_arguments = {
3726 "endpoint": self._serialize.url(
3727 "self._config.base_url", self._config.base_url, "str", skip_quote=True
3728 ),
3729 }
3730 _request.url = self._client.format_url(_request.url, **path_format_arguments)
3731
3732 else:
3733 # make call to next link with the client's api-version
3734 _parsed_next_link = urllib.parse.urlparse(next_link)
3735 _next_request_params = case_insensitive_dict(
3736 {
3737 key: [urllib.parse.quote(v) for v in value]
3738 for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items()
3739 }
3740 )
3741 _next_request_params["api-version"] = self._config.api_version
3742 _request = HttpRequest(
3743 "GET",
3744 urllib.parse.urljoin(next_link, _parsed_next_link.path),
3745 headers=_headers,
3746 params=_next_request_params,
3747 )
3748 path_format_arguments = {
3749 "endpoint": self._serialize.url(
3750 "self._config.base_url", self._config.base_url, "str", skip_quote=True
3751 ),
3752 }
3753 _request.url = self._client.format_url(_request.url, **path_format_arguments)
3754
3755 return _request
3756
3757 def extract_data(pipeline_response):
3758 deserialized = pipeline_response.http_response.json()
3759 list_of_elem = _deserialize(
3760 List[_models.VMInfo],
3761 deserialized.get("value", []),
3762 )
3763 if cls:
3764 list_of_elem = cls(list_of_elem) # type: ignore
3765 return deserialized.get("nextLink") or None, iter(list_of_elem)
3766
3767 def get_next(next_link=None):
3768 _request = prepare_request(next_link)
3769
3770 _stream = False
3771 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
3772 _request, stream=_stream, **kwargs
3773 )
3774 response = pipeline_response.http_response
3775
3776 if response.status_code not in [200]:
3777 map_error(status_code=response.status_code, response=response, error_map=error_map)
3778 error = _failsafe_deserialize(
3779 _models.ErrorResponse,
3780 response,
3781 )
3782 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
3783
3784 return pipeline_response
3785
3786 return ItemPaged(get_next, extract_data)
3787
3788 @overload
3789 def get_metric_status(
3790 self,
3791 resource_group_name: str,
3792 monitor_name: str,
3793 request: Optional[_models.MetricStatusRequest] = None,
3794 *,
3795 content_type: str = "application/json",
3796 **kwargs: Any
3797 ) -> _models.MetricsStatusResponse:
3798 """Get metric status.
3799
3800 :param resource_group_name: The name of the resource group. The name is case insensitive.
3801 Required.
3802 :type resource_group_name: str
3803 :param monitor_name: Monitor resource name. Required.
3804 :type monitor_name: str
3805 :param request: The details of the metric status request. Default value is None.
3806 :type request: ~azure.mgmt.dynatrace.models.MetricStatusRequest
3807 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
3808 Default value is "application/json".
3809 :paramtype content_type: str
3810 :return: MetricsStatusResponse. The MetricsStatusResponse is compatible with MutableMapping
3811 :rtype: ~azure.mgmt.dynatrace.models.MetricsStatusResponse
3812 :raises ~azure.core.exceptions.HttpResponseError:
3813 """
3814
3815 @overload
3816 def get_metric_status(
3817 self,
3818 resource_group_name: str,
3819 monitor_name: str,
3820 request: Optional[_types.MetricStatusRequest] = None,
3821 *,
3822 content_type: str = "application/json",
3823 **kwargs: Any
3824 ) -> _models.MetricsStatusResponse:
3825 """Get metric status.
3826
3827 :param resource_group_name: The name of the resource group. The name is case insensitive.
3828 Required.
3829 :type resource_group_name: str
3830 :param monitor_name: Monitor resource name. Required.
3831 :type monitor_name: str
3832 :param request: The details of the metric status request. Default value is None.
3833 :type request: ~azure.mgmt.dynatrace.types.MetricStatusRequest
3834 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
3835 Default value is "application/json".
3836 :paramtype content_type: str
3837 :return: MetricsStatusResponse. The MetricsStatusResponse is compatible with MutableMapping
3838 :rtype: ~azure.mgmt.dynatrace.models.MetricsStatusResponse
3839 :raises ~azure.core.exceptions.HttpResponseError:
3840 """
3841
3842 @overload
3843 def get_metric_status(
3844 self,
3845 resource_group_name: str,
3846 monitor_name: str,
3847 request: Optional[IO[bytes]] = None,
3848 *,
3849 content_type: str = "application/json",
3850 **kwargs: Any
3851 ) -> _models.MetricsStatusResponse:
3852 """Get metric status.
3853
3854 :param resource_group_name: The name of the resource group. The name is case insensitive.
3855 Required.
3856 :type resource_group_name: str
3857 :param monitor_name: Monitor resource name. Required.
3858 :type monitor_name: str
3859 :param request: The details of the metric status request. Default value is None.
3860 :type request: IO[bytes]
3861 :keyword content_type: Body Parameter content-type. Content type parameter for binary body.
3862 Default value is "application/json".
3863 :paramtype content_type: str
3864 :return: MetricsStatusResponse. The MetricsStatusResponse is compatible with MutableMapping
3865 :rtype: ~azure.mgmt.dynatrace.models.MetricsStatusResponse
3866 :raises ~azure.core.exceptions.HttpResponseError:
3867 """
3868
3869 @distributed_trace
3870 def get_metric_status(
3871 self,
3872 resource_group_name: str,
3873 monitor_name: str,
3874 request: Optional[Union[_models.MetricStatusRequest, _types.MetricStatusRequest, IO[bytes]]] = None,
3875 **kwargs: Any
3876 ) -> _models.MetricsStatusResponse:
3877 """Get metric status.
3878
3879 :param resource_group_name: The name of the resource group. The name is case insensitive.
3880 Required.
3881 :type resource_group_name: str
3882 :param monitor_name: Monitor resource name. Required.
3883 :type monitor_name: str
3884 :param request: The details of the metric status request. Is either a MetricStatusRequest type
3885 or a IO[bytes] type. Default value is None.
3886 :type request: ~azure.mgmt.dynatrace.models.MetricStatusRequest or
3887 ~azure.mgmt.dynatrace.types.MetricStatusRequest or IO[bytes]
3888 :return: MetricsStatusResponse. The MetricsStatusResponse is compatible with MutableMapping
3889 :rtype: ~azure.mgmt.dynatrace.models.MetricsStatusResponse
3890 :raises ~azure.core.exceptions.HttpResponseError:
3891 """
3892 error_map: MutableMapping = {
3893 401: ClientAuthenticationError,
3894 404: ResourceNotFoundError,
3895 409: ResourceExistsError,
3896 304: ResourceNotModifiedError,
3897 }
3898 error_map.update(kwargs.pop("error_map", {}) or {})
3899
3900 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
3901 _params = kwargs.pop("params", {}) or {}
3902
3903 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
3904 content_type = content_type if request else None
3905 cls: ClsType[_models.MetricsStatusResponse] = kwargs.pop("cls", None)
3906
3907 content_type = content_type or "application/json" if request else None
3908 _content = None
3909 if isinstance(request, (IOBase, bytes)):
3910 _content = request
3911 else:
3912 if request is not None:
3913 _content = json.dumps(request, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore
3914 else:
3915 _content = None
3916
3917 _request = build_monitors_get_metric_status_request(
3918 resource_group_name=resource_group_name,
3919 monitor_name=monitor_name,
3920 subscription_id=self._config.subscription_id,
3921 content_type=content_type,
3922 api_version=self._config.api_version,
3923 content=_content,
3924 headers=_headers,
3925 params=_params,
3926 )
3927 path_format_arguments = {
3928 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
3929 }
3930 _request.url = self._client.format_url(_request.url, **path_format_arguments)
3931
3932 _decompress = kwargs.pop("decompress", True)
3933 _stream = kwargs.pop("stream", False)
3934 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
3935 _request, stream=_stream, **kwargs
3936 )
3937
3938 response = pipeline_response.http_response
3939
3940 if response.status_code not in [200]:
3941 if _stream:
3942 try:
3943 response.read() # Load the body in memory and close the socket
3944 except (StreamConsumedError, StreamClosedError):
3945 pass
3946 map_error(status_code=response.status_code, response=response, error_map=error_map)
3947 error = _failsafe_deserialize(
3948 _models.ErrorResponse,
3949 response,
3950 )
3951 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
3952
3953 if _stream:
3954 deserialized = response.iter_bytes() if _decompress else response.iter_raw()
3955 else:
3956 deserialized = _deserialize(_models.MetricsStatusResponse, response.json())
3957
3958 if cls:
3959 return cls(pipeline_response, deserialized, {}) # type: ignore
3960
3961 return deserialized # type: ignore
3962
3963 @distributed_trace
3964 def list_app_services(
3965 self, resource_group_name: str, monitor_name: str, **kwargs: Any
3966 ) -> ItemPaged["_models.AppServiceInfo"]:
3967 """Gets list of App Services with Dynatrace PaaS OneAgent enabled.
3968
3969 :param resource_group_name: The name of the resource group. The name is case insensitive.
3970 Required.
3971 :type resource_group_name: str
3972 :param monitor_name: Monitor resource name. Required.
3973 :type monitor_name: str
3974 :return: An iterator like instance of AppServiceInfo
3975 :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.AppServiceInfo]
3976 :raises ~azure.core.exceptions.HttpResponseError:
3977 """
3978 _headers = kwargs.pop("headers", {}) or {}
3979 _params = kwargs.pop("params", {}) or {}
3980
3981 cls: ClsType[List[_models.AppServiceInfo]] = kwargs.pop("cls", None)
3982
3983 error_map: MutableMapping = {
3984 401: ClientAuthenticationError,
3985 404: ResourceNotFoundError,
3986 409: ResourceExistsError,
3987 304: ResourceNotModifiedError,
3988 }
3989 error_map.update(kwargs.pop("error_map", {}) or {})
3990
3991 def prepare_request(next_link=None):
3992 if not next_link:
3993
3994 _request = build_monitors_list_app_services_request(
3995 resource_group_name=resource_group_name,
3996 monitor_name=monitor_name,
3997 subscription_id=self._config.subscription_id,
3998 api_version=self._config.api_version,
3999 headers=_headers,
4000 params=_params,
4001 )
4002 path_format_arguments = {
4003 "endpoint": self._serialize.url(
4004 "self._config.base_url", self._config.base_url, "str", skip_quote=True
4005 ),
4006 }
4007 _request.url = self._client.format_url(_request.url, **path_format_arguments)
4008
4009 else:
4010 # make call to next link with the client's api-version
4011 _parsed_next_link = urllib.parse.urlparse(next_link)
4012 _next_request_params = case_insensitive_dict(
4013 {
4014 key: [urllib.parse.quote(v) for v in value]
4015 for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items()
4016 }
4017 )
4018 _next_request_params["api-version"] = self._config.api_version
4019 _request = HttpRequest(
4020 "GET",
4021 urllib.parse.urljoin(next_link, _parsed_next_link.path),
4022 headers=_headers,
4023 params=_next_request_params,
4024 )
4025 path_format_arguments = {
4026 "endpoint": self._serialize.url(
4027 "self._config.base_url", self._config.base_url, "str", skip_quote=True
4028 ),
4029 }
4030 _request.url = self._client.format_url(_request.url, **path_format_arguments)
4031
4032 return _request
4033
4034 def extract_data(pipeline_response):
4035 deserialized = pipeline_response.http_response.json()
4036 list_of_elem = _deserialize(
4037 List[_models.AppServiceInfo],
4038 deserialized.get("value", []),
4039 )
4040 if cls:
4041 list_of_elem = cls(list_of_elem) # type: ignore
4042 return deserialized.get("nextLink") or None, iter(list_of_elem)
4043
4044 def get_next(next_link=None):
4045 _request = prepare_request(next_link)
4046
4047 _stream = False
4048 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
4049 _request, stream=_stream, **kwargs
4050 )
4051 response = pipeline_response.http_response
4052
4053 if response.status_code not in [200]:
4054 map_error(status_code=response.status_code, response=response, error_map=error_map)
4055 error = _failsafe_deserialize(
4056 _models.ErrorResponse,
4057 response,
4058 )
4059 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
4060
4061 return pipeline_response
4062
4063 return ItemPaged(get_next, extract_data)
4064
4065 def _upgrade_plan_initial(
4066 self,
4067 resource_group_name: str,
4068 monitor_name: str,
4069 request: Union[_models.UpgradePlanRequest, _types.UpgradePlanRequest, IO[bytes]],
4070 **kwargs: Any
4071 ) -> Iterator[bytes]:
4072 error_map: MutableMapping = {
4073 401: ClientAuthenticationError,
4074 404: ResourceNotFoundError,
4075 409: ResourceExistsError,
4076 304: ResourceNotModifiedError,
4077 }
4078 error_map.update(kwargs.pop("error_map", {}) or {})
4079
4080 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
4081 _params = kwargs.pop("params", {}) or {}
4082
4083 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
4084 cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None)
4085
4086 content_type = content_type or "application/json"
4087 _content = None
4088 if isinstance(request, (IOBase, bytes)):
4089 _content = request
4090 else:
4091 _content = json.dumps(request, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore
4092
4093 _request = build_monitors_upgrade_plan_request(
4094 resource_group_name=resource_group_name,
4095 monitor_name=monitor_name,
4096 subscription_id=self._config.subscription_id,
4097 content_type=content_type,
4098 api_version=self._config.api_version,
4099 content=_content,
4100 headers=_headers,
4101 params=_params,
4102 )
4103 path_format_arguments = {
4104 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
4105 }
4106 _request.url = self._client.format_url(_request.url, **path_format_arguments)
4107
4108 _decompress = kwargs.pop("decompress", True)
4109 _stream = True
4110 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
4111 _request, stream=_stream, **kwargs
4112 )
4113
4114 response = pipeline_response.http_response
4115
4116 if response.status_code not in [202]:
4117 try:
4118 response.read() # Load the body in memory and close the socket
4119 except (StreamConsumedError, StreamClosedError):
4120 pass
4121 map_error(status_code=response.status_code, response=response, error_map=error_map)
4122 error = _failsafe_deserialize(
4123 _models.ErrorResponse,
4124 response,
4125 )
4126 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
4127
4128 response_headers = {}
4129 response_headers["Location"] = self._deserialize("str", response.headers.get("Location"))
4130 response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After"))
4131
4132 deserialized = response.iter_bytes() if _decompress else response.iter_raw()
4133
4134 if cls:
4135 return cls(pipeline_response, deserialized, response_headers) # type: ignore
4136
4137 return deserialized # type: ignore
4138
4139 @overload
4140 def begin_upgrade_plan(
4141 self,
4142 resource_group_name: str,
4143 monitor_name: str,
4144 request: _models.UpgradePlanRequest,
4145 *,
4146 content_type: str = "application/json",
4147 **kwargs: Any
4148 ) -> LROPoller[None]:
4149 """Upgrades the billing Plan for Dynatrace monitor resource.
4150
4151 :param resource_group_name: The name of the resource group. The name is case insensitive.
4152 Required.
4153 :type resource_group_name: str
4154 :param monitor_name: Monitor resource name. Required.
4155 :type monitor_name: str
4156 :param request: The details of the upgrade plan request. Required.
4157 :type request: ~azure.mgmt.dynatrace.models.UpgradePlanRequest
4158 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
4159 Default value is "application/json".
4160 :paramtype content_type: str
4161 :return: An instance of LROPoller that returns None
4162 :rtype: ~azure.core.polling.LROPoller[None]
4163 :raises ~azure.core.exceptions.HttpResponseError:
4164 """
4165
4166 @overload
4167 def begin_upgrade_plan(
4168 self,
4169 resource_group_name: str,
4170 monitor_name: str,
4171 request: _types.UpgradePlanRequest,
4172 *,
4173 content_type: str = "application/json",
4174 **kwargs: Any
4175 ) -> LROPoller[None]:
4176 """Upgrades the billing Plan for Dynatrace monitor resource.
4177
4178 :param resource_group_name: The name of the resource group. The name is case insensitive.
4179 Required.
4180 :type resource_group_name: str
4181 :param monitor_name: Monitor resource name. Required.
4182 :type monitor_name: str
4183 :param request: The details of the upgrade plan request. Required.
4184 :type request: ~azure.mgmt.dynatrace.types.UpgradePlanRequest
4185 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
4186 Default value is "application/json".
4187 :paramtype content_type: str
4188 :return: An instance of LROPoller that returns None
4189 :rtype: ~azure.core.polling.LROPoller[None]
4190 :raises ~azure.core.exceptions.HttpResponseError:
4191 """
4192
4193 @overload
4194 def begin_upgrade_plan(
4195 self,
4196 resource_group_name: str,
4197 monitor_name: str,
4198 request: IO[bytes],
4199 *,
4200 content_type: str = "application/json",
4201 **kwargs: Any
4202 ) -> LROPoller[None]:
4203 """Upgrades the billing Plan for Dynatrace monitor resource.
4204
4205 :param resource_group_name: The name of the resource group. The name is case insensitive.
4206 Required.
4207 :type resource_group_name: str
4208 :param monitor_name: Monitor resource name. Required.
4209 :type monitor_name: str
4210 :param request: The details of the upgrade plan request. Required.
4211 :type request: IO[bytes]
4212 :keyword content_type: Body Parameter content-type. Content type parameter for binary body.
4213 Default value is "application/json".
4214 :paramtype content_type: str
4215 :return: An instance of LROPoller that returns None
4216 :rtype: ~azure.core.polling.LROPoller[None]
4217 :raises ~azure.core.exceptions.HttpResponseError:
4218 """
4219
4220 @distributed_trace
4221 def begin_upgrade_plan(
4222 self,
4223 resource_group_name: str,
4224 monitor_name: str,
4225 request: Union[_models.UpgradePlanRequest, _types.UpgradePlanRequest, IO[bytes]],
4226 **kwargs: Any
4227 ) -> LROPoller[None]:
4228 """Upgrades the billing Plan for Dynatrace monitor resource.
4229
4230 :param resource_group_name: The name of the resource group. The name is case insensitive.
4231 Required.
4232 :type resource_group_name: str
4233 :param monitor_name: Monitor resource name. Required.
4234 :type monitor_name: str
4235 :param request: The details of the upgrade plan request. Is either a UpgradePlanRequest type or
4236 a IO[bytes] type. Required.
4237 :type request: ~azure.mgmt.dynatrace.models.UpgradePlanRequest or
4238 ~azure.mgmt.dynatrace.types.UpgradePlanRequest or IO[bytes]
4239 :return: An instance of LROPoller that returns None
4240 :rtype: ~azure.core.polling.LROPoller[None]
4241 :raises ~azure.core.exceptions.HttpResponseError:
4242 """
4243 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
4244 _params = kwargs.pop("params", {}) or {}
4245
4246 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
4247 cls: ClsType[None] = kwargs.pop("cls", None)
4248 polling: Union[bool, PollingMethod] = kwargs.pop("polling", True)
4249 lro_delay = kwargs.pop("polling_interval", self._config.polling_interval)
4250 cont_token: Optional[str] = kwargs.pop("continuation_token", None)
4251 if cont_token is None:
4252 raw_result = self._upgrade_plan_initial(
4253 resource_group_name=resource_group_name,
4254 monitor_name=monitor_name,
4255 request=request,
4256 content_type=content_type,
4257 cls=lambda x, y, z: x,
4258 headers=_headers,
4259 params=_params,
4260 **kwargs
4261 )
4262 raw_result.http_response.read() # type: ignore
4263 kwargs.pop("error_map", None)
4264
4265 def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements
4266 if cls:
4267 return cls(pipeline_response, None, {}) # type: ignore
4268
4269 path_format_arguments = {
4270 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
4271 }
4272
4273 if polling is True:
4274 polling_method: PollingMethod = cast(
4275 PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs)
4276 )
4277 elif polling is False:
4278 polling_method = cast(PollingMethod, NoPolling())
4279 else:
4280 polling_method = polling
4281 if cont_token:
4282 return LROPoller[None].from_continuation_token(
4283 polling_method=polling_method,
4284 continuation_token=cont_token,
4285 client=self._client,
4286 deserialization_callback=get_long_running_output,
4287 )
4288 return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore
4289
4290 @overload
4291 def get_sso_details(
4292 self,
4293 resource_group_name: str,
4294 monitor_name: str,
4295 request: Optional[_models.SSODetailsRequest] = None,
4296 *,
4297 content_type: str = "application/json",
4298 **kwargs: Any
4299 ) -> _models.SSODetailsResponse:
4300 """Gets the SSO configuration details from the partner.
4301
4302 :param resource_group_name: The name of the resource group. The name is case insensitive.
4303 Required.
4304 :type resource_group_name: str
4305 :param monitor_name: Monitor resource name. Required.
4306 :type monitor_name: str
4307 :param request: The details of the get sso details request. Default value is None.
4308 :type request: ~azure.mgmt.dynatrace.models.SSODetailsRequest
4309 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
4310 Default value is "application/json".
4311 :paramtype content_type: str
4312 :return: SSODetailsResponse. The SSODetailsResponse is compatible with MutableMapping
4313 :rtype: ~azure.mgmt.dynatrace.models.SSODetailsResponse
4314 :raises ~azure.core.exceptions.HttpResponseError:
4315 """
4316
4317 @overload
4318 def get_sso_details(
4319 self,
4320 resource_group_name: str,
4321 monitor_name: str,
4322 request: Optional[_types.SSODetailsRequest] = None,
4323 *,
4324 content_type: str = "application/json",
4325 **kwargs: Any
4326 ) -> _models.SSODetailsResponse:
4327 """Gets the SSO configuration details from the partner.
4328
4329 :param resource_group_name: The name of the resource group. The name is case insensitive.
4330 Required.
4331 :type resource_group_name: str
4332 :param monitor_name: Monitor resource name. Required.
4333 :type monitor_name: str
4334 :param request: The details of the get sso details request. Default value is None.
4335 :type request: ~azure.mgmt.dynatrace.types.SSODetailsRequest
4336 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
4337 Default value is "application/json".
4338 :paramtype content_type: str
4339 :return: SSODetailsResponse. The SSODetailsResponse is compatible with MutableMapping
4340 :rtype: ~azure.mgmt.dynatrace.models.SSODetailsResponse
4341 :raises ~azure.core.exceptions.HttpResponseError:
4342 """
4343
4344 @overload
4345 def get_sso_details(
4346 self,
4347 resource_group_name: str,
4348 monitor_name: str,
4349 request: Optional[IO[bytes]] = None,
4350 *,
4351 content_type: str = "application/json",
4352 **kwargs: Any
4353 ) -> _models.SSODetailsResponse:
4354 """Gets the SSO configuration details from the partner.
4355
4356 :param resource_group_name: The name of the resource group. The name is case insensitive.
4357 Required.
4358 :type resource_group_name: str
4359 :param monitor_name: Monitor resource name. Required.
4360 :type monitor_name: str
4361 :param request: The details of the get sso details request. Default value is None.
4362 :type request: IO[bytes]
4363 :keyword content_type: Body Parameter content-type. Content type parameter for binary body.
4364 Default value is "application/json".
4365 :paramtype content_type: str
4366 :return: SSODetailsResponse. The SSODetailsResponse is compatible with MutableMapping
4367 :rtype: ~azure.mgmt.dynatrace.models.SSODetailsResponse
4368 :raises ~azure.core.exceptions.HttpResponseError:
4369 """
4370
4371 @distributed_trace
4372 def get_sso_details(
4373 self,
4374 resource_group_name: str,
4375 monitor_name: str,
4376 request: Optional[Union[_models.SSODetailsRequest, _types.SSODetailsRequest, IO[bytes]]] = None,
4377 **kwargs: Any
4378 ) -> _models.SSODetailsResponse:
4379 """Gets the SSO configuration details from the partner.
4380
4381 :param resource_group_name: The name of the resource group. The name is case insensitive.
4382 Required.
4383 :type resource_group_name: str
4384 :param monitor_name: Monitor resource name. Required.
4385 :type monitor_name: str
4386 :param request: The details of the get sso details request. Is either a SSODetailsRequest type
4387 or a IO[bytes] type. Default value is None.
4388 :type request: ~azure.mgmt.dynatrace.models.SSODetailsRequest or
4389 ~azure.mgmt.dynatrace.types.SSODetailsRequest or IO[bytes]
4390 :return: SSODetailsResponse. The SSODetailsResponse is compatible with MutableMapping
4391 :rtype: ~azure.mgmt.dynatrace.models.SSODetailsResponse
4392 :raises ~azure.core.exceptions.HttpResponseError:
4393 """
4394 error_map: MutableMapping = {
4395 401: ClientAuthenticationError,
4396 404: ResourceNotFoundError,
4397 409: ResourceExistsError,
4398 304: ResourceNotModifiedError,
4399 }
4400 error_map.update(kwargs.pop("error_map", {}) or {})
4401
4402 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
4403 _params = kwargs.pop("params", {}) or {}
4404
4405 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
4406 content_type = content_type if request else None
4407 cls: ClsType[_models.SSODetailsResponse] = kwargs.pop("cls", None)
4408
4409 content_type = content_type or "application/json" if request else None
4410 _content = None
4411 if isinstance(request, (IOBase, bytes)):
4412 _content = request
4413 else:
4414 if request is not None:
4415 _content = json.dumps(request, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore
4416 else:
4417 _content = None
4418
4419 _request = build_monitors_get_sso_details_request(
4420 resource_group_name=resource_group_name,
4421 monitor_name=monitor_name,
4422 subscription_id=self._config.subscription_id,
4423 content_type=content_type,
4424 api_version=self._config.api_version,
4425 content=_content,
4426 headers=_headers,
4427 params=_params,
4428 )
4429 path_format_arguments = {
4430 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
4431 }
4432 _request.url = self._client.format_url(_request.url, **path_format_arguments)
4433
4434 _decompress = kwargs.pop("decompress", True)
4435 _stream = kwargs.pop("stream", False)
4436 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
4437 _request, stream=_stream, **kwargs
4438 )
4439
4440 response = pipeline_response.http_response
4441
4442 if response.status_code not in [200]:
4443 if _stream:
4444 try:
4445 response.read() # Load the body in memory and close the socket
4446 except (StreamConsumedError, StreamClosedError):
4447 pass
4448 map_error(status_code=response.status_code, response=response, error_map=error_map)
4449 error = _failsafe_deserialize(
4450 _models.ErrorResponse,
4451 response,
4452 )
4453 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
4454
4455 if _stream:
4456 deserialized = response.iter_bytes() if _decompress else response.iter_raw()
4457 else:
4458 deserialized = _deserialize(_models.SSODetailsResponse, response.json())
4459
4460 if cls:
4461 return cls(pipeline_response, deserialized, {}) # type: ignore
4462
4463 return deserialized # type: ignore
4464
4465 @overload
4466 def list_linkable_environments(
4467 self,
4468 resource_group_name: str,
4469 monitor_name: str,
4470 request: _models.LinkableEnvironmentRequest,
4471 *,
4472 content_type: str = "application/json",
4473 **kwargs: Any
4474 ) -> ItemPaged["_models.LinkableEnvironmentResponse"]:
4475 """Gets all the Dynatrace environments that a user can link a azure resource to.
4476
4477 :param resource_group_name: The name of the resource group. The name is case insensitive.
4478 Required.
4479 :type resource_group_name: str
4480 :param monitor_name: Monitor resource name. Required.
4481 :type monitor_name: str
4482 :param request: The details of the linkable environment request. Required.
4483 :type request: ~azure.mgmt.dynatrace.models.LinkableEnvironmentRequest
4484 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
4485 Default value is "application/json".
4486 :paramtype content_type: str
4487 :return: An iterator like instance of LinkableEnvironmentResponse
4488 :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.LinkableEnvironmentResponse]
4489 :raises ~azure.core.exceptions.HttpResponseError:
4490 """
4491
4492 @overload
4493 def list_linkable_environments(
4494 self,
4495 resource_group_name: str,
4496 monitor_name: str,
4497 request: _types.LinkableEnvironmentRequest,
4498 *,
4499 content_type: str = "application/json",
4500 **kwargs: Any
4501 ) -> ItemPaged["_models.LinkableEnvironmentResponse"]:
4502 """Gets all the Dynatrace environments that a user can link a azure resource to.
4503
4504 :param resource_group_name: The name of the resource group. The name is case insensitive.
4505 Required.
4506 :type resource_group_name: str
4507 :param monitor_name: Monitor resource name. Required.
4508 :type monitor_name: str
4509 :param request: The details of the linkable environment request. Required.
4510 :type request: ~azure.mgmt.dynatrace.types.LinkableEnvironmentRequest
4511 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
4512 Default value is "application/json".
4513 :paramtype content_type: str
4514 :return: An iterator like instance of LinkableEnvironmentResponse
4515 :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.LinkableEnvironmentResponse]
4516 :raises ~azure.core.exceptions.HttpResponseError:
4517 """
4518
4519 @overload
4520 def list_linkable_environments(
4521 self,
4522 resource_group_name: str,
4523 monitor_name: str,
4524 request: IO[bytes],
4525 *,
4526 content_type: str = "application/json",
4527 **kwargs: Any
4528 ) -> ItemPaged["_models.LinkableEnvironmentResponse"]:
4529 """Gets all the Dynatrace environments that a user can link a azure resource to.
4530
4531 :param resource_group_name: The name of the resource group. The name is case insensitive.
4532 Required.
4533 :type resource_group_name: str
4534 :param monitor_name: Monitor resource name. Required.
4535 :type monitor_name: str
4536 :param request: The details of the linkable environment request. Required.
4537 :type request: IO[bytes]
4538 :keyword content_type: Body Parameter content-type. Content type parameter for binary body.
4539 Default value is "application/json".
4540 :paramtype content_type: str
4541 :return: An iterator like instance of LinkableEnvironmentResponse
4542 :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.LinkableEnvironmentResponse]
4543 :raises ~azure.core.exceptions.HttpResponseError:
4544 """
4545
4546 @distributed_trace
4547 def list_linkable_environments(
4548 self,
4549 resource_group_name: str,
4550 monitor_name: str,
4551 request: Union[_models.LinkableEnvironmentRequest, _types.LinkableEnvironmentRequest, IO[bytes]],
4552 **kwargs: Any
4553 ) -> ItemPaged["_models.LinkableEnvironmentResponse"]:
4554 """Gets all the Dynatrace environments that a user can link a azure resource to.
4555
4556 :param resource_group_name: The name of the resource group. The name is case insensitive.
4557 Required.
4558 :type resource_group_name: str
4559 :param monitor_name: Monitor resource name. Required.
4560 :type monitor_name: str
4561 :param request: The details of the linkable environment request. Is either a
4562 LinkableEnvironmentRequest type or a IO[bytes] type. Required.
4563 :type request: ~azure.mgmt.dynatrace.models.LinkableEnvironmentRequest or
4564 ~azure.mgmt.dynatrace.types.LinkableEnvironmentRequest or IO[bytes]
4565 :return: An iterator like instance of LinkableEnvironmentResponse
4566 :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.LinkableEnvironmentResponse]
4567 :raises ~azure.core.exceptions.HttpResponseError:
4568 """
4569 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
4570 _params = kwargs.pop("params", {}) or {}
4571
4572 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
4573 cls: ClsType[List[_models.LinkableEnvironmentResponse]] = kwargs.pop("cls", None)
4574
4575 error_map: MutableMapping = {
4576 401: ClientAuthenticationError,
4577 404: ResourceNotFoundError,
4578 409: ResourceExistsError,
4579 304: ResourceNotModifiedError,
4580 }
4581 error_map.update(kwargs.pop("error_map", {}) or {})
4582 content_type = content_type or "application/json"
4583 _content = None
4584 if isinstance(request, (IOBase, bytes)):
4585 _content = request
4586 else:
4587 _content = json.dumps(request, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore
4588
4589 def prepare_request(next_link=None):
4590 if not next_link:
4591
4592 _request = build_monitors_list_linkable_environments_request(
4593 resource_group_name=resource_group_name,
4594 monitor_name=monitor_name,
4595 subscription_id=self._config.subscription_id,
4596 content_type=content_type,
4597 api_version=self._config.api_version,
4598 content=_content,
4599 headers=_headers,
4600 params=_params,
4601 )
4602 path_format_arguments = {
4603 "endpoint": self._serialize.url(
4604 "self._config.base_url", self._config.base_url, "str", skip_quote=True
4605 ),
4606 }
4607 _request.url = self._client.format_url(_request.url, **path_format_arguments)
4608
4609 else:
4610 # make call to next link with the client's api-version
4611 _parsed_next_link = urllib.parse.urlparse(next_link)
4612 _next_request_params = case_insensitive_dict(
4613 {
4614 key: [urllib.parse.quote(v) for v in value]
4615 for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items()
4616 }
4617 )
4618 _next_request_params["api-version"] = self._config.api_version
4619 _request = HttpRequest(
4620 "GET",
4621 urllib.parse.urljoin(next_link, _parsed_next_link.path),
4622 headers=_headers,
4623 params=_next_request_params,
4624 )
4625 path_format_arguments = {
4626 "endpoint": self._serialize.url(
4627 "self._config.base_url", self._config.base_url, "str", skip_quote=True
4628 ),
4629 }
4630 _request.url = self._client.format_url(_request.url, **path_format_arguments)
4631
4632 return _request
4633
4634 def extract_data(pipeline_response):
4635 deserialized = pipeline_response.http_response.json()
4636 list_of_elem = _deserialize(
4637 List[_models.LinkableEnvironmentResponse],
4638 deserialized.get("value", []),
4639 )
4640 if cls:
4641 list_of_elem = cls(list_of_elem) # type: ignore
4642 return deserialized.get("nextLink") or None, iter(list_of_elem)
4643
4644 def get_next(next_link=None):
4645 _request = prepare_request(next_link)
4646
4647 _stream = False
4648 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
4649 _request, stream=_stream, **kwargs
4650 )
4651 response = pipeline_response.http_response
4652
4653 if response.status_code not in [200]:
4654 map_error(status_code=response.status_code, response=response, error_map=error_map)
4655 error = _failsafe_deserialize(
4656 _models.ErrorResponse,
4657 response,
4658 )
4659 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
4660
4661 return pipeline_response
4662
4663 return ItemPaged(get_next, extract_data)
4664
4665 @overload
4666 def get_all_connected_resources_count(
4667 self,
4668 request: _models.MarketplaceSubscriptionIdRequest,
4669 *,
4670 content_type: str = "application/json",
4671 **kwargs: Any
4672 ) -> _models.ConnectedResourcesCountResponse:
4673 """Get the total number of connected resources for the given marketplace subscription Id.
4674
4675 :param request: The request body. Required.
4676 :type request: ~azure.mgmt.dynatrace.models.MarketplaceSubscriptionIdRequest
4677 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
4678 Default value is "application/json".
4679 :paramtype content_type: str
4680 :return: ConnectedResourcesCountResponse. The ConnectedResourcesCountResponse is compatible
4681 with MutableMapping
4682 :rtype: ~azure.mgmt.dynatrace.models.ConnectedResourcesCountResponse
4683 :raises ~azure.core.exceptions.HttpResponseError:
4684 """
4685
4686 @overload
4687 def get_all_connected_resources_count(
4688 self, request: _types.MarketplaceSubscriptionIdRequest, *, content_type: str = "application/json", **kwargs: Any
4689 ) -> _models.ConnectedResourcesCountResponse:
4690 """Get the total number of connected resources for the given marketplace subscription Id.
4691
4692 :param request: The request body. Required.
4693 :type request: ~azure.mgmt.dynatrace.types.MarketplaceSubscriptionIdRequest
4694 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
4695 Default value is "application/json".
4696 :paramtype content_type: str
4697 :return: ConnectedResourcesCountResponse. The ConnectedResourcesCountResponse is compatible
4698 with MutableMapping
4699 :rtype: ~azure.mgmt.dynatrace.models.ConnectedResourcesCountResponse
4700 :raises ~azure.core.exceptions.HttpResponseError:
4701 """
4702
4703 @overload
4704 def get_all_connected_resources_count(
4705 self, request: IO[bytes], *, content_type: str = "application/json", **kwargs: Any
4706 ) -> _models.ConnectedResourcesCountResponse:
4707 """Get the total number of connected resources for the given marketplace subscription Id.
4708
4709 :param request: The request body. Required.
4710 :type request: IO[bytes]
4711 :keyword content_type: Body Parameter content-type. Content type parameter for binary body.
4712 Default value is "application/json".
4713 :paramtype content_type: str
4714 :return: ConnectedResourcesCountResponse. The ConnectedResourcesCountResponse is compatible
4715 with MutableMapping
4716 :rtype: ~azure.mgmt.dynatrace.models.ConnectedResourcesCountResponse
4717 :raises ~azure.core.exceptions.HttpResponseError:
4718 """
4719
4720 @distributed_trace
4721 def get_all_connected_resources_count(
4722 self,
4723 request: Union[_models.MarketplaceSubscriptionIdRequest, _types.MarketplaceSubscriptionIdRequest, IO[bytes]],
4724 **kwargs: Any
4725 ) -> _models.ConnectedResourcesCountResponse:
4726 """Get the total number of connected resources for the given marketplace subscription Id.
4727
4728 :param request: The request body. Is either a MarketplaceSubscriptionIdRequest type or a
4729 IO[bytes] type. Required.
4730 :type request: ~azure.mgmt.dynatrace.models.MarketplaceSubscriptionIdRequest or
4731 ~azure.mgmt.dynatrace.types.MarketplaceSubscriptionIdRequest or IO[bytes]
4732 :return: ConnectedResourcesCountResponse. The ConnectedResourcesCountResponse is compatible
4733 with MutableMapping
4734 :rtype: ~azure.mgmt.dynatrace.models.ConnectedResourcesCountResponse
4735 :raises ~azure.core.exceptions.HttpResponseError:
4736 """
4737 error_map: MutableMapping = {
4738 401: ClientAuthenticationError,
4739 404: ResourceNotFoundError,
4740 409: ResourceExistsError,
4741 304: ResourceNotModifiedError,
4742 }
4743 error_map.update(kwargs.pop("error_map", {}) or {})
4744
4745 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
4746 _params = kwargs.pop("params", {}) or {}
4747
4748 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
4749 cls: ClsType[_models.ConnectedResourcesCountResponse] = kwargs.pop("cls", None)
4750
4751 content_type = content_type or "application/json"
4752 _content = None
4753 if isinstance(request, (IOBase, bytes)):
4754 _content = request
4755 else:
4756 _content = json.dumps(request, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore
4757
4758 _request = build_monitors_get_all_connected_resources_count_request(
4759 subscription_id=self._config.subscription_id,
4760 content_type=content_type,
4761 api_version=self._config.api_version,
4762 content=_content,
4763 headers=_headers,
4764 params=_params,
4765 )
4766 path_format_arguments = {
4767 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
4768 }
4769 _request.url = self._client.format_url(_request.url, **path_format_arguments)
4770
4771 _decompress = kwargs.pop("decompress", True)
4772 _stream = kwargs.pop("stream", False)
4773 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
4774 _request, stream=_stream, **kwargs
4775 )
4776
4777 response = pipeline_response.http_response
4778
4779 if response.status_code not in [200]:
4780 if _stream:
4781 try:
4782 response.read() # Load the body in memory and close the socket
4783 except (StreamConsumedError, StreamClosedError):
4784 pass
4785 map_error(status_code=response.status_code, response=response, error_map=error_map)
4786 error = _failsafe_deserialize(
4787 _models.ErrorResponse,
4788 response,
4789 )
4790 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
4791
4792 if _stream:
4793 deserialized = response.iter_bytes() if _decompress else response.iter_raw()
4794 else:
4795 deserialized = _deserialize(_models.ConnectedResourcesCountResponse, response.json())
4796
4797 if cls:
4798 return cls(pipeline_response, deserialized, {}) # type: ignore
4799
4800 return deserialized # type: ignore
4801
4802 @overload
4803 def get_marketplace_saa_s_resource_details(
4804 self,
4805 request: _models.MarketplaceSaaSResourceDetailsRequest,
4806 *,
4807 content_type: str = "application/json",
4808 **kwargs: Any
4809 ) -> _models.MarketplaceSaaSResourceDetailsResponse:
4810 """Get Marketplace SaaS resource details.
4811
4812 :param request: The request body. Required.
4813 :type request: ~azure.mgmt.dynatrace.models.MarketplaceSaaSResourceDetailsRequest
4814 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
4815 Default value is "application/json".
4816 :paramtype content_type: str
4817 :return: MarketplaceSaaSResourceDetailsResponse. The MarketplaceSaaSResourceDetailsResponse is
4818 compatible with MutableMapping
4819 :rtype: ~azure.mgmt.dynatrace.models.MarketplaceSaaSResourceDetailsResponse
4820 :raises ~azure.core.exceptions.HttpResponseError:
4821 """
4822
4823 @overload
4824 def get_marketplace_saa_s_resource_details(
4825 self,
4826 request: _types.MarketplaceSaaSResourceDetailsRequest,
4827 *,
4828 content_type: str = "application/json",
4829 **kwargs: Any
4830 ) -> _models.MarketplaceSaaSResourceDetailsResponse:
4831 """Get Marketplace SaaS resource details.
4832
4833 :param request: The request body. Required.
4834 :type request: ~azure.mgmt.dynatrace.types.MarketplaceSaaSResourceDetailsRequest
4835 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
4836 Default value is "application/json".
4837 :paramtype content_type: str
4838 :return: MarketplaceSaaSResourceDetailsResponse. The MarketplaceSaaSResourceDetailsResponse is
4839 compatible with MutableMapping
4840 :rtype: ~azure.mgmt.dynatrace.models.MarketplaceSaaSResourceDetailsResponse
4841 :raises ~azure.core.exceptions.HttpResponseError:
4842 """
4843
4844 @overload
4845 def get_marketplace_saa_s_resource_details(
4846 self, request: IO[bytes], *, content_type: str = "application/json", **kwargs: Any
4847 ) -> _models.MarketplaceSaaSResourceDetailsResponse:
4848 """Get Marketplace SaaS resource details.
4849
4850 :param request: The request body. Required.
4851 :type request: IO[bytes]
4852 :keyword content_type: Body Parameter content-type. Content type parameter for binary body.
4853 Default value is "application/json".
4854 :paramtype content_type: str
4855 :return: MarketplaceSaaSResourceDetailsResponse. The MarketplaceSaaSResourceDetailsResponse is
4856 compatible with MutableMapping
4857 :rtype: ~azure.mgmt.dynatrace.models.MarketplaceSaaSResourceDetailsResponse
4858 :raises ~azure.core.exceptions.HttpResponseError:
4859 """
4860
4861 @distributed_trace
4862 def get_marketplace_saa_s_resource_details(
4863 self,
4864 request: Union[
4865 _models.MarketplaceSaaSResourceDetailsRequest, _types.MarketplaceSaaSResourceDetailsRequest, IO[bytes]
4866 ],
4867 **kwargs: Any
4868 ) -> _models.MarketplaceSaaSResourceDetailsResponse:
4869 """Get Marketplace SaaS resource details.
4870
4871 :param request: The request body. Is either a MarketplaceSaaSResourceDetailsRequest type or a
4872 IO[bytes] type. Required.
4873 :type request: ~azure.mgmt.dynatrace.models.MarketplaceSaaSResourceDetailsRequest or
4874 ~azure.mgmt.dynatrace.types.MarketplaceSaaSResourceDetailsRequest or IO[bytes]
4875 :return: MarketplaceSaaSResourceDetailsResponse. The MarketplaceSaaSResourceDetailsResponse is
4876 compatible with MutableMapping
4877 :rtype: ~azure.mgmt.dynatrace.models.MarketplaceSaaSResourceDetailsResponse
4878 :raises ~azure.core.exceptions.HttpResponseError:
4879 """
4880 error_map: MutableMapping = {
4881 401: ClientAuthenticationError,
4882 404: ResourceNotFoundError,
4883 409: ResourceExistsError,
4884 304: ResourceNotModifiedError,
4885 }
4886 error_map.update(kwargs.pop("error_map", {}) or {})
4887
4888 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
4889 _params = kwargs.pop("params", {}) or {}
4890
4891 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
4892 cls: ClsType[_models.MarketplaceSaaSResourceDetailsResponse] = kwargs.pop("cls", None)
4893
4894 content_type = content_type or "application/json"
4895 _content = None
4896 if isinstance(request, (IOBase, bytes)):
4897 _content = request
4898 else:
4899 _content = json.dumps(request, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore
4900
4901 _request = build_monitors_get_marketplace_saa_s_resource_details_request(
4902 subscription_id=self._config.subscription_id,
4903 content_type=content_type,
4904 api_version=self._config.api_version,
4905 content=_content,
4906 headers=_headers,
4907 params=_params,
4908 )
4909 path_format_arguments = {
4910 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
4911 }
4912 _request.url = self._client.format_url(_request.url, **path_format_arguments)
4913
4914 _decompress = kwargs.pop("decompress", True)
4915 _stream = kwargs.pop("stream", False)
4916 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
4917 _request, stream=_stream, **kwargs
4918 )
4919
4920 response = pipeline_response.http_response
4921
4922 if response.status_code not in [200]:
4923 if _stream:
4924 try:
4925 response.read() # Load the body in memory and close the socket
4926 except (StreamConsumedError, StreamClosedError):
4927 pass
4928 map_error(status_code=response.status_code, response=response, error_map=error_map)
4929 error = _failsafe_deserialize(
4930 _models.ErrorResponse,
4931 response,
4932 )
4933 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
4934
4935 if _stream:
4936 deserialized = response.iter_bytes() if _decompress else response.iter_raw()
4937 else:
4938 deserialized = _deserialize(_models.MarketplaceSaaSResourceDetailsResponse, response.json())
4939
4940 if cls:
4941 return cls(pipeline_response, deserialized, {}) # type: ignore
4942
4943 return deserialized # type: ignore
4944
4945
4946class SingleSignOnOperations:
4947 """
4948 .. warning::
4949 **DO NOT** instantiate this class directly.
4950
4951 Instead, you should access the following operations through
4952 :class:`~azure.mgmt.dynatrace.DynatraceObservabilityMgmtClient`'s
4953 :attr:`single_sign_on` attribute.
4954 """
4955
4956 def __init__(self, *args, **kwargs) -> None:
4957 input_args = list(args)
4958 self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client")
4959 self._config: DynatraceObservabilityMgmtClientConfiguration = (
4960 input_args.pop(0) if input_args else kwargs.pop("config")
4961 )
4962 self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer")
4963 self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer")
4964
4965 @distributed_trace
4966 def get(
4967 self, resource_group_name: str, monitor_name: str, configuration_name: str, **kwargs: Any
4968 ) -> _models.DynatraceSingleSignOnResource:
4969 """Get a DynatraceSingleSignOnResource.
4970
4971 :param resource_group_name: The name of the resource group. The name is case insensitive.
4972 Required.
4973 :type resource_group_name: str
4974 :param monitor_name: Monitor resource name. Required.
4975 :type monitor_name: str
4976 :param configuration_name: Single Sign On Configuration Name. Required.
4977 :type configuration_name: str
4978 :return: DynatraceSingleSignOnResource. The DynatraceSingleSignOnResource is compatible with
4979 MutableMapping
4980 :rtype: ~azure.mgmt.dynatrace.models.DynatraceSingleSignOnResource
4981 :raises ~azure.core.exceptions.HttpResponseError:
4982 """
4983 error_map: MutableMapping = {
4984 401: ClientAuthenticationError,
4985 404: ResourceNotFoundError,
4986 409: ResourceExistsError,
4987 304: ResourceNotModifiedError,
4988 }
4989 error_map.update(kwargs.pop("error_map", {}) or {})
4990
4991 _headers = kwargs.pop("headers", {}) or {}
4992 _params = kwargs.pop("params", {}) or {}
4993
4994 cls: ClsType[_models.DynatraceSingleSignOnResource] = kwargs.pop("cls", None)
4995
4996 _request = build_single_sign_on_get_request(
4997 resource_group_name=resource_group_name,
4998 monitor_name=monitor_name,
4999 configuration_name=configuration_name,
5000 subscription_id=self._config.subscription_id,
5001 api_version=self._config.api_version,
5002 headers=_headers,
5003 params=_params,
5004 )
5005 path_format_arguments = {
5006 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
5007 }
5008 _request.url = self._client.format_url(_request.url, **path_format_arguments)
5009
5010 _decompress = kwargs.pop("decompress", True)
5011 _stream = kwargs.pop("stream", False)
5012 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
5013 _request, stream=_stream, **kwargs
5014 )
5015
5016 response = pipeline_response.http_response
5017
5018 if response.status_code not in [200]:
5019 if _stream:
5020 try:
5021 response.read() # Load the body in memory and close the socket
5022 except (StreamConsumedError, StreamClosedError):
5023 pass
5024 map_error(status_code=response.status_code, response=response, error_map=error_map)
5025 error = _failsafe_deserialize(
5026 _models.ErrorResponse,
5027 response,
5028 )
5029 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
5030
5031 if _stream:
5032 deserialized = response.iter_bytes() if _decompress else response.iter_raw()
5033 else:
5034 deserialized = _deserialize(_models.DynatraceSingleSignOnResource, response.json())
5035
5036 if cls:
5037 return cls(pipeline_response, deserialized, {}) # type: ignore
5038
5039 return deserialized # type: ignore
5040
5041 def _create_or_update_initial(
5042 self,
5043 resource_group_name: str,
5044 monitor_name: str,
5045 configuration_name: str,
5046 resource: Union[_models.DynatraceSingleSignOnResource, _types.DynatraceSingleSignOnResource, IO[bytes]],
5047 **kwargs: Any
5048 ) -> Iterator[bytes]:
5049 error_map: MutableMapping = {
5050 401: ClientAuthenticationError,
5051 404: ResourceNotFoundError,
5052 409: ResourceExistsError,
5053 304: ResourceNotModifiedError,
5054 }
5055 error_map.update(kwargs.pop("error_map", {}) or {})
5056
5057 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
5058 _params = kwargs.pop("params", {}) or {}
5059
5060 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
5061 cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None)
5062
5063 content_type = content_type or "application/json"
5064 _content = None
5065 if isinstance(resource, (IOBase, bytes)):
5066 _content = resource
5067 else:
5068 _content = json.dumps(resource, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore
5069
5070 _request = build_single_sign_on_create_or_update_request(
5071 resource_group_name=resource_group_name,
5072 monitor_name=monitor_name,
5073 configuration_name=configuration_name,
5074 subscription_id=self._config.subscription_id,
5075 content_type=content_type,
5076 api_version=self._config.api_version,
5077 content=_content,
5078 headers=_headers,
5079 params=_params,
5080 )
5081 path_format_arguments = {
5082 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
5083 }
5084 _request.url = self._client.format_url(_request.url, **path_format_arguments)
5085
5086 _decompress = kwargs.pop("decompress", True)
5087 _stream = True
5088 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
5089 _request, stream=_stream, **kwargs
5090 )
5091
5092 response = pipeline_response.http_response
5093
5094 if response.status_code not in [200, 201]:
5095 try:
5096 response.read() # Load the body in memory and close the socket
5097 except (StreamConsumedError, StreamClosedError):
5098 pass
5099 map_error(status_code=response.status_code, response=response, error_map=error_map)
5100 error = _failsafe_deserialize(
5101 _models.ErrorResponse,
5102 response,
5103 )
5104 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
5105
5106 response_headers = {}
5107 if response.status_code == 201:
5108 response_headers["Azure-AsyncOperation"] = self._deserialize(
5109 "str", response.headers.get("Azure-AsyncOperation")
5110 )
5111 response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After"))
5112
5113 deserialized = response.iter_bytes() if _decompress else response.iter_raw()
5114
5115 if cls:
5116 return cls(pipeline_response, deserialized, response_headers) # type: ignore
5117
5118 return deserialized # type: ignore
5119
5120 @overload
5121 def begin_create_or_update(
5122 self,
5123 resource_group_name: str,
5124 monitor_name: str,
5125 configuration_name: str,
5126 resource: _models.DynatraceSingleSignOnResource,
5127 *,
5128 content_type: str = "application/json",
5129 **kwargs: Any
5130 ) -> LROPoller[_models.DynatraceSingleSignOnResource]:
5131 """Create a DynatraceSingleSignOnResource.
5132
5133 :param resource_group_name: The name of the resource group. The name is case insensitive.
5134 Required.
5135 :type resource_group_name: str
5136 :param monitor_name: Monitor resource name. Required.
5137 :type monitor_name: str
5138 :param configuration_name: Single Sign On Configuration Name. Required.
5139 :type configuration_name: str
5140 :param resource: Resource create parameters. Required.
5141 :type resource: ~azure.mgmt.dynatrace.models.DynatraceSingleSignOnResource
5142 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
5143 Default value is "application/json".
5144 :paramtype content_type: str
5145 :return: An instance of LROPoller that returns DynatraceSingleSignOnResource. The
5146 DynatraceSingleSignOnResource is compatible with MutableMapping
5147 :rtype:
5148 ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.DynatraceSingleSignOnResource]
5149 :raises ~azure.core.exceptions.HttpResponseError:
5150 """
5151
5152 @overload
5153 def begin_create_or_update(
5154 self,
5155 resource_group_name: str,
5156 monitor_name: str,
5157 configuration_name: str,
5158 resource: _types.DynatraceSingleSignOnResource,
5159 *,
5160 content_type: str = "application/json",
5161 **kwargs: Any
5162 ) -> LROPoller[_models.DynatraceSingleSignOnResource]:
5163 """Create a DynatraceSingleSignOnResource.
5164
5165 :param resource_group_name: The name of the resource group. The name is case insensitive.
5166 Required.
5167 :type resource_group_name: str
5168 :param monitor_name: Monitor resource name. Required.
5169 :type monitor_name: str
5170 :param configuration_name: Single Sign On Configuration Name. Required.
5171 :type configuration_name: str
5172 :param resource: Resource create parameters. Required.
5173 :type resource: ~azure.mgmt.dynatrace.types.DynatraceSingleSignOnResource
5174 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
5175 Default value is "application/json".
5176 :paramtype content_type: str
5177 :return: An instance of LROPoller that returns DynatraceSingleSignOnResource. The
5178 DynatraceSingleSignOnResource is compatible with MutableMapping
5179 :rtype:
5180 ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.DynatraceSingleSignOnResource]
5181 :raises ~azure.core.exceptions.HttpResponseError:
5182 """
5183
5184 @overload
5185 def begin_create_or_update(
5186 self,
5187 resource_group_name: str,
5188 monitor_name: str,
5189 configuration_name: str,
5190 resource: IO[bytes],
5191 *,
5192 content_type: str = "application/json",
5193 **kwargs: Any
5194 ) -> LROPoller[_models.DynatraceSingleSignOnResource]:
5195 """Create a DynatraceSingleSignOnResource.
5196
5197 :param resource_group_name: The name of the resource group. The name is case insensitive.
5198 Required.
5199 :type resource_group_name: str
5200 :param monitor_name: Monitor resource name. Required.
5201 :type monitor_name: str
5202 :param configuration_name: Single Sign On Configuration Name. Required.
5203 :type configuration_name: str
5204 :param resource: Resource create parameters. Required.
5205 :type resource: IO[bytes]
5206 :keyword content_type: Body Parameter content-type. Content type parameter for binary body.
5207 Default value is "application/json".
5208 :paramtype content_type: str
5209 :return: An instance of LROPoller that returns DynatraceSingleSignOnResource. The
5210 DynatraceSingleSignOnResource is compatible with MutableMapping
5211 :rtype:
5212 ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.DynatraceSingleSignOnResource]
5213 :raises ~azure.core.exceptions.HttpResponseError:
5214 """
5215
5216 @distributed_trace
5217 def begin_create_or_update(
5218 self,
5219 resource_group_name: str,
5220 monitor_name: str,
5221 configuration_name: str,
5222 resource: Union[_models.DynatraceSingleSignOnResource, _types.DynatraceSingleSignOnResource, IO[bytes]],
5223 **kwargs: Any
5224 ) -> LROPoller[_models.DynatraceSingleSignOnResource]:
5225 """Create a DynatraceSingleSignOnResource.
5226
5227 :param resource_group_name: The name of the resource group. The name is case insensitive.
5228 Required.
5229 :type resource_group_name: str
5230 :param monitor_name: Monitor resource name. Required.
5231 :type monitor_name: str
5232 :param configuration_name: Single Sign On Configuration Name. Required.
5233 :type configuration_name: str
5234 :param resource: Resource create parameters. Is either a DynatraceSingleSignOnResource type or
5235 a IO[bytes] type. Required.
5236 :type resource: ~azure.mgmt.dynatrace.models.DynatraceSingleSignOnResource or
5237 ~azure.mgmt.dynatrace.types.DynatraceSingleSignOnResource or IO[bytes]
5238 :return: An instance of LROPoller that returns DynatraceSingleSignOnResource. The
5239 DynatraceSingleSignOnResource is compatible with MutableMapping
5240 :rtype:
5241 ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.DynatraceSingleSignOnResource]
5242 :raises ~azure.core.exceptions.HttpResponseError:
5243 """
5244 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
5245 _params = kwargs.pop("params", {}) or {}
5246
5247 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
5248 cls: ClsType[_models.DynatraceSingleSignOnResource] = kwargs.pop("cls", None)
5249 polling: Union[bool, PollingMethod] = kwargs.pop("polling", True)
5250 lro_delay = kwargs.pop("polling_interval", self._config.polling_interval)
5251 cont_token: Optional[str] = kwargs.pop("continuation_token", None)
5252 if cont_token is None:
5253 raw_result = self._create_or_update_initial(
5254 resource_group_name=resource_group_name,
5255 monitor_name=monitor_name,
5256 configuration_name=configuration_name,
5257 resource=resource,
5258 content_type=content_type,
5259 cls=lambda x, y, z: x,
5260 headers=_headers,
5261 params=_params,
5262 **kwargs
5263 )
5264 raw_result.http_response.read() # type: ignore
5265 kwargs.pop("error_map", None)
5266
5267 def get_long_running_output(pipeline_response):
5268 response = pipeline_response.http_response
5269 deserialized = _deserialize(_models.DynatraceSingleSignOnResource, response.json())
5270 if cls:
5271 return cls(pipeline_response, deserialized, {}) # type: ignore
5272 return deserialized
5273
5274 path_format_arguments = {
5275 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
5276 }
5277
5278 if polling is True:
5279 polling_method: PollingMethod = cast(
5280 PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs)
5281 )
5282 elif polling is False:
5283 polling_method = cast(PollingMethod, NoPolling())
5284 else:
5285 polling_method = polling
5286 if cont_token:
5287 return LROPoller[_models.DynatraceSingleSignOnResource].from_continuation_token(
5288 polling_method=polling_method,
5289 continuation_token=cont_token,
5290 client=self._client,
5291 deserialization_callback=get_long_running_output,
5292 )
5293 return LROPoller[_models.DynatraceSingleSignOnResource](
5294 self._client, raw_result, get_long_running_output, polling_method # type: ignore
5295 )
5296
5297 @distributed_trace
5298 def list(
5299 self, resource_group_name: str, monitor_name: str, **kwargs: Any
5300 ) -> ItemPaged["_models.DynatraceSingleSignOnResource"]:
5301 """List all DynatraceSingleSignOnResource by monitorName.
5302
5303 :param resource_group_name: The name of the resource group. The name is case insensitive.
5304 Required.
5305 :type resource_group_name: str
5306 :param monitor_name: Monitor resource name. Required.
5307 :type monitor_name: str
5308 :return: An iterator like instance of DynatraceSingleSignOnResource
5309 :rtype:
5310 ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.DynatraceSingleSignOnResource]
5311 :raises ~azure.core.exceptions.HttpResponseError:
5312 """
5313 _headers = kwargs.pop("headers", {}) or {}
5314 _params = kwargs.pop("params", {}) or {}
5315
5316 cls: ClsType[List[_models.DynatraceSingleSignOnResource]] = kwargs.pop("cls", None)
5317
5318 error_map: MutableMapping = {
5319 401: ClientAuthenticationError,
5320 404: ResourceNotFoundError,
5321 409: ResourceExistsError,
5322 304: ResourceNotModifiedError,
5323 }
5324 error_map.update(kwargs.pop("error_map", {}) or {})
5325
5326 def prepare_request(next_link=None):
5327 if not next_link:
5328
5329 _request = build_single_sign_on_list_request(
5330 resource_group_name=resource_group_name,
5331 monitor_name=monitor_name,
5332 subscription_id=self._config.subscription_id,
5333 api_version=self._config.api_version,
5334 headers=_headers,
5335 params=_params,
5336 )
5337 path_format_arguments = {
5338 "endpoint": self._serialize.url(
5339 "self._config.base_url", self._config.base_url, "str", skip_quote=True
5340 ),
5341 }
5342 _request.url = self._client.format_url(_request.url, **path_format_arguments)
5343
5344 else:
5345 # make call to next link with the client's api-version
5346 _parsed_next_link = urllib.parse.urlparse(next_link)
5347 _next_request_params = case_insensitive_dict(
5348 {
5349 key: [urllib.parse.quote(v) for v in value]
5350 for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items()
5351 }
5352 )
5353 _next_request_params["api-version"] = self._config.api_version
5354 _request = HttpRequest(
5355 "GET",
5356 urllib.parse.urljoin(next_link, _parsed_next_link.path),
5357 headers=_headers,
5358 params=_next_request_params,
5359 )
5360 path_format_arguments = {
5361 "endpoint": self._serialize.url(
5362 "self._config.base_url", self._config.base_url, "str", skip_quote=True
5363 ),
5364 }
5365 _request.url = self._client.format_url(_request.url, **path_format_arguments)
5366
5367 return _request
5368
5369 def extract_data(pipeline_response):
5370 deserialized = pipeline_response.http_response.json()
5371 list_of_elem = _deserialize(
5372 List[_models.DynatraceSingleSignOnResource],
5373 deserialized.get("value", []),
5374 )
5375 if cls:
5376 list_of_elem = cls(list_of_elem) # type: ignore
5377 return deserialized.get("nextLink") or None, iter(list_of_elem)
5378
5379 def get_next(next_link=None):
5380 _request = prepare_request(next_link)
5381
5382 _stream = False
5383 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
5384 _request, stream=_stream, **kwargs
5385 )
5386 response = pipeline_response.http_response
5387
5388 if response.status_code not in [200]:
5389 map_error(status_code=response.status_code, response=response, error_map=error_map)
5390 error = _failsafe_deserialize(
5391 _models.ErrorResponse,
5392 response,
5393 )
5394 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
5395
5396 return pipeline_response
5397
5398 return ItemPaged(get_next, extract_data)
5399
5400
5401class CreationSupportedOperations:
5402 """
5403 .. warning::
5404 **DO NOT** instantiate this class directly.
5405
5406 Instead, you should access the following operations through
5407 :class:`~azure.mgmt.dynatrace.DynatraceObservabilityMgmtClient`'s
5408 :attr:`creation_supported` attribute.
5409 """
5410
5411 def __init__(self, *args, **kwargs) -> None:
5412 input_args = list(args)
5413 self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client")
5414 self._config: DynatraceObservabilityMgmtClientConfiguration = (
5415 input_args.pop(0) if input_args else kwargs.pop("config")
5416 )
5417 self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer")
5418 self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer")
5419
5420 @distributed_trace
5421 def list(self, dynatrace_environment_id: str, **kwargs: Any) -> _models.CreateResourceSupportedResponse:
5422 """Informs if the current subscription is being already monitored for selected Dynatrace
5423 environment.
5424
5425 Informs if the current subscription is being already monitored for selected Dynatrace
5426 environment.
5427
5428 :param dynatrace_environment_id: Dynatrace Environment Id. Required.
5429 :type dynatrace_environment_id: str
5430 :return: CreateResourceSupportedResponse. The CreateResourceSupportedResponse is compatible
5431 with MutableMapping
5432 :rtype: ~azure.mgmt.dynatrace.models.CreateResourceSupportedResponse
5433 :raises ~azure.core.exceptions.HttpResponseError:
5434 """
5435 error_map: MutableMapping = {
5436 401: ClientAuthenticationError,
5437 404: ResourceNotFoundError,
5438 409: ResourceExistsError,
5439 304: ResourceNotModifiedError,
5440 }
5441 error_map.update(kwargs.pop("error_map", {}) or {})
5442
5443 _headers = kwargs.pop("headers", {}) or {}
5444 _params = kwargs.pop("params", {}) or {}
5445
5446 cls: ClsType[_models.CreateResourceSupportedResponse] = kwargs.pop("cls", None)
5447
5448 _request = build_creation_supported_list_request(
5449 dynatrace_environment_id=dynatrace_environment_id,
5450 subscription_id=self._config.subscription_id,
5451 api_version=self._config.api_version,
5452 headers=_headers,
5453 params=_params,
5454 )
5455 path_format_arguments = {
5456 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
5457 }
5458 _request.url = self._client.format_url(_request.url, **path_format_arguments)
5459
5460 _decompress = kwargs.pop("decompress", True)
5461 _stream = kwargs.pop("stream", False)
5462 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
5463 _request, stream=_stream, **kwargs
5464 )
5465
5466 response = pipeline_response.http_response
5467
5468 if response.status_code not in [200]:
5469 if _stream:
5470 try:
5471 response.read() # Load the body in memory and close the socket
5472 except (StreamConsumedError, StreamClosedError):
5473 pass
5474 map_error(status_code=response.status_code, response=response, error_map=error_map)
5475 error = _failsafe_deserialize(
5476 _models.ErrorResponse,
5477 response,
5478 )
5479 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
5480
5481 if _stream:
5482 deserialized = response.iter_bytes() if _decompress else response.iter_raw()
5483 else:
5484 deserialized = _deserialize(_models.CreateResourceSupportedResponse, response.json())
5485
5486 if cls:
5487 return cls(pipeline_response, deserialized, {}) # type: ignore
5488
5489 return deserialized # type: ignore
5490
5491 @distributed_trace
5492 def get(self, dynatrace_environment_id: str, **kwargs: Any) -> _models.CreateResourceSupportedResponse:
5493 """Informs if the current subscription is being already monitored for selected Dynatrace
5494 environment.
5495
5496 Informs if the current subscription is being already monitored for selected Dynatrace
5497 environment.
5498
5499 :param dynatrace_environment_id: Dynatrace Environment Id. Required.
5500 :type dynatrace_environment_id: str
5501 :return: CreateResourceSupportedResponse. The CreateResourceSupportedResponse is compatible
5502 with MutableMapping
5503 :rtype: ~azure.mgmt.dynatrace.models.CreateResourceSupportedResponse
5504 :raises ~azure.core.exceptions.HttpResponseError:
5505 """
5506 error_map: MutableMapping = {
5507 401: ClientAuthenticationError,
5508 404: ResourceNotFoundError,
5509 409: ResourceExistsError,
5510 304: ResourceNotModifiedError,
5511 }
5512 error_map.update(kwargs.pop("error_map", {}) or {})
5513
5514 _headers = kwargs.pop("headers", {}) or {}
5515 _params = kwargs.pop("params", {}) or {}
5516
5517 cls: ClsType[_models.CreateResourceSupportedResponse] = kwargs.pop("cls", None)
5518
5519 _request = build_creation_supported_get_request(
5520 dynatrace_environment_id=dynatrace_environment_id,
5521 subscription_id=self._config.subscription_id,
5522 api_version=self._config.api_version,
5523 headers=_headers,
5524 params=_params,
5525 )
5526 path_format_arguments = {
5527 "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True),
5528 }
5529 _request.url = self._client.format_url(_request.url, **path_format_arguments)
5530
5531 _decompress = kwargs.pop("decompress", True)
5532 _stream = kwargs.pop("stream", False)
5533 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
5534 _request, stream=_stream, **kwargs
5535 )
5536
5537 response = pipeline_response.http_response
5538
5539 if response.status_code not in [200]:
5540 if _stream:
5541 try:
5542 response.read() # Load the body in memory and close the socket
5543 except (StreamConsumedError, StreamClosedError):
5544 pass
5545 map_error(status_code=response.status_code, response=response, error_map=error_map)
5546 error = _failsafe_deserialize(
5547 _models.ErrorResponse,
5548 response,
5549 )
5550 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
5551
5552 if _stream:
5553 deserialized = response.iter_bytes() if _decompress else response.iter_raw()
5554 else:
5555 deserialized = _deserialize(_models.CreateResourceSupportedResponse, response.json())
5556
5557 if cls:
5558 return cls(pipeline_response, deserialized, {}) # type: ignore
5559
5560 return deserialized # type: ignore