Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/azure/mgmt/dynatrace/operations/_single_sign_on_operations.py: 22%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

190 statements  

1# pylint: disable=too-many-lines 

2# coding=utf-8 

3# -------------------------------------------------------------------------- 

4# Copyright (c) Microsoft Corporation. All rights reserved. 

5# Licensed under the MIT License. See License.txt in the project root for license information. 

6# Code generated by Microsoft (R) AutoRest Code Generator. 

7# Changes may cause incorrect behavior and will be lost if the code is regenerated. 

8# -------------------------------------------------------------------------- 

9from io import IOBase 

10from typing import Any, Callable, Dict, IO, Iterable, Optional, TypeVar, Union, cast, overload 

11import urllib.parse 

12 

13from azure.core.exceptions import ( 

14 ClientAuthenticationError, 

15 HttpResponseError, 

16 ResourceExistsError, 

17 ResourceNotFoundError, 

18 ResourceNotModifiedError, 

19 map_error, 

20) 

21from azure.core.paging import ItemPaged 

22from azure.core.pipeline import PipelineResponse 

23from azure.core.pipeline.transport import HttpResponse 

24from azure.core.polling import LROPoller, NoPolling, PollingMethod 

25from azure.core.rest import HttpRequest 

26from azure.core.tracing.decorator import distributed_trace 

27from azure.core.utils import case_insensitive_dict 

28from azure.mgmt.core.exceptions import ARMErrorFormat 

29from azure.mgmt.core.polling.arm_polling import ARMPolling 

30 

31from .. import models as _models 

32from .._serialization import Serializer 

33from .._vendor import _convert_request 

34 

35T = TypeVar("T") 

36ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] 

37 

38_SERIALIZER = Serializer() 

39_SERIALIZER.client_side_validation = False 

40 

41 

42def build_create_or_update_request( 

43 resource_group_name: str, monitor_name: str, configuration_name: str, subscription_id: str, **kwargs: Any 

44) -> HttpRequest: 

45 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 

46 _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 

47 

48 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-04-27")) 

49 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) 

50 accept = _headers.pop("Accept", "application/json") 

51 

52 # Construct URL 

53 _url = kwargs.pop( 

54 "template_url", 

55 "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/singleSignOnConfigurations/{configurationName}", 

56 ) # pylint: disable=line-too-long 

57 path_format_arguments = { 

58 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str", min_length=1), 

59 "resourceGroupName": _SERIALIZER.url( 

60 "resource_group_name", resource_group_name, "str", max_length=90, min_length=1 

61 ), 

62 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"), 

63 "configurationName": _SERIALIZER.url("configuration_name", configuration_name, "str"), 

64 } 

65 

66 _url: str = _url.format(**path_format_arguments) # type: ignore 

67 

68 # Construct parameters 

69 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") 

70 

71 # Construct headers 

72 if content_type is not None: 

73 _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") 

74 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") 

75 

76 return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs) 

77 

78 

79def build_get_request( 

80 resource_group_name: str, monitor_name: str, configuration_name: str, subscription_id: str, **kwargs: Any 

81) -> HttpRequest: 

82 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 

83 _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 

84 

85 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-04-27")) 

86 accept = _headers.pop("Accept", "application/json") 

87 

88 # Construct URL 

89 _url = kwargs.pop( 

90 "template_url", 

91 "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/singleSignOnConfigurations/{configurationName}", 

92 ) # pylint: disable=line-too-long 

93 path_format_arguments = { 

94 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str", min_length=1), 

95 "resourceGroupName": _SERIALIZER.url( 

96 "resource_group_name", resource_group_name, "str", max_length=90, min_length=1 

97 ), 

98 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"), 

99 "configurationName": _SERIALIZER.url("configuration_name", configuration_name, "str"), 

100 } 

101 

102 _url: str = _url.format(**path_format_arguments) # type: ignore 

103 

104 # Construct parameters 

105 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") 

106 

107 # Construct headers 

108 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") 

109 

110 return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) 

111 

112 

113def build_list_request(resource_group_name: str, monitor_name: str, subscription_id: str, **kwargs: Any) -> HttpRequest: 

114 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 

115 _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 

116 

117 api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2023-04-27")) 

118 accept = _headers.pop("Accept", "application/json") 

119 

120 # Construct URL 

