Skip to content

Commit 227c700

Browse files
authored
update pipeline (Azure#18238)
* update pipeline * update * pylint fix * update * update
1 parent fef0301 commit 227c700

File tree

6 files changed

+45
-56
lines changed

6 files changed

+45
-56
lines changed

sdk/core/azure-mgmt-core/azure/mgmt/core/_async_pipeline_client.py

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,8 @@
2323
# IN THE SOFTWARE.
2424
#
2525
# --------------------------------------------------------------------------
26+
from collections.abc import Iterable
2627
from azure.core import AsyncPipelineClient
27-
from azure.core.pipeline.policies import (
28-
ContentDecodePolicy,
29-
DistributedTracingPolicy,
30-
RequestIdPolicy,
31-
)
3228
from .policies import AsyncARMAutoResourceProviderRegistrationPolicy, ARMHttpLoggingPolicy
3329

3430

@@ -37,8 +33,14 @@ class AsyncARMPipelineClient(AsyncPipelineClient):
3733
3834
:param str base_url: URL for the request.
3935
:keyword AsyncPipeline pipeline: If omitted, a Pipeline object is created and returned.
40-
:keyword list[HTTPPolicy] policies: If omitted, the standard policies of the configuration object is used.
41-
:keyword HttpTransport transport: If omitted, RequestsTransport is used for synchronous transport.
36+
:keyword list[AsyncHTTPPolicy] policies: If omitted, the standard policies of the configuration object is used.
37+
:keyword per_call_policies: If specified, the policies will be added into the policy list before RetryPolicy
38+
:paramtype per_call_policies: Union[AsyncHTTPPolicy, SansIOHTTPPolicy,
39+
list[AsyncHTTPPolicy], list[SansIOHTTPPolicy]]
40+
:keyword per_retry_policies: If specified, the policies will be added into the policy list after RetryPolicy
41+
:paramtype per_retry_policies: Union[AsyncHTTPPolicy, SansIOHTTPPolicy,
42+
list[AsyncHTTPPolicy], list[SansIOHTTPPolicy]]
43+
:keyword AsyncHttpTransport transport: If omitted, AioHttpTransport is used for asynchronous transport.
4244
"""
4345

4446
def __init__(self, base_url, **kwargs):
@@ -47,23 +49,15 @@ def __init__(self, base_url, **kwargs):
4749
raise ValueError(
4850
"Current implementation requires to pass 'config' if you don't pass 'policies'"
4951
)
50-
kwargs["policies"] = self._default_policies(**kwargs)
52+
per_call_policies = kwargs.get('per_call_policies', [])
53+
if isinstance(per_call_policies, Iterable):
54+
per_call_policies.append(AsyncARMAutoResourceProviderRegistrationPolicy())
55+
else:
56+
per_call_policies = [per_call_policies,
57+
AsyncARMAutoResourceProviderRegistrationPolicy()]
58+
kwargs["per_call_policies"] = per_call_policies
59+
config = kwargs.get('config')
60+
if not config.http_logging_policy:
61+
config.http_logging_policy = kwargs.get('http_logging_policy', ARMHttpLoggingPolicy(**kwargs))
62+
kwargs["config"] = config
5163
super(AsyncARMPipelineClient, self).__init__(base_url, **kwargs)
52-
53-
@staticmethod
54-
def _default_policies(config, **kwargs):
55-
return [
56-
RequestIdPolicy(**kwargs),
57-
AsyncARMAutoResourceProviderRegistrationPolicy(),
58-
config.headers_policy,
59-
config.user_agent_policy,
60-
config.proxy_policy,
61-
ContentDecodePolicy(**kwargs),
62-
config.redirect_policy,
63-
config.retry_policy,
64-
config.authentication_policy,
65-
config.custom_hook_policy,
66-
config.logging_policy,
67-
DistributedTracingPolicy(**kwargs),
68-
config.http_logging_policy or ARMHttpLoggingPolicy(**kwargs),
69-
]

sdk/core/azure-mgmt-core/azure/mgmt/core/_pipeline_client.py

Lines changed: 19 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,11 @@
2323
# IN THE SOFTWARE.
2424
#
2525
# --------------------------------------------------------------------------
26+
try:
27+
from collections.abc import Iterable
28+
except ImportError:
29+
from collections import Iterable
2630
from azure.core import PipelineClient
27-
from azure.core.pipeline.policies import (
28-
ContentDecodePolicy,
29-
DistributedTracingPolicy,
30-
RequestIdPolicy,
31-
)
3231
from .policies import ARMAutoResourceProviderRegistrationPolicy, ARMHttpLoggingPolicy
3332

3433

@@ -38,6 +37,10 @@ class ARMPipelineClient(PipelineClient):
3837
:param str base_url: URL for the request.
3938
:keyword Pipeline pipeline: If omitted, a Pipeline object is created and returned.
4039
:keyword list[HTTPPolicy] policies: If omitted, the standard policies of the configuration object is used.
40+
:keyword per_call_policies: If specified, the policies will be added into the policy list before RetryPolicy
41+
:paramtype per_call_policies: Union[HTTPPolicy, SansIOHTTPPolicy, list[HTTPPolicy], list[SansIOHTTPPolicy]]
42+
:keyword per_retry_policies: If specified, the policies will be added into the policy list after RetryPolicy
43+
:paramtype per_retry_policies: Union[HTTPPolicy, SansIOHTTPPolicy, list[HTTPPolicy], list[SansIOHTTPPolicy]]
4144
:keyword HttpTransport transport: If omitted, RequestsTransport is used for synchronous transport.
4245
"""
4346

@@ -47,23 +50,15 @@ def __init__(self, base_url, **kwargs):
4750
raise ValueError(
4851
"Current implementation requires to pass 'config' if you don't pass 'policies'"
4952
)
50-
kwargs["policies"] = self._default_policies(**kwargs)
53+
per_call_policies = kwargs.get('per_call_policies', [])
54+
if isinstance(per_call_policies, Iterable):
55+
per_call_policies.append(ARMAutoResourceProviderRegistrationPolicy())
56+
else:
57+
per_call_policies = [per_call_policies,
58+
ARMAutoResourceProviderRegistrationPolicy()]
59+
kwargs["per_call_policies"] = per_call_policies
60+
config = kwargs.get('config')
61+
if not config.http_logging_policy:
62+
config.http_logging_policy = kwargs.get('http_logging_policy', ARMHttpLoggingPolicy(**kwargs))
63+
kwargs["config"] = config
5164
super(ARMPipelineClient, self).__init__(base_url, **kwargs)
52-
53-
@staticmethod
54-
def _default_policies(config, **kwargs):
55-
return [
56-
RequestIdPolicy(**kwargs),
57-
ARMAutoResourceProviderRegistrationPolicy(),
58-
config.headers_policy,
59-
config.user_agent_policy,
60-
config.proxy_policy,
61-
ContentDecodePolicy(**kwargs),
62-
config.redirect_policy,
63-
config.retry_policy,
64-
config.authentication_policy,
65-
config.custom_hook_policy,
66-
config.logging_policy,
67-
DistributedTracingPolicy(**kwargs),
68-
config.http_logging_policy or ARMHttpLoggingPolicy(**kwargs),
69-
]

sdk/core/azure-mgmt-core/setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
'pytyped': ['py.typed'],
6969
},
7070
install_requires=[
71-
"azure-core<2.0.0,>=1.9.0",
71+
"azure-core<2.0.0,>=1.13.0",
7272
],
7373
extras_require={
7474
":python_version<'3.0'": ['azure-mgmt-nspkg'],

sdk/core/azure-mgmt-core/tests/asynctests/test_policies_async.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
def test_default_http_logging_policy():
3131
config = Configuration()
3232
pipeline_client = AsyncARMPipelineClient(base_url="test", config=config)
33-
http_logging_policy = pipeline_client._default_policies(config=config)[-1]
33+
http_logging_policy = pipeline_client._pipeline._impl_policies[-1]._policy
3434
assert http_logging_policy.allowed_header_names == ARMHttpLoggingPolicy.DEFAULT_HEADERS_WHITELIST
3535

3636
def test_pass_in_http_logging_policy():
@@ -42,5 +42,5 @@ def test_pass_in_http_logging_policy():
4242
config.http_logging_policy = http_logging_policy
4343

4444
pipeline_client = AsyncARMPipelineClient(base_url="test", config=config)
45-
http_logging_policy = pipeline_client._default_policies(config=config)[-1]
45+
http_logging_policy = pipeline_client._pipeline._impl_policies[-1]._policy
4646
assert http_logging_policy.allowed_header_names == ARMHttpLoggingPolicy.DEFAULT_HEADERS_WHITELIST.union({"x-ms-added-header"})

sdk/core/azure-mgmt-core/tests/test_policies.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ def test_register_failed_policy():
171171
def test_default_http_logging_policy():
172172
config = Configuration()
173173
pipeline_client = ARMPipelineClient(base_url="test", config=config)
174-
http_logging_policy = pipeline_client._default_policies(config=config)[-1]
174+
http_logging_policy = pipeline_client._pipeline._impl_policies[-1]._policy
175175
assert http_logging_policy.allowed_header_names == ARMHttpLoggingPolicy.DEFAULT_HEADERS_WHITELIST
176176

177177
def test_pass_in_http_logging_policy():
@@ -183,5 +183,5 @@ def test_pass_in_http_logging_policy():
183183
config.http_logging_policy = http_logging_policy
184184

185185
pipeline_client = ARMPipelineClient(base_url="test", config=config)
186-
http_logging_policy = pipeline_client._default_policies(config=config)[-1]
186+
http_logging_policy = pipeline_client._pipeline._impl_policies[-1]._policy
187187
assert http_logging_policy.allowed_header_names == ARMHttpLoggingPolicy.DEFAULT_HEADERS_WHITELIST.union({"x-ms-added-header"})

shared_requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ six>=1.11.0
123123
isodate>=0.6.0
124124
avro<2.0.0,>=1.10.0
125125
#override azure azure-keyvault~=1.0
126-
#override azure-mgmt-core azure-core<2.0.0,>=1.9.0
126+
#override azure-mgmt-core azure-core<2.0.0,>=1.13.0
127127
#override azure-containerregistry azure-core>=1.4.0,<2.0.0
128128
#override azure-core-tracing-opencensus azure-core<2.0.0,>=1.0.0
129129
#override azure-core-tracing-opentelemetry azure-core<2.0.0,>=1.13.0

0 commit comments

Comments
 (0)