Skip to content

Commit e833df0

Browse files
authored
KV aiohttp by default (Azure#6563)
* Aiohttp default async transport * Record keys with aiohttp * Record secrets with aiohttp
1 parent f583901 commit e833df0

27 files changed

+9104
-11449
lines changed

sdk/keyvault/azure-keyvault-keys/azure/keyvault/keys/_shared/async_client_base.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from azure.core.configuration import Configuration
77
from azure.core.pipeline import AsyncPipeline
88
from azure.core.pipeline.policies.distributed_tracing import DistributedTracingPolicy
9-
from azure.core.pipeline.transport import AsyncioRequestsTransport, HttpTransport
9+
from azure.core.pipeline.transport import AsyncHttpTransport
1010
from msrest.serialization import Model
1111

1212
from ._generated import KeyVaultClient
@@ -64,7 +64,7 @@ def __init__(
6464
self,
6565
vault_url: str,
6666
credential: "TokenCredential",
67-
transport: HttpTransport = None,
67+
transport: AsyncHttpTransport = None,
6868
api_version: str = None,
6969
**kwargs: Any
7070
) -> None:
@@ -91,7 +91,7 @@ def __init__(
9191
self._client = KeyVaultClient(credential, api_version=api_version, pipeline=pipeline, aio=True)
9292

9393
@staticmethod
94-
def _build_pipeline(config: Configuration, transport: HttpTransport, **kwargs: Any) -> AsyncPipeline:
94+
def _build_pipeline(config: Configuration, transport: AsyncHttpTransport, **kwargs: Any) -> AsyncPipeline:
9595
policies = [
9696
config.headers_policy,
9797
config.user_agent_policy,
@@ -100,11 +100,12 @@ def _build_pipeline(config: Configuration, transport: HttpTransport, **kwargs: A
100100
config.retry_policy,
101101
config.authentication_policy,
102102
config.logging_policy,
103-
DistributedTracingPolicy()
103+
DistributedTracingPolicy(),
104104
]
105105

106106
if transport is None:
107-
transport = AsyncioRequestsTransport(**kwargs)
107+
from azure.core.pipeline.transport import AioHttpTransport
108+
transport = AioHttpTransport(**kwargs)
108109

109110
return AsyncPipeline(transport, policies=policies)
110111

sdk/keyvault/azure-keyvault-keys/tests/keys_async_preparer.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,31 @@
66
from unittest.mock import Mock
77

88
from azure.core.credentials import AccessToken
9+
from azure.core.pipeline.transport import AioHttpTransport
910
from azure.identity.aio import EnvironmentCredential
1011

12+
from multidict import CIMultiDict, CIMultiDictProxy
13+
1114
from keys_preparer import VaultClientPreparer
1215

1316
from keys_vault_client_async import VaultClient
1417

1518

19+
class AiohttpTestTransport(AioHttpTransport):
20+
"""Workaround to vcrpy bug: https://github.com/kevin1024/vcrpy/pull/461
21+
"""
22+
async def send(self, request, **config):
23+
response = await super(AiohttpTestTransport, self).send(request, **config)
24+
if not isinstance(response.headers, CIMultiDictProxy):
25+
response.headers = CIMultiDictProxy(CIMultiDict(response.internal_response.headers))
26+
response.content_type = response.headers.get("content-type")
27+
return response
28+
29+
1630
class AsyncVaultClientPreparer(VaultClientPreparer):
1731
def create_vault_client(self, vault_uri):
1832
if self.is_live:
1933
credential = EnvironmentCredential()
2034
else:
2135
credential = Mock(get_token=asyncio.coroutine(lambda _: AccessToken("fake-token", 0)))
22-
return VaultClient(vault_uri, credential)
36+
return VaultClient(vault_uri, credential, transport=AiohttpTestTransport())

sdk/keyvault/azure-keyvault-keys/tests/recordings/test_keys_async.test_backup_restore.yaml

Lines changed: 120 additions & 174 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)