121 _url = kwargs.pop( 

122 "template_url", 

123 "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/singleSignOnConfigurations", 

124 ) # pylint: disable=line-too-long 

125 path_format_arguments = { 

126 "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str", min_length=1), 

127 "resourceGroupName": _SERIALIZER.url( 

128 "resource_group_name", resource_group_name, "str", max_length=90, min_length=1 

129 ), 

130 "monitorName": _SERIALIZER.url("monitor_name", monitor_name, "str"), 

131 } 

132 

133 _url: str = _url.format(**path_format_arguments) # type: ignore 

134 

135 # Construct parameters 

136 _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") 

137 

138 # Construct headers 

139 _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") 

140 

141 return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) 

142 

143 

144class SingleSignOnOperations: 

145 """ 

146 .. warning:: 

147 **DO NOT** instantiate this class directly. 

148 

149 Instead, you should access the following operations through 

150 :class:`~azure.mgmt.dynatrace.DynatraceObservabilityMgmtClient`'s 

151 :attr:`single_sign_on` attribute. 

152 """ 

153 

154 models = _models 

155 

156 def __init__(self, *args, **kwargs): 

157 input_args = list(args) 

158 self._client = input_args.pop(0) if input_args else kwargs.pop("client") 

159 self._config = input_args.pop(0) if input_args else kwargs.pop("config") 

160 self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") 

161 self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") 

162 

163 def _create_or_update_initial( 

164 self, 

165 resource_group_name: str, 

166 monitor_name: str, 

167 configuration_name: str, 

168 resource: Union[_models.DynatraceSingleSignOnResource, IO], 

169 **kwargs: Any 

170 ) -> _models.DynatraceSingleSignOnResource: 

171 error_map = { 

172 401: ClientAuthenticationError, 

173 404: ResourceNotFoundError, 

174 409: ResourceExistsError, 

175 304: ResourceNotModifiedError, 

176 } 

177 error_map.update(kwargs.pop("error_map", {}) or {}) 

178 

179 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 

180 _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 

181 

182 api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) 

183 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) 

184 cls: ClsType[_models.DynatraceSingleSignOnResource] = kwargs.pop("cls", None) 

185 

186 content_type = content_type or "application/json" 

187 _json = None 

188 _content = None 

189 if isinstance(resource, (IOBase, bytes)): 

190 _content = resource 

191 else: 

192 _json = self._serialize.body(resource, "DynatraceSingleSignOnResource") 

193 

194 request = build_create_or_update_request( 

195 resource_group_name=resource_group_name, 

196 monitor_name=monitor_name, 

197 configuration_name=configuration_name, 

198 subscription_id=self._config.subscription_id, 

199 api_version=api_version, 

200 content_type=content_type, 

201 json=_json, 

202 content=_content, 

203 template_url=self._create_or_update_initial.metadata["url"], 

204 headers=_headers, 

205 params=_params, 

206 ) 

207 request = _convert_request(request) 

208 request.url = self._client.format_url(request.url) 

209 

210 _stream = False 

211 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access 

212 request, stream=_stream, **kwargs 

213 ) 

214 

215 response = pipeline_response.http_response 

216 

217 if response.status_code not in [200, 201]: 

218 map_error(status_code=response.status_code, response=response, error_map=error_map) 

219 error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) 

220 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) 

221 

222 if response.status_code == 200: 

223 deserialized = self._deserialize("DynatraceSingleSignOnResource", pipeline_response) 

224 

225 if response.status_code == 201: 

226 deserialized = self._deserialize("DynatraceSingleSignOnResource", pipeline_response) 

227 

228 if cls: 

229 return cls(pipeline_response, deserialized, {}) # type: ignore 

230 

231 return deserialized # type: ignore 

232 

233 _create_or_update_initial.metadata = { 

234 "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/singleSignOnConfigurations/{configurationName}" 

235 } 

236 

237 @overload 

238 def begin_create_or_update( 

239 self, 

240 resource_group_name: str, 

241 monitor_name: str, 

242 configuration_name: str, 

243 resource: _models.DynatraceSingleSignOnResource, 

244 *, 

245 content_type: str = "application/json", 

246 **kwargs: Any 

247 ) -> LROPoller[_models.DynatraceSingleSignOnResource]: 

