1# --------------------------------------------------------------------------
2#
3# Copyright (c) Microsoft Corporation. All rights reserved.
4#
5# The MIT License (MIT)
6#
7# Permission is hereby granted, free of charge, to any person obtaining a copy
8# of this software and associated documentation files (the ""Software""), to
9# deal in the Software without restriction, including without limitation the
10# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
11# sell copies of the Software, and to permit persons to whom the Software is
12# furnished to do so, subject to the following conditions:
13#
14# The above copyright notice and this permission notice shall be included in
15# all copies or substantial portions of the Software.
16#
17# THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
23# IN THE SOFTWARE.
24#
25# --------------------------------------------------------------------------
26
27from azure.core.pipeline.policies import HttpLoggingPolicy
28from ._authentication import (
29 ARMChallengeAuthenticationPolicy,
30 AuxiliaryAuthenticationPolicy,
31)
32from ._base import ARMAutoResourceProviderRegistrationPolicy
33from ._authentication_async import (
34 AsyncARMChallengeAuthenticationPolicy,
35 AsyncAuxiliaryAuthenticationPolicy,
36)
37from ._base_async import AsyncARMAutoResourceProviderRegistrationPolicy
38
39
40class ARMHttpLoggingPolicy(HttpLoggingPolicy):
41 """HttpLoggingPolicy with ARM specific safe headers fopr loggers."""
42
43 DEFAULT_HEADERS_ALLOWLIST = HttpLoggingPolicy.DEFAULT_HEADERS_ALLOWLIST | set(
44 [
45 # https://docs.microsoft.com/azure/azure-resource-manager/management/request-limits-and-throttling#remaining-requests
46 "x-ms-ratelimit-remaining-subscription-reads",
47 "x-ms-ratelimit-remaining-subscription-writes",
48 "x-ms-ratelimit-remaining-tenant-reads",
49 "x-ms-ratelimit-remaining-tenant-writes",
50 "x-ms-ratelimit-remaining-subscription-resource-requests",
51 "x-ms-ratelimit-remaining-subscription-resource-entities-read",
52 "x-ms-ratelimit-remaining-tenant-resource-requests",
53 "x-ms-ratelimit-remaining-tenant-resource-entities-read",
54 # https://docs.microsoft.com/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors#call-rate-informational-response-headers
55 "x-ms-ratelimit-remaining-resource",
56 "x-ms-request-charge",
57 ]
58 )
59
60
61__all__ = [
62 "ARMAutoResourceProviderRegistrationPolicy",
63 "ARMChallengeAuthenticationPolicy",
64 "ARMHttpLoggingPolicy",
65 "AsyncARMAutoResourceProviderRegistrationPolicy",
66 "AsyncARMChallengeAuthenticationPolicy",
67 "AuxiliaryAuthenticationPolicy",
68 "AsyncAuxiliaryAuthenticationPolicy",
69]