248 """Create a DynatraceSingleSignOnResource. 

249 

250 Create a DynatraceSingleSignOnResource. 

251 

252 :param resource_group_name: The name of the resource group. The name is case insensitive. 

253 Required. 

254 :type resource_group_name: str 

255 :param monitor_name: Monitor resource name. Required. 

256 :type monitor_name: str 

257 :param configuration_name: Single Sign On Configuration Name. Required. 

258 :type configuration_name: str 

259 :param resource: Resource create parameters. Required. 

260 :type resource: ~azure.mgmt.dynatrace.models.DynatraceSingleSignOnResource 

261 :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. 

262 Default value is "application/json". 

263 :paramtype content_type: str 

264 :keyword callable cls: A custom type or function that will be passed the direct response 

265 :keyword str continuation_token: A continuation token to restart a poller from a saved state. 

266 :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this 

267 operation to not poll, or pass in your own initialized polling object for a personal polling 

268 strategy. 

269 :paramtype polling: bool or ~azure.core.polling.PollingMethod 

270 :keyword int polling_interval: Default waiting time between two polls for LRO operations if no 

271 Retry-After header is present. 

272 :return: An instance of LROPoller that returns either DynatraceSingleSignOnResource or the 

273 result of cls(response) 

274 :rtype: 

275 ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.DynatraceSingleSignOnResource] 

276 :raises ~azure.core.exceptions.HttpResponseError: 

277 """ 

278 

279 @overload 

280 def begin_create_or_update( 

281 self, 

282 resource_group_name: str, 

283 monitor_name: str, 

284 configuration_name: str, 

285 resource: IO, 

286 *, 

287 content_type: str = "application/json", 

288 **kwargs: Any 

289 ) -> LROPoller[_models.DynatraceSingleSignOnResource]: 

290 """Create a DynatraceSingleSignOnResource. 

291 

292 Create a DynatraceSingleSignOnResource. 

293 

294 :param resource_group_name: The name of the resource group. The name is case insensitive. 

295 Required. 

296 :type resource_group_name: str 

297 :param monitor_name: Monitor resource name. Required. 

298 :type monitor_name: str 

299 :param configuration_name: Single Sign On Configuration Name. Required. 

300 :type configuration_name: str 

301 :param resource: Resource create parameters. Required. 

302 :type resource: IO 

303 :keyword content_type: Body Parameter content-type. Content type parameter for binary body. 

304 Default value is "application/json". 

305 :paramtype content_type: str 

306 :keyword callable cls: A custom type or function that will be passed the direct response 

307 :keyword str continuation_token: A continuation token to restart a poller from a saved state. 

308 :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this 

309 operation to not poll, or pass in your own initialized polling object for a personal polling 

310 strategy. 

311 :paramtype polling: bool or ~azure.core.polling.PollingMethod 

312 :keyword int polling_interval: Default waiting time between two polls for LRO operations if no 

313 Retry-After header is present. 

314 :return: An instance of LROPoller that returns either DynatraceSingleSignOnResource or the 

315 result of cls(response) 

316 :rtype: 

317 ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.DynatraceSingleSignOnResource] 

318 :raises ~azure.core.exceptions.HttpResponseError: 

319 """ 

320 

321 @distributed_trace 

322 def begin_create_or_update( 

323 self, 

324 resource_group_name: str, 

325 monitor_name: str, 

326 configuration_name: str, 

327 resource: Union[_models.DynatraceSingleSignOnResource, IO], 

328 **kwargs: Any 

329 ) -> LROPoller[_models.DynatraceSingleSignOnResource]: 

330 """Create a DynatraceSingleSignOnResource. 

331 

332 Create a DynatraceSingleSignOnResource. 

333 

334 :param resource_group_name: The name of the resource group. The name is case insensitive. 

335 Required. 

336 :type resource_group_name: str 

337 :param monitor_name: Monitor resource name. Required. 

338 :type monitor_name: str 

339 :param configuration_name: Single Sign On Configuration Name. Required. 

340 :type configuration_name: str 

341 :param resource: Resource create parameters. Is either a DynatraceSingleSignOnResource type or 

342 a IO type. Required. 

343 :type resource: ~azure.mgmt.dynatrace.models.DynatraceSingleSignOnResource or IO 

344 :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. 

345 Default value is None. 

346 :paramtype content_type: str 

347 :keyword callable cls: A custom type or function that will be passed the direct response 

348 :keyword str continuation_token: A continuation token to restart a poller from a saved state. 

349 :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this 

350 operation to not poll, or pass in your own initialized polling object for a personal polling 

351 strategy. 

352 :paramtype polling: bool or ~azure.core.polling.PollingMethod 

353 :keyword int polling_interval: Default waiting time between two polls for LRO operations if no 

354 Retry-After header is present. 

355 :return: An instance of LROPoller that returns either DynatraceSingleSignOnResource or the 

356 result of cls(response) 

357 :rtype: 

358 ~azure.core.polling.LROPoller[~azure.mgmt.dynatrace.models.DynatraceSingleSignOnResource] 

359 :raises ~azure.core.exceptions.HttpResponseError: 

360 """ 

361 _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) 

362 _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 

363 

364 api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) 

365 content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) 

366 cls: ClsType[_models.DynatraceSingleSignOnResource] = kwargs.pop("cls", None) 

367 polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) 

368 lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) 

369 cont_token: Optional[str] = kwargs.pop("continuation_token", None) 

370 if cont_token is None: 

371 raw_result = self._create_or_update_initial( 

372 resource_group_name=resource_group_name, 

373 monitor_name=monitor_name, 

374 configuration_name=configuration_name, 

375 resource=resource, 

376 api_version=api_version, 

377 content_type=content_type, 

378 cls=lambda x, y, z: x, 

379 headers=_headers, 

380 params=_params, 

381 **kwargs 

382 ) 

383 kwargs.pop("error_map", None) 

384 

385 def get_long_running_output(pipeline_response): 

386 deserialized = self._deserialize("DynatraceSingleSignOnResource", pipeline_response) 

387 if cls: 

388 return cls(pipeline_response, deserialized, {}) 

389 return deserialized 

390 

391 if polling is True: 

392 polling_method: PollingMethod = cast( 

393 PollingMethod, ARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs) 

394 ) 

395 elif polling is False: 

396 polling_method = cast(PollingMethod, NoPolling()) 

397 else: 

398 polling_method = polling 

399 if cont_token: 

400 return LROPoller.from_continuation_token( 

401 polling_method=polling_method, 

402 continuation_token=cont_token, 

403 client=self._client, 

404 deserialization_callback=get_long_running_output, 

405 ) 

406 return LROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore 

407 

408 begin_create_or_update.metadata = { 

409 "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/singleSignOnConfigurations/{configurationName}" 

410 } 

411 

412 @distributed_trace 

413 def get( 

414 self, resource_group_name: str, monitor_name: str, configuration_name: str, **kwargs: Any 

415 ) -> _models.DynatraceSingleSignOnResource: 

416 """Get a DynatraceSingleSignOnResource. 

417 

418 Get a DynatraceSingleSignOnResource. 

419 

420 :param resource_group_name: The name of the resource group. The name is case insensitive. 

421 Required. 

422 :type resource_group_name: str 

423 :param monitor_name: Monitor resource name. Required. 

424 :type monitor_name: str 

425 :param configuration_name: Single Sign On Configuration Name. Required. 

426 :type configuration_name: str 

427 :keyword callable cls: A custom type or function that will be passed the direct response 

428 :return: DynatraceSingleSignOnResource or the result of cls(response) 

429 :rtype: ~azure.mgmt.dynatrace.models.DynatraceSingleSignOnResource 

430 :raises ~azure.core.exceptions.HttpResponseError: 

431 """ 

432 error_map = { 

433 401: ClientAuthenticationError, 

434 404: ResourceNotFoundError, 

435 409: ResourceExistsError, 

436 304: ResourceNotModifiedError, 

437 } 

438 error_map.update(kwargs.pop("error_map", {}) or {}) 

439 

440 _headers = kwargs.pop("headers", {}) or {} 

441 _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 

442 

443 api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) 

444 cls: ClsType[_models.DynatraceSingleSignOnResource] = kwargs.pop("cls", None) 

445 

446 request = build_get_request( 

447 resource_group_name=resource_group_name, 

448 monitor_name=monitor_name, 

449 configuration_name=configuration_name, 

450 subscription_id=self._config.subscription_id, 

451 api_version=api_version, 

452 template_url=self.get.metadata["url"], 

453 headers=_headers, 

454 params=_params, 

455 ) 

456 request = _convert_request(request) 

457 request.url = self._client.format_url(request.url) 

458 

459 _stream = False 

460 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access 

461 request, stream=_stream, **kwargs 

462 ) 

463 

464 response = pipeline_response.http_response 

465 

466 if response.status_code not in [200]: 

467 map_error(status_code=response.status_code, response=response, error_map=error_map) 

468 error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) 

469 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) 

470 

471 deserialized = self._deserialize("DynatraceSingleSignOnResource", pipeline_response) 

472 

473 if cls: 

474 return cls(pipeline_response, deserialized, {}) 

475 

476 return deserialized 

477 

478 get.metadata = { 

479 "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/singleSignOnConfigurations/{configurationName}" 

480 } 

481 

482 @distributed_trace 

483 def list( 

484 self, resource_group_name: str, monitor_name: str, **kwargs: Any 

485 ) -> Iterable["_models.DynatraceSingleSignOnResource"]: 

486 """List all DynatraceSingleSignOnResource by monitorName. 

487 

488 List all DynatraceSingleSignOnResource by monitorName. 

489 

490 :param resource_group_name: The name of the resource group. The name is case insensitive. 

491 Required. 

492 :type resource_group_name: str 

493 :param monitor_name: Monitor resource name. Required. 

494 :type monitor_name: str 

495 :keyword callable cls: A custom type or function that will be passed the direct response 

496 :return: An iterator like instance of either DynatraceSingleSignOnResource or the result of 

497 cls(response) 

498 :rtype: 

499 ~azure.core.paging.ItemPaged[~azure.mgmt.dynatrace.models.DynatraceSingleSignOnResource] 

500 :raises ~azure.core.exceptions.HttpResponseError: 

501 """ 

502 _headers = kwargs.pop("headers", {}) or {} 

503 _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) 

504 

505 api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) 

506 cls: ClsType[_models.DynatraceSingleSignOnResourceListResult] = kwargs.pop("cls", None) 

507 

508 error_map = { 

509 401: ClientAuthenticationError, 

510 404: ResourceNotFoundError, 

511 409: ResourceExistsError, 

512 304: ResourceNotModifiedError, 

513 } 

514 error_map.update(kwargs.pop("error_map", {}) or {}) 

515 

516 def prepare_request(next_link=None): 

517 if not next_link: 

518 

519 request = build_list_request( 

520 resource_group_name=resource_group_name, 

521 monitor_name=monitor_name, 

522 subscription_id=self._config.subscription_id, 

523 api_version=api_version, 

524 template_url=self.list.metadata["url"], 

525 headers=_headers, 

526 params=_params, 

527 ) 

528 request = _convert_request(request) 

529 request.url = self._client.format_url(request.url) 

530 

531 else: 

532 # make call to next link with the client's api-version 

533 _parsed_next_link = urllib.parse.urlparse(next_link) 

534 _next_request_params = case_insensitive_dict( 

535 { 

536 key: [urllib.parse.quote(v) for v in value] 

537 for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() 

538 } 

539 ) 

540 _next_request_params["api-version"] = self._config.api_version 

541 request = HttpRequest( 

542 "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params 

543 ) 

544 request = _convert_request(request) 

545 request.url = self._client.format_url(request.url) 

546 request.method = "GET" 

547 return request 

548 

549 def extract_data(pipeline_response): 

550 deserialized = self._deserialize("DynatraceSingleSignOnResourceListResult", pipeline_response) 

551 list_of_elem = deserialized.value 

552 if cls: 

553 list_of_elem = cls(list_of_elem) # type: ignore 

554 return deserialized.next_link or None, iter(list_of_elem) 

555 

556 def get_next(next_link=None): 

557 request = prepare_request(next_link) 

558 

559 _stream = False 

560 pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access 

561 request, stream=_stream, **kwargs 

562 ) 

563 response = pipeline_response.http_response 

564 

565 if response.status_code not in [200]: 

566 map_error(status_code=response.status_code, response=response, error_map=error_map) 

567 error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) 

568 raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) 

569 

570 return pipeline_response 

571 

572 return ItemPaged(get_next, extract_data) 

573 

574 list.metadata = { 

575 "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/singleSignOnConfigurations" 

576 }