From 71777d5026dedbee48588b08e08fd79b4a50994b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?McCoy=20Pati=C3=B1o?= Date: Wed, 27 Jan 2021 14:25:39 -0800 Subject: [PATCH 01/11] Regenerate code, update async client, update msrest req --- .../_generated/aio/_key_vault_client_async.py | 4 +- .../_generated/aio/_operations_mixin_async.py | 10 +- .../_generated/v7_2_preview/_configuration.py | 14 +- .../v7_2_preview/_key_vault_client.py | 13 +- .../_generated/v7_2_preview/_metadata.json | 131 ---------------- .../_generated/v7_2_preview/aio/__init__.py | 2 +- ...nfiguration_async.py => _configuration.py} | 18 ++- ...t_client_async.py => _key_vault_client.py} | 27 ++-- .../v7_2_preview/aio/operations/__init__.py | 17 ++ .../_key_vault_client_operations.py} | 146 +++++++++++------- .../_role_assignments_operations.py} | 70 +++++---- .../_role_definitions_operations.py} | 33 ++-- .../aio/operations_async/__init__.py | 15 -- .../v7_2_preview/models/__init__.py | 4 +- .../models/_key_vault_client_enums.py | 4 +- .../_generated/v7_2_preview/models/_models.py | 48 +++--- .../v7_2_preview/models/_models_py3.py | 48 +++--- .../v7_2_preview/operations/__init__.py | 4 +- .../_key_vault_client_operations.py | 146 +++++++++++------- .../_role_assignments_operations.py | 70 +++++---- .../_role_definitions_operations.py | 33 ++-- .../azure-keyvault-administration/setup.py | 3 +- 22 files changed, 431 insertions(+), 429 deletions(-) delete mode 100644 sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/_metadata.json rename sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/{_configuration_async.py => _configuration.py} (68%) rename sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/{_key_vault_client_async.py => _key_vault_client.py} (69%) create mode 100644 sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/__init__.py rename sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/{operations_async/_key_vault_client_operations_async.py => operations/_key_vault_client_operations.py} (79%) rename sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/{operations_async/_role_assignments_operations_async.py => operations/_role_assignments_operations.py} (85%) rename sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/{operations_async/_role_definitions_operations_async.py => operations/_role_definitions_operations.py} (92%) delete mode 100644 sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations_async/__init__.py diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/aio/_key_vault_client_async.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/aio/_key_vault_client_async.py index 24bb6d619c51..8776ff298fff 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/aio/_key_vault_client_async.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/aio/_key_vault_client_async.py @@ -89,7 +89,7 @@ def role_assignments(self): """ api_version = self._get_api_version('role_assignments') if api_version == '7.2-preview': - from ..v7_2_preview.aio.operations_async import RoleAssignmentsOperations as OperationClass + from ..v7_2_preview.aio.operations import RoleAssignmentsOperations as OperationClass else: raise NotImplementedError("APIVersion {} is not available".format(api_version)) return OperationClass(self._client, self._config, Serializer(self._models_dict(api_version)), Deserializer(self._models_dict(api_version))) @@ -102,7 +102,7 @@ def role_definitions(self): """ api_version = self._get_api_version('role_definitions') if api_version == '7.2-preview': - from ..v7_2_preview.aio.operations_async import RoleDefinitionsOperations as OperationClass + from ..v7_2_preview.aio.operations import RoleDefinitionsOperations as OperationClass else: raise NotImplementedError("APIVersion {} is not available".format(api_version)) return OperationClass(self._client, self._config, Serializer(self._models_dict(api_version)), Deserializer(self._models_dict(api_version))) diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/aio/_operations_mixin_async.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/aio/_operations_mixin_async.py index 19f1dfa324e2..e7adad6c1fa6 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/aio/_operations_mixin_async.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/aio/_operations_mixin_async.py @@ -47,7 +47,7 @@ async def begin_full_backup( """ api_version = self._get_api_version('begin_full_backup') if api_version == '7.2-preview': - from ..v7_2_preview.aio.operations_async import KeyVaultClientOperationsMixin as OperationClass + from ..v7_2_preview.aio.operations import KeyVaultClientOperationsMixin as OperationClass else: raise NotImplementedError("APIVersion {} is not available".format(api_version)) mixin_instance = OperationClass() @@ -83,7 +83,7 @@ async def begin_full_restore_operation( """ api_version = self._get_api_version('begin_full_restore_operation') if api_version == '7.2-preview': - from ..v7_2_preview.aio.operations_async import KeyVaultClientOperationsMixin as OperationClass + from ..v7_2_preview.aio.operations import KeyVaultClientOperationsMixin as OperationClass else: raise NotImplementedError("APIVersion {} is not available".format(api_version)) mixin_instance = OperationClass() @@ -122,7 +122,7 @@ async def begin_selective_key_restore_operation( """ api_version = self._get_api_version('begin_selective_key_restore_operation') if api_version == '7.2-preview': - from ..v7_2_preview.aio.operations_async import KeyVaultClientOperationsMixin as OperationClass + from ..v7_2_preview.aio.operations import KeyVaultClientOperationsMixin as OperationClass else: raise NotImplementedError("APIVersion {} is not available".format(api_version)) mixin_instance = OperationClass() @@ -151,7 +151,7 @@ async def full_backup_status( """ api_version = self._get_api_version('full_backup_status') if api_version == '7.2-preview': - from ..v7_2_preview.aio.operations_async import KeyVaultClientOperationsMixin as OperationClass + from ..v7_2_preview.aio.operations import KeyVaultClientOperationsMixin as OperationClass else: raise NotImplementedError("APIVersion {} is not available".format(api_version)) mixin_instance = OperationClass() @@ -180,7 +180,7 @@ async def restore_status( """ api_version = self._get_api_version('restore_status') if api_version == '7.2-preview': - from ..v7_2_preview.aio.operations_async import KeyVaultClientOperationsMixin as OperationClass + from ..v7_2_preview.aio.operations import KeyVaultClientOperationsMixin as OperationClass else: raise NotImplementedError("APIVersion {} is not available".format(api_version)) mixin_instance = OperationClass() diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/_configuration.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/_configuration.py index f6a651dad142..5ca1d669a773 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/_configuration.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/_configuration.py @@ -10,11 +10,14 @@ from azure.core.configuration import Configuration from azure.core.pipeline import policies +from azure.mgmt.core.policies import ARMHttpLoggingPolicy if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports from typing import Any + from azure.core.credentials import TokenCredential + VERSION = "unknown" class KeyVaultClientConfiguration(Configuration): @@ -23,16 +26,23 @@ class KeyVaultClientConfiguration(Configuration): Note that all parameters used to create this instance are saved as instance attributes. + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials.TokenCredential """ def __init__( self, + credential, # type: "TokenCredential" **kwargs # type: Any ): # type: (...) -> None + if credential is None: + raise ValueError("Parameter 'credential' must not be None.") super(KeyVaultClientConfiguration, self).__init__(**kwargs) + self.credential = credential self.api_version = "7.2-preview" + self.credential_scopes = kwargs.pop('credential_scopes', ['https://management.azure.com/.default']) kwargs.setdefault('sdk_moniker', 'keyvault/{}'.format(VERSION)) self._configure(**kwargs) @@ -45,8 +55,10 @@ def _configure( self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs) self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs) self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs) - self.http_logging_policy = kwargs.get('http_logging_policy') or policies.HttpLoggingPolicy(**kwargs) + self.http_logging_policy = kwargs.get('http_logging_policy') or ARMHttpLoggingPolicy(**kwargs) self.retry_policy = kwargs.get('retry_policy') or policies.RetryPolicy(**kwargs) self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs) self.redirect_policy = kwargs.get('redirect_policy') or policies.RedirectPolicy(**kwargs) self.authentication_policy = kwargs.get('authentication_policy') + if self.credential and not self.authentication_policy: + self.authentication_policy = policies.BearerTokenCredentialPolicy(self.credential, *self.credential_scopes, **kwargs) diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/_key_vault_client.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/_key_vault_client.py index 91acb44b0c6b..dd0e43bbbc19 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/_key_vault_client.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/_key_vault_client.py @@ -8,17 +8,19 @@ from typing import TYPE_CHECKING -from azure.core import PipelineClient +from azure.mgmt.core import ARMPipelineClient from msrest import Deserializer, Serializer if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports from typing import Any + from azure.core.credentials import TokenCredential + from ._configuration import KeyVaultClientConfiguration -from .operations import KeyVaultClientOperationsMixin from .operations import RoleDefinitionsOperations from .operations import RoleAssignmentsOperations +from .operations import KeyVaultClientOperationsMixin from . import models @@ -29,17 +31,20 @@ class KeyVaultClient(KeyVaultClientOperationsMixin): :vartype role_definitions: azure.keyvault.v7_2.operations.RoleDefinitionsOperations :ivar role_assignments: RoleAssignmentsOperations operations :vartype role_assignments: azure.keyvault.v7_2.operations.RoleAssignmentsOperations + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials.TokenCredential :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. """ def __init__( self, + credential, # type: "TokenCredential" **kwargs # type: Any ): # type: (...) -> None base_url = '{vaultBaseUrl}' - self._config = KeyVaultClientConfiguration(**kwargs) - self._client = PipelineClient(base_url=base_url, config=self._config, **kwargs) + self._config = KeyVaultClientConfiguration(credential, **kwargs) + self._client = ARMPipelineClient(base_url=base_url, config=self._config, **kwargs) client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} self._serialize = Serializer(client_models) diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/_metadata.json b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/_metadata.json deleted file mode 100644 index 2e1b4f3b0f3c..000000000000 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/_metadata.json +++ /dev/null @@ -1,131 +0,0 @@ -{ - "chosen_version": "7.2-preview", - "total_api_version_list": ["7.2-preview"], - "client": { - "name": "KeyVaultClient", - "filename": "_key_vault_client", - "description": "The key vault client performs cryptographic key operations and vault operations against the Key Vault service.", - "base_url": null, - "custom_base_url": "\u0027{vaultBaseUrl}\u0027", - "azure_arm": false - }, - "global_parameters": { - "sync_method": { - }, - "async_method": { - }, - "constant": { - }, - "call": "" - }, - "config": { - "credential": false, - "credential_scopes": null, - "credential_default_policy_type": "BearerTokenCredentialPolicy", - "credential_default_policy_type_has_async_version": true - }, - "operation_groups": { - "role_definitions": "RoleDefinitionsOperations", - "role_assignments": "RoleAssignmentsOperations" - }, - "operation_mixins": { - "_full_backup_initial" : { - "sync": { - "signature": "def _full_backup_initial(\n self,\n vault_base_url, # type: str\n azure_storage_blob_container_uri=None, # type: Optional[\"models.SASTokenParameter\"]\n **kwargs # type: Any\n):\n", - "doc": "\"\"\"\n\n:param vault_base_url: The vault name, for example https://myvault.vault.azure.net.\n:type vault_base_url: str\n:param azure_storage_blob_container_uri: Azure blob shared access signature token pointing to a\n valid Azure blob container where full backup needs to be stored. This token needs to be valid\n for at least next 24 hours from the time of making this call.\n:type azure_storage_blob_container_uri: ~azure.keyvault.v7_2.models.SASTokenParameter\n:keyword callable cls: A custom type or function that will be passed the direct response\n:return: FullBackupOperation, or the result of cls(response)\n:rtype: ~azure.keyvault.v7_2.models.FullBackupOperation\n:raises: ~azure.core.exceptions.HttpResponseError\n\"\"\"" - }, - "async": { - "coroutine": true, - "signature": "async def _full_backup_initial(\n self,\n vault_base_url: str,\n azure_storage_blob_container_uri: Optional[\"models.SASTokenParameter\"] = None,\n **kwargs\n) -\u003e \"models.FullBackupOperation\":\n", - "doc": "\"\"\"\n\n:param vault_base_url: The vault name, for example https://myvault.vault.azure.net.\n:type vault_base_url: str\n:param azure_storage_blob_container_uri: Azure blob shared access signature token pointing to a\n valid Azure blob container where full backup needs to be stored. This token needs to be valid\n for at least next 24 hours from the time of making this call.\n:type azure_storage_blob_container_uri: ~azure.keyvault.v7_2.models.SASTokenParameter\n:keyword callable cls: A custom type or function that will be passed the direct response\n:return: FullBackupOperation, or the result of cls(response)\n:rtype: ~azure.keyvault.v7_2.models.FullBackupOperation\n:raises: ~azure.core.exceptions.HttpResponseError\n\"\"\"" - }, - "call": "vault_base_url, azure_storage_blob_container_uri" - }, - "begin_full_backup" : { - "sync": { - "signature": "def begin_full_backup(\n self,\n vault_base_url, # type: str\n azure_storage_blob_container_uri=None, # type: Optional[\"models.SASTokenParameter\"]\n **kwargs # type: Any\n):\n", - "doc": "\"\"\"Creates a full backup using a user-provided SAS token to an Azure blob storage container.\n\n:param vault_base_url: The vault name, for example https://myvault.vault.azure.net.\n:type vault_base_url: str\n:param azure_storage_blob_container_uri: Azure blob shared access signature token pointing to a\n valid Azure blob container where full backup needs to be stored. This token needs to be valid\n for at least next 24 hours from the time of making this call.\n:type azure_storage_blob_container_uri: ~azure.keyvault.v7_2.models.SASTokenParameter\n:keyword callable cls: A custom type or function that will be passed the direct response\n:keyword str continuation_token: A continuation token to restart a poller from a saved state.\n:keyword polling: True for ARMPolling, False for no polling, or a\n polling object for personal polling strategy\n:paramtype polling: bool or ~azure.core.polling.PollingMethod\n:keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.\n:return: An instance of LROPoller that returns either FullBackupOperation or the result of cls(response)\n:rtype: ~azure.core.polling.LROPoller[~azure.keyvault.v7_2.models.FullBackupOperation]\n:raises ~azure.core.exceptions.HttpResponseError:\n\"\"\"" - }, - "async": { - "coroutine": true, - "signature": "async def begin_full_backup(\n self,\n vault_base_url: str,\n azure_storage_blob_container_uri: Optional[\"models.SASTokenParameter\"] = None,\n **kwargs\n) -\u003e AsyncLROPoller[\"models.FullBackupOperation\"]:\n", - "doc": "\"\"\"Creates a full backup using a user-provided SAS token to an Azure blob storage container.\n\n:param vault_base_url: The vault name, for example https://myvault.vault.azure.net.\n:type vault_base_url: str\n:param azure_storage_blob_container_uri: Azure blob shared access signature token pointing to a\n valid Azure blob container where full backup needs to be stored. This token needs to be valid\n for at least next 24 hours from the time of making this call.\n:type azure_storage_blob_container_uri: ~azure.keyvault.v7_2.models.SASTokenParameter\n:keyword callable cls: A custom type or function that will be passed the direct response\n:keyword str continuation_token: A continuation token to restart a poller from a saved state.\n:keyword polling: True for ARMPolling, False for no polling, or a\n polling object for personal polling strategy\n:paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod\n:keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.\n:return: An instance of AsyncLROPoller that returns either FullBackupOperation or the result of cls(response)\n:rtype: ~azure.core.polling.AsyncLROPoller[~azure.keyvault.v7_2.models.FullBackupOperation]\n:raises ~azure.core.exceptions.HttpResponseError:\n\"\"\"" - }, - "call": "vault_base_url, azure_storage_blob_container_uri" - }, - "full_backup_status" : { - "sync": { - "signature": "def full_backup_status(\n self,\n vault_base_url, # type: str\n job_id, # type: str\n **kwargs # type: Any\n):\n", - "doc": "\"\"\"Returns the status of full backup operation.\n\n:param vault_base_url: The vault name, for example https://myvault.vault.azure.net.\n:type vault_base_url: str\n:param job_id: The id returned as part of the backup request.\n:type job_id: str\n:keyword callable cls: A custom type or function that will be passed the direct response\n:return: FullBackupOperation, or the result of cls(response)\n:rtype: ~azure.keyvault.v7_2.models.FullBackupOperation\n:raises: ~azure.core.exceptions.HttpResponseError\n\"\"\"" - }, - "async": { - "coroutine": true, - "signature": "async def full_backup_status(\n self,\n vault_base_url: str,\n job_id: str,\n **kwargs\n) -\u003e \"models.FullBackupOperation\":\n", - "doc": "\"\"\"Returns the status of full backup operation.\n\n:param vault_base_url: The vault name, for example https://myvault.vault.azure.net.\n:type vault_base_url: str\n:param job_id: The id returned as part of the backup request.\n:type job_id: str\n:keyword callable cls: A custom type or function that will be passed the direct response\n:return: FullBackupOperation, or the result of cls(response)\n:rtype: ~azure.keyvault.v7_2.models.FullBackupOperation\n:raises: ~azure.core.exceptions.HttpResponseError\n\"\"\"" - }, - "call": "vault_base_url, job_id" - }, - "_full_restore_operation_initial" : { - "sync": { - "signature": "def _full_restore_operation_initial(\n self,\n vault_base_url, # type: str\n restore_blob_details=None, # type: Optional[\"models.RestoreOperationParameters\"]\n **kwargs # type: Any\n):\n", - "doc": "\"\"\"\n\n:param vault_base_url: The vault name, for example https://myvault.vault.azure.net.\n:type vault_base_url: str\n:param restore_blob_details: The Azure blob SAS token pointing to a folder where the previous\n successful full backup was stored.\n:type restore_blob_details: ~azure.keyvault.v7_2.models.RestoreOperationParameters\n:keyword callable cls: A custom type or function that will be passed the direct response\n:return: RestoreOperation, or the result of cls(response)\n:rtype: ~azure.keyvault.v7_2.models.RestoreOperation\n:raises: ~azure.core.exceptions.HttpResponseError\n\"\"\"" - }, - "async": { - "coroutine": true, - "signature": "async def _full_restore_operation_initial(\n self,\n vault_base_url: str,\n restore_blob_details: Optional[\"models.RestoreOperationParameters\"] = None,\n **kwargs\n) -\u003e \"models.RestoreOperation\":\n", - "doc": "\"\"\"\n\n:param vault_base_url: The vault name, for example https://myvault.vault.azure.net.\n:type vault_base_url: str\n:param restore_blob_details: The Azure blob SAS token pointing to a folder where the previous\n successful full backup was stored.\n:type restore_blob_details: ~azure.keyvault.v7_2.models.RestoreOperationParameters\n:keyword callable cls: A custom type or function that will be passed the direct response\n:return: RestoreOperation, or the result of cls(response)\n:rtype: ~azure.keyvault.v7_2.models.RestoreOperation\n:raises: ~azure.core.exceptions.HttpResponseError\n\"\"\"" - }, - "call": "vault_base_url, restore_blob_details" - }, - "begin_full_restore_operation" : { - "sync": { - "signature": "def begin_full_restore_operation(\n self,\n vault_base_url, # type: str\n restore_blob_details=None, # type: Optional[\"models.RestoreOperationParameters\"]\n **kwargs # type: Any\n):\n", - "doc": "\"\"\"Restores all key materials using the SAS token pointing to a previously stored Azure Blob\nstorage backup folder.\n\n:param vault_base_url: The vault name, for example https://myvault.vault.azure.net.\n:type vault_base_url: str\n:param restore_blob_details: The Azure blob SAS token pointing to a folder where the previous\n successful full backup was stored.\n:type restore_blob_details: ~azure.keyvault.v7_2.models.RestoreOperationParameters\n:keyword callable cls: A custom type or function that will be passed the direct response\n:keyword str continuation_token: A continuation token to restart a poller from a saved state.\n:keyword polling: True for ARMPolling, False for no polling, or a\n polling object for personal polling strategy\n:paramtype polling: bool or ~azure.core.polling.PollingMethod\n:keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.\n:return: An instance of LROPoller that returns either RestoreOperation or the result of cls(response)\n:rtype: ~azure.core.polling.LROPoller[~azure.keyvault.v7_2.models.RestoreOperation]\n:raises ~azure.core.exceptions.HttpResponseError:\n\"\"\"" - }, - "async": { - "coroutine": true, - "signature": "async def begin_full_restore_operation(\n self,\n vault_base_url: str,\n restore_blob_details: Optional[\"models.RestoreOperationParameters\"] = None,\n **kwargs\n) -\u003e AsyncLROPoller[\"models.RestoreOperation\"]:\n", - "doc": "\"\"\"Restores all key materials using the SAS token pointing to a previously stored Azure Blob\nstorage backup folder.\n\n:param vault_base_url: The vault name, for example https://myvault.vault.azure.net.\n:type vault_base_url: str\n:param restore_blob_details: The Azure blob SAS token pointing to a folder where the previous\n successful full backup was stored.\n:type restore_blob_details: ~azure.keyvault.v7_2.models.RestoreOperationParameters\n:keyword callable cls: A custom type or function that will be passed the direct response\n:keyword str continuation_token: A continuation token to restart a poller from a saved state.\n:keyword polling: True for ARMPolling, False for no polling, or a\n polling object for personal polling strategy\n:paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod\n:keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.\n:return: An instance of AsyncLROPoller that returns either RestoreOperation or the result of cls(response)\n:rtype: ~azure.core.polling.AsyncLROPoller[~azure.keyvault.v7_2.models.RestoreOperation]\n:raises ~azure.core.exceptions.HttpResponseError:\n\"\"\"" - }, - "call": "vault_base_url, restore_blob_details" - }, - "restore_status" : { - "sync": { - "signature": "def restore_status(\n self,\n vault_base_url, # type: str\n job_id, # type: str\n **kwargs # type: Any\n):\n", - "doc": "\"\"\"Returns the status of restore operation.\n\n:param vault_base_url: The vault name, for example https://myvault.vault.azure.net.\n:type vault_base_url: str\n:param job_id: The Job Id returned part of the restore operation.\n:type job_id: str\n:keyword callable cls: A custom type or function that will be passed the direct response\n:return: RestoreOperation, or the result of cls(response)\n:rtype: ~azure.keyvault.v7_2.models.RestoreOperation\n:raises: ~azure.core.exceptions.HttpResponseError\n\"\"\"" - }, - "async": { - "coroutine": true, - "signature": "async def restore_status(\n self,\n vault_base_url: str,\n job_id: str,\n **kwargs\n) -\u003e \"models.RestoreOperation\":\n", - "doc": "\"\"\"Returns the status of restore operation.\n\n:param vault_base_url: The vault name, for example https://myvault.vault.azure.net.\n:type vault_base_url: str\n:param job_id: The Job Id returned part of the restore operation.\n:type job_id: str\n:keyword callable cls: A custom type or function that will be passed the direct response\n:return: RestoreOperation, or the result of cls(response)\n:rtype: ~azure.keyvault.v7_2.models.RestoreOperation\n:raises: ~azure.core.exceptions.HttpResponseError\n\"\"\"" - }, - "call": "vault_base_url, job_id" - }, - "_selective_key_restore_operation_initial" : { - "sync": { - "signature": "def _selective_key_restore_operation_initial(\n self,\n vault_base_url, # type: str\n key_name, # type: str\n restore_blob_details=None, # type: Optional[\"models.SelectiveKeyRestoreOperationParameters\"]\n **kwargs # type: Any\n):\n", - "doc": "\"\"\"\n\n:param vault_base_url: The vault name, for example https://myvault.vault.azure.net.\n:type vault_base_url: str\n:param key_name: The name of the key to be restored from the user supplied backup.\n:type key_name: str\n:param restore_blob_details: The Azure blob SAS token pointing to a folder where the previous\n successful full backup was stored.\n:type restore_blob_details: ~azure.keyvault.v7_2.models.SelectiveKeyRestoreOperationParameters\n:keyword callable cls: A custom type or function that will be passed the direct response\n:return: SelectiveKeyRestoreOperation, or the result of cls(response)\n:rtype: ~azure.keyvault.v7_2.models.SelectiveKeyRestoreOperation\n:raises: ~azure.core.exceptions.HttpResponseError\n\"\"\"" - }, - "async": { - "coroutine": true, - "signature": "async def _selective_key_restore_operation_initial(\n self,\n vault_base_url: str,\n key_name: str,\n restore_blob_details: Optional[\"models.SelectiveKeyRestoreOperationParameters\"] = None,\n **kwargs\n) -\u003e \"models.SelectiveKeyRestoreOperation\":\n", - "doc": "\"\"\"\n\n:param vault_base_url: The vault name, for example https://myvault.vault.azure.net.\n:type vault_base_url: str\n:param key_name: The name of the key to be restored from the user supplied backup.\n:type key_name: str\n:param restore_blob_details: The Azure blob SAS token pointing to a folder where the previous\n successful full backup was stored.\n:type restore_blob_details: ~azure.keyvault.v7_2.models.SelectiveKeyRestoreOperationParameters\n:keyword callable cls: A custom type or function that will be passed the direct response\n:return: SelectiveKeyRestoreOperation, or the result of cls(response)\n:rtype: ~azure.keyvault.v7_2.models.SelectiveKeyRestoreOperation\n:raises: ~azure.core.exceptions.HttpResponseError\n\"\"\"" - }, - "call": "vault_base_url, key_name, restore_blob_details" - }, - "begin_selective_key_restore_operation" : { - "sync": { - "signature": "def begin_selective_key_restore_operation(\n self,\n vault_base_url, # type: str\n key_name, # type: str\n restore_blob_details=None, # type: Optional[\"models.SelectiveKeyRestoreOperationParameters\"]\n **kwargs # type: Any\n):\n", - "doc": "\"\"\"Restores all key versions of a given key using user supplied SAS token pointing to a previously\nstored Azure Blob storage backup folder.\n\n:param vault_base_url: The vault name, for example https://myvault.vault.azure.net.\n:type vault_base_url: str\n:param key_name: The name of the key to be restored from the user supplied backup.\n:type key_name: str\n:param restore_blob_details: The Azure blob SAS token pointing to a folder where the previous\n successful full backup was stored.\n:type restore_blob_details: ~azure.keyvault.v7_2.models.SelectiveKeyRestoreOperationParameters\n:keyword callable cls: A custom type or function that will be passed the direct response\n:keyword str continuation_token: A continuation token to restart a poller from a saved state.\n:keyword polling: True for ARMPolling, False for no polling, or a\n polling object for personal polling strategy\n:paramtype polling: bool or ~azure.core.polling.PollingMethod\n:keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.\n:return: An instance of LROPoller that returns either SelectiveKeyRestoreOperation or the result of cls(response)\n:rtype: ~azure.core.polling.LROPoller[~azure.keyvault.v7_2.models.SelectiveKeyRestoreOperation]\n:raises ~azure.core.exceptions.HttpResponseError:\n\"\"\"" - }, - "async": { - "coroutine": true, - "signature": "async def begin_selective_key_restore_operation(\n self,\n vault_base_url: str,\n key_name: str,\n restore_blob_details: Optional[\"models.SelectiveKeyRestoreOperationParameters\"] = None,\n **kwargs\n) -\u003e AsyncLROPoller[\"models.SelectiveKeyRestoreOperation\"]:\n", - "doc": "\"\"\"Restores all key versions of a given key using user supplied SAS token pointing to a previously\nstored Azure Blob storage backup folder.\n\n:param vault_base_url: The vault name, for example https://myvault.vault.azure.net.\n:type vault_base_url: str\n:param key_name: The name of the key to be restored from the user supplied backup.\n:type key_name: str\n:param restore_blob_details: The Azure blob SAS token pointing to a folder where the previous\n successful full backup was stored.\n:type restore_blob_details: ~azure.keyvault.v7_2.models.SelectiveKeyRestoreOperationParameters\n:keyword callable cls: A custom type or function that will be passed the direct response\n:keyword str continuation_token: A continuation token to restart a poller from a saved state.\n:keyword polling: True for ARMPolling, False for no polling, or a\n polling object for personal polling strategy\n:paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod\n:keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.\n:return: An instance of AsyncLROPoller that returns either SelectiveKeyRestoreOperation or the result of cls(response)\n:rtype: ~azure.core.polling.AsyncLROPoller[~azure.keyvault.v7_2.models.SelectiveKeyRestoreOperation]\n:raises ~azure.core.exceptions.HttpResponseError:\n\"\"\"" - }, - "call": "vault_base_url, key_name, restore_blob_details" - } - }, - "sync_imports": "{\"regular\": {\"azurecore\": {\"azure.core.exceptions\": [\"HttpResponseError\", \"ResourceExistsError\", \"ResourceNotFoundError\", \"map_error\"], \"azure.core.pipeline\": [\"PipelineResponse\"], \"azure.core.pipeline.transport\": [\"HttpRequest\", \"HttpResponse\"], \"azure.core.polling\": [\"LROPoller\", \"NoPolling\", \"PollingMethod\"], \"azure.core.polling.base_polling\": [\"LROBasePolling\"]}, \"stdlib\": {\"warnings\": [null]}}, \"conditional\": {\"stdlib\": {\"typing\": [\"Any\", \"Callable\", \"Dict\", \"Generic\", \"Optional\", \"TypeVar\", \"Union\"]}}}", - "async_imports": "{\"regular\": {\"azurecore\": {\"azure.core.exceptions\": [\"HttpResponseError\", \"ResourceExistsError\", \"ResourceNotFoundError\", \"map_error\"], \"azure.core.pipeline\": [\"PipelineResponse\"], \"azure.core.pipeline.transport\": [\"AsyncHttpResponse\", \"HttpRequest\"], \"azure.core.polling\": [\"AsyncLROPoller\", \"AsyncNoPolling\", \"AsyncPollingMethod\"], \"azure.core.polling.async_base_polling\": [\"AsyncLROBasePolling\"]}, \"stdlib\": {\"warnings\": [null]}}, \"conditional\": {\"stdlib\": {\"typing\": [\"Any\", \"Callable\", \"Dict\", \"Generic\", \"Optional\", \"TypeVar\", \"Union\"]}}}" -} \ No newline at end of file diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/__init__.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/__init__.py index 71ceadebe430..0d937de5d8f5 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/__init__.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/__init__.py @@ -6,5 +6,5 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from ._key_vault_client_async import KeyVaultClient +from ._key_vault_client import KeyVaultClient __all__ = ['KeyVaultClient'] diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/_configuration_async.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/_configuration.py similarity index 68% rename from sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/_configuration_async.py rename to sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/_configuration.py index 5abffe30345d..c3f58a5a2198 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/_configuration_async.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/_configuration.py @@ -6,10 +6,15 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any +from typing import Any, TYPE_CHECKING from azure.core.configuration import Configuration from azure.core.pipeline import policies +from azure.mgmt.core.policies import ARMHttpLoggingPolicy + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from azure.core.credentials_async import AsyncTokenCredential VERSION = "unknown" @@ -19,15 +24,22 @@ class KeyVaultClientConfiguration(Configuration): Note that all parameters used to create this instance are saved as instance attributes. + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials_async.AsyncTokenCredential """ def __init__( self, + credential: "AsyncTokenCredential", **kwargs: Any ) -> None: + if credential is None: + raise ValueError("Parameter 'credential' must not be None.") super(KeyVaultClientConfiguration, self).__init__(**kwargs) + self.credential = credential self.api_version = "7.2-preview" + self.credential_scopes = kwargs.pop('credential_scopes', ['https://management.azure.com/.default']) kwargs.setdefault('sdk_moniker', 'keyvault/{}'.format(VERSION)) self._configure(**kwargs) @@ -39,8 +51,10 @@ def _configure( self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs) self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs) self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs) - self.http_logging_policy = kwargs.get('http_logging_policy') or policies.HttpLoggingPolicy(**kwargs) + self.http_logging_policy = kwargs.get('http_logging_policy') or ARMHttpLoggingPolicy(**kwargs) self.retry_policy = kwargs.get('retry_policy') or policies.AsyncRetryPolicy(**kwargs) self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs) self.redirect_policy = kwargs.get('redirect_policy') or policies.AsyncRedirectPolicy(**kwargs) self.authentication_policy = kwargs.get('authentication_policy') + if self.credential and not self.authentication_policy: + self.authentication_policy = policies.AsyncBearerTokenCredentialPolicy(self.credential, *self.credential_scopes, **kwargs) diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/_key_vault_client_async.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/_key_vault_client.py similarity index 69% rename from sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/_key_vault_client_async.py rename to sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/_key_vault_client.py index 9b3ec815b8e8..6aa30ebfcd79 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/_key_vault_client_async.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/_key_vault_client.py @@ -6,15 +6,19 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any +from typing import Any, TYPE_CHECKING -from azure.core import AsyncPipelineClient +from azure.mgmt.core import AsyncARMPipelineClient from msrest import Deserializer, Serializer -from ._configuration_async import KeyVaultClientConfiguration -from .operations_async import KeyVaultClientOperationsMixin -from .operations_async import RoleDefinitionsOperations -from .operations_async import RoleAssignmentsOperations +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from azure.core.credentials_async import AsyncTokenCredential + +from ._configuration import KeyVaultClientConfiguration +from .operations import RoleDefinitionsOperations +from .operations import RoleAssignmentsOperations +from .operations import KeyVaultClientOperationsMixin from .. import models @@ -22,19 +26,22 @@ class KeyVaultClient(KeyVaultClientOperationsMixin): """The key vault client performs cryptographic key operations and vault operations against the Key Vault service. :ivar role_definitions: RoleDefinitionsOperations operations - :vartype role_definitions: azure.keyvault.v7_2.aio.operations_async.RoleDefinitionsOperations + :vartype role_definitions: azure.keyvault.v7_2.aio.operations.RoleDefinitionsOperations :ivar role_assignments: RoleAssignmentsOperations operations - :vartype role_assignments: azure.keyvault.v7_2.aio.operations_async.RoleAssignmentsOperations + :vartype role_assignments: azure.keyvault.v7_2.aio.operations.RoleAssignmentsOperations + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials_async.AsyncTokenCredential :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. """ def __init__( self, + credential: "AsyncTokenCredential", **kwargs: Any ) -> None: base_url = '{vaultBaseUrl}' - self._config = KeyVaultClientConfiguration(**kwargs) - self._client = AsyncPipelineClient(base_url=base_url, config=self._config, **kwargs) + self._config = KeyVaultClientConfiguration(credential, **kwargs) + self._client = AsyncARMPipelineClient(base_url=base_url, config=self._config, **kwargs) client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} self._serialize = Serializer(client_models) diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/__init__.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/__init__.py new file mode 100644 index 000000000000..f871fcce6e3a --- /dev/null +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/__init__.py @@ -0,0 +1,17 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from ._role_definitions_operations import RoleDefinitionsOperations +from ._role_assignments_operations import RoleAssignmentsOperations +from ._key_vault_client_operations import KeyVaultClientOperationsMixin + +__all__ = [ + 'RoleDefinitionsOperations', + 'RoleAssignmentsOperations', + 'KeyVaultClientOperationsMixin', +] diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations_async/_key_vault_client_operations_async.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/_key_vault_client_operations.py similarity index 79% rename from sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations_async/_key_vault_client_operations_async.py rename to sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/_key_vault_client_operations.py index 2aa256e4d1b0..486c7c6c6bc6 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations_async/_key_vault_client_operations_async.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/_key_vault_client_operations.py @@ -8,13 +8,14 @@ from typing import Any, Callable, Dict, Generic, Optional, TypeVar, Union import warnings -from azure.core.exceptions import HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod -from azure.core.polling.async_base_polling import AsyncLROBasePolling +from azure.mgmt.core.exceptions import ARMErrorFormat +from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling -from ... import models +from ... import models as _models T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -24,14 +25,17 @@ class KeyVaultClientOperationsMixin: async def _full_backup_initial( self, vault_base_url: str, - azure_storage_blob_container_uri: Optional["models.SASTokenParameter"] = None, + azure_storage_blob_container_uri: Optional["_models.SASTokenParameter"] = None, **kwargs - ) -> "models.FullBackupOperation": - cls = kwargs.pop('cls', None) # type: ClsType["models.FullBackupOperation"] - error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + ) -> "_models.FullBackupOperation": + cls = kwargs.pop('cls', None) # type: ClsType["_models.FullBackupOperation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } error_map.update(kwargs.pop('error_map', {})) api_version = "7.2-preview" content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" # Construct URL url = self._full_backup_initial.metadata['url'] # type: ignore @@ -47,7 +51,7 @@ async def _full_backup_initial( # Construct headers header_parameters = {} # type: Dict[str, Any] header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = 'application/json' + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') body_content_kwargs = {} # type: Dict[str, Any] if azure_storage_blob_container_uri is not None: @@ -56,14 +60,13 @@ async def _full_backup_initial( body_content = None body_content_kwargs['content'] = body_content request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) response = pipeline_response.http_response if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize(models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) response_headers = {} response_headers['Retry-After']=self._deserialize('int', response.headers.get('Retry-After')) @@ -79,9 +82,9 @@ async def _full_backup_initial( async def begin_full_backup( self, vault_base_url: str, - azure_storage_blob_container_uri: Optional["models.SASTokenParameter"] = None, + azure_storage_blob_container_uri: Optional["_models.SASTokenParameter"] = None, **kwargs - ) -> AsyncLROPoller["models.FullBackupOperation"]: + ) -> AsyncLROPoller["_models.FullBackupOperation"]: """Creates a full backup using a user-provided SAS token to an Azure blob storage container. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -92,16 +95,16 @@ async def begin_full_backup( :type azure_storage_blob_container_uri: ~azure.keyvault.v7_2.models.SASTokenParameter :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: True for ARMPolling, False for no polling, or a - polling object for personal polling strategy + :keyword polling: Pass in True if you'd like the AsyncARMPolling polling method, + False for no polling, or your own initialized polling object for a personal polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. :return: An instance of AsyncLROPoller that returns either FullBackupOperation or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.keyvault.v7_2.models.FullBackupOperation] :raises ~azure.core.exceptions.HttpResponseError: """ - polling = kwargs.pop('polling', False) # type: Union[bool, AsyncPollingMethod] - cls = kwargs.pop('cls', None) # type: ClsType["models.FullBackupOperation"] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.FullBackupOperation"] lro_delay = kwargs.pop( 'polling_interval', self._config.polling_interval @@ -129,7 +132,11 @@ def get_long_running_output(pipeline_response): return cls(pipeline_response, deserialized, response_headers) return deserialized - if polling is True: polling_method = AsyncLROBasePolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + path_format_arguments = { + 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), + } + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -148,7 +155,7 @@ async def full_backup_status( vault_base_url: str, job_id: str, **kwargs - ) -> "models.FullBackupOperation": + ) -> "_models.FullBackupOperation": """Returns the status of full backup operation. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -160,10 +167,13 @@ async def full_backup_status( :rtype: ~azure.keyvault.v7_2.models.FullBackupOperation :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["models.FullBackupOperation"] - error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + cls = kwargs.pop('cls', None) # type: ClsType["_models.FullBackupOperation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } error_map.update(kwargs.pop('error_map', {})) api_version = "7.2-preview" + accept = "application/json" # Construct URL url = self.full_backup_status.metadata['url'] # type: ignore @@ -179,7 +189,7 @@ async def full_backup_status( # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = 'application/json' + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') request = self._client.get(url, query_parameters, header_parameters) pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) @@ -187,8 +197,8 @@ async def full_backup_status( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize(models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('FullBackupOperation', pipeline_response) @@ -201,14 +211,17 @@ async def full_backup_status( async def _full_restore_operation_initial( self, vault_base_url: str, - restore_blob_details: Optional["models.RestoreOperationParameters"] = None, + restore_blob_details: Optional["_models.RestoreOperationParameters"] = None, **kwargs - ) -> "models.RestoreOperation": - cls = kwargs.pop('cls', None) # type: ClsType["models.RestoreOperation"] - error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + ) -> "_models.RestoreOperation": + cls = kwargs.pop('cls', None) # type: ClsType["_models.RestoreOperation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } error_map.update(kwargs.pop('error_map', {})) api_version = "7.2-preview" content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" # Construct URL url = self._full_restore_operation_initial.metadata['url'] # type: ignore @@ -224,7 +237,7 @@ async def _full_restore_operation_initial( # Construct headers header_parameters = {} # type: Dict[str, Any] header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = 'application/json' + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') body_content_kwargs = {} # type: Dict[str, Any] if restore_blob_details is not None: @@ -233,14 +246,13 @@ async def _full_restore_operation_initial( body_content = None body_content_kwargs['content'] = body_content request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) response = pipeline_response.http_response if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize(models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) response_headers = {} response_headers['Retry-After']=self._deserialize('int', response.headers.get('Retry-After')) @@ -256,9 +268,9 @@ async def _full_restore_operation_initial( async def begin_full_restore_operation( self, vault_base_url: str, - restore_blob_details: Optional["models.RestoreOperationParameters"] = None, + restore_blob_details: Optional["_models.RestoreOperationParameters"] = None, **kwargs - ) -> AsyncLROPoller["models.RestoreOperation"]: + ) -> AsyncLROPoller["_models.RestoreOperation"]: """Restores all key materials using the SAS token pointing to a previously stored Azure Blob storage backup folder. @@ -269,16 +281,16 @@ async def begin_full_restore_operation( :type restore_blob_details: ~azure.keyvault.v7_2.models.RestoreOperationParameters :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: True for ARMPolling, False for no polling, or a - polling object for personal polling strategy + :keyword polling: Pass in True if you'd like the AsyncARMPolling polling method, + False for no polling, or your own initialized polling object for a personal polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. :return: An instance of AsyncLROPoller that returns either RestoreOperation or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.keyvault.v7_2.models.RestoreOperation] :raises ~azure.core.exceptions.HttpResponseError: """ - polling = kwargs.pop('polling', False) # type: Union[bool, AsyncPollingMethod] - cls = kwargs.pop('cls', None) # type: ClsType["models.RestoreOperation"] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.RestoreOperation"] lro_delay = kwargs.pop( 'polling_interval', self._config.polling_interval @@ -306,7 +318,11 @@ def get_long_running_output(pipeline_response): return cls(pipeline_response, deserialized, response_headers) return deserialized - if polling is True: polling_method = AsyncLROBasePolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + path_format_arguments = { + 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), + } + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -325,7 +341,7 @@ async def restore_status( vault_base_url: str, job_id: str, **kwargs - ) -> "models.RestoreOperation": + ) -> "_models.RestoreOperation": """Returns the status of restore operation. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -337,10 +353,13 @@ async def restore_status( :rtype: ~azure.keyvault.v7_2.models.RestoreOperation :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["models.RestoreOperation"] - error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + cls = kwargs.pop('cls', None) # type: ClsType["_models.RestoreOperation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } error_map.update(kwargs.pop('error_map', {})) api_version = "7.2-preview" + accept = "application/json" # Construct URL url = self.restore_status.metadata['url'] # type: ignore @@ -356,7 +375,7 @@ async def restore_status( # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = 'application/json' + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') request = self._client.get(url, query_parameters, header_parameters) pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) @@ -364,8 +383,8 @@ async def restore_status( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize(models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('RestoreOperation', pipeline_response) @@ -379,14 +398,17 @@ async def _selective_key_restore_operation_initial( self, vault_base_url: str, key_name: str, - restore_blob_details: Optional["models.SelectiveKeyRestoreOperationParameters"] = None, + restore_blob_details: Optional["_models.SelectiveKeyRestoreOperationParameters"] = None, **kwargs - ) -> "models.SelectiveKeyRestoreOperation": - cls = kwargs.pop('cls', None) # type: ClsType["models.SelectiveKeyRestoreOperation"] - error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + ) -> "_models.SelectiveKeyRestoreOperation": + cls = kwargs.pop('cls', None) # type: ClsType["_models.SelectiveKeyRestoreOperation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } error_map.update(kwargs.pop('error_map', {})) api_version = "7.2-preview" content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" # Construct URL url = self._selective_key_restore_operation_initial.metadata['url'] # type: ignore @@ -403,7 +425,7 @@ async def _selective_key_restore_operation_initial( # Construct headers header_parameters = {} # type: Dict[str, Any] header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = 'application/json' + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') body_content_kwargs = {} # type: Dict[str, Any] if restore_blob_details is not None: @@ -412,14 +434,13 @@ async def _selective_key_restore_operation_initial( body_content = None body_content_kwargs['content'] = body_content request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) response = pipeline_response.http_response if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize(models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) response_headers = {} response_headers['Retry-After']=self._deserialize('int', response.headers.get('Retry-After')) @@ -436,9 +457,9 @@ async def begin_selective_key_restore_operation( self, vault_base_url: str, key_name: str, - restore_blob_details: Optional["models.SelectiveKeyRestoreOperationParameters"] = None, + restore_blob_details: Optional["_models.SelectiveKeyRestoreOperationParameters"] = None, **kwargs - ) -> AsyncLROPoller["models.SelectiveKeyRestoreOperation"]: + ) -> AsyncLROPoller["_models.SelectiveKeyRestoreOperation"]: """Restores all key versions of a given key using user supplied SAS token pointing to a previously stored Azure Blob storage backup folder. @@ -451,16 +472,16 @@ async def begin_selective_key_restore_operation( :type restore_blob_details: ~azure.keyvault.v7_2.models.SelectiveKeyRestoreOperationParameters :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: True for ARMPolling, False for no polling, or a - polling object for personal polling strategy + :keyword polling: Pass in True if you'd like the AsyncARMPolling polling method, + False for no polling, or your own initialized polling object for a personal polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. :return: An instance of AsyncLROPoller that returns either SelectiveKeyRestoreOperation or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.keyvault.v7_2.models.SelectiveKeyRestoreOperation] :raises ~azure.core.exceptions.HttpResponseError: """ - polling = kwargs.pop('polling', False) # type: Union[bool, AsyncPollingMethod] - cls = kwargs.pop('cls', None) # type: ClsType["models.SelectiveKeyRestoreOperation"] + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.SelectiveKeyRestoreOperation"] lro_delay = kwargs.pop( 'polling_interval', self._config.polling_interval @@ -489,7 +510,12 @@ def get_long_running_output(pipeline_response): return cls(pipeline_response, deserialized, response_headers) return deserialized - if polling is True: polling_method = AsyncLROBasePolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + path_format_arguments = { + 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), + 'keyName': self._serialize.url("key_name", key_name, 'str'), + } + + if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations_async/_role_assignments_operations_async.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/_role_assignments_operations.py similarity index 85% rename from sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations_async/_role_assignments_operations_async.py rename to sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/_role_assignments_operations.py index 156ca54342fa..ddd23a4c4e67 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations_async/_role_assignments_operations_async.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/_role_assignments_operations.py @@ -9,11 +9,12 @@ import warnings from azure.core.async_paging import AsyncItemPaged, AsyncList -from azure.core.exceptions import HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.mgmt.core.exceptions import ARMErrorFormat -from ... import models +from ... import models as _models T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -32,7 +33,7 @@ class RoleAssignmentsOperations: :param deserializer: An object model deserializer. """ - models = models + models = _models def __init__(self, client, config, serializer, deserializer) -> None: self._client = client @@ -46,7 +47,7 @@ async def delete( scope: str, role_assignment_name: str, **kwargs - ) -> "models.RoleAssignment": + ) -> "_models.RoleAssignment": """Deletes a role assignment. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -60,10 +61,13 @@ async def delete( :rtype: ~azure.keyvault.v7_2.models.RoleAssignment :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["models.RoleAssignment"] - error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + cls = kwargs.pop('cls', None) # type: ClsType["_models.RoleAssignment"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } error_map.update(kwargs.pop('error_map', {})) api_version = "7.2-preview" + accept = "application/json" # Construct URL url = self.delete.metadata['url'] # type: ignore @@ -80,7 +84,7 @@ async def delete( # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = 'application/json' + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') request = self._client.delete(url, query_parameters, header_parameters) pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) @@ -88,8 +92,8 @@ async def delete( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize(models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('RoleAssignment', pipeline_response) @@ -104,9 +108,9 @@ async def create( vault_base_url: str, scope: str, role_assignment_name: str, - parameters: "models.RoleAssignmentCreateParameters", + parameters: "_models.RoleAssignmentCreateParameters", **kwargs - ) -> "models.RoleAssignment": + ) -> "_models.RoleAssignment": """Creates a role assignment. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -123,11 +127,14 @@ async def create( :rtype: ~azure.keyvault.v7_2.models.RoleAssignment :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["models.RoleAssignment"] - error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + cls = kwargs.pop('cls', None) # type: ClsType["_models.RoleAssignment"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } error_map.update(kwargs.pop('error_map', {})) api_version = "7.2-preview" content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" # Construct URL url = self.create.metadata['url'] # type: ignore @@ -145,20 +152,19 @@ async def create( # Construct headers header_parameters = {} # type: Dict[str, Any] header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = 'application/json' + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') body_content_kwargs = {} # type: Dict[str, Any] body_content = self._serialize.body(parameters, 'RoleAssignmentCreateParameters') body_content_kwargs['content'] = body_content request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) response = pipeline_response.http_response if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize(models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('RoleAssignment', pipeline_response) @@ -174,7 +180,7 @@ async def get( scope: str, role_assignment_name: str, **kwargs - ) -> "models.RoleAssignment": + ) -> "_models.RoleAssignment": """Get the specified role assignment. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -188,10 +194,13 @@ async def get( :rtype: ~azure.keyvault.v7_2.models.RoleAssignment :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["models.RoleAssignment"] - error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + cls = kwargs.pop('cls', None) # type: ClsType["_models.RoleAssignment"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } error_map.update(kwargs.pop('error_map', {})) api_version = "7.2-preview" + accept = "application/json" # Construct URL url = self.get.metadata['url'] # type: ignore @@ -208,7 +217,7 @@ async def get( # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = 'application/json' + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') request = self._client.get(url, query_parameters, header_parameters) pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) @@ -216,8 +225,8 @@ async def get( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize(models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('RoleAssignment', pipeline_response) @@ -233,7 +242,7 @@ def list_for_scope( scope: str, filter: Optional[str] = None, **kwargs - ) -> AsyncIterable["models.RoleAssignmentListResult"]: + ) -> AsyncIterable["_models.RoleAssignmentListResult"]: """Gets role assignments for a scope. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -249,15 +258,18 @@ def list_for_scope( :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.keyvault.v7_2.models.RoleAssignmentListResult] :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["models.RoleAssignmentListResult"] - error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + cls = kwargs.pop('cls', None) # type: ClsType["_models.RoleAssignmentListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } error_map.update(kwargs.pop('error_map', {})) api_version = "7.2-preview" + accept = "application/json" def prepare_request(next_link=None): # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = 'application/json' + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') if not next_link: # Construct URL @@ -299,9 +311,9 @@ async def get_next(next_link=None): response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize(models.KeyVaultError, response) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, model=error) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations_async/_role_definitions_operations_async.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/_role_definitions_operations.py similarity index 92% rename from sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations_async/_role_definitions_operations_async.py rename to sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/_role_definitions_operations.py index b804eadacd3c..33fdec8c04ff 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations_async/_role_definitions_operations_async.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/_role_definitions_operations.py @@ -1,6 +1,8 @@ # coding=utf-8 # -------------------------------------------------------------------------- -# Code generated by Microsoft (R) AutoRest Code Generator (autorest: 3.0.6306, generator: {generator}) +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar @@ -10,6 +12,7 @@ from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.mgmt.core.exceptions import ARMErrorFormat from ... import models as _models @@ -23,7 +26,7 @@ class RoleDefinitionsOperations: instantiates it for you and attaches it as an attribute. :ivar models: Alias to model classes used in this operation group. - :type models: ~key_vault_client.models + :type models: ~azure.keyvault.v7_2.models :param client: Client for service requests. :param config: Configuration of service client. :param serializer: An object model serializer. @@ -55,7 +58,7 @@ async def delete( :type role_definition_name: str :keyword callable cls: A custom type or function that will be passed the direct response :return: RoleDefinition, or the result of cls(response) - :rtype: ~key_vault_client.models.RoleDefinition + :rtype: ~azure.keyvault.v7_2.models.RoleDefinition :raises: ~azure.core.exceptions.HttpResponseError """ cls = kwargs.pop('cls', None) # type: ClsType["_models.RoleDefinition"] @@ -89,8 +92,8 @@ async def delete( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('RoleDefinition', pipeline_response) @@ -119,10 +122,10 @@ async def create_or_update( valid GUID. :type role_definition_name: str :param parameters: Parameters for the role definition. - :type parameters: ~key_vault_client.models.RoleDefinitionCreateParameters + :type parameters: ~azure.keyvault.v7_2.models.RoleDefinitionCreateParameters :keyword callable cls: A custom type or function that will be passed the direct response :return: RoleDefinition, or the result of cls(response) - :rtype: ~key_vault_client.models.RoleDefinition + :rtype: ~azure.keyvault.v7_2.models.RoleDefinition :raises: ~azure.core.exceptions.HttpResponseError """ cls = kwargs.pop('cls', None) # type: ClsType["_models.RoleDefinition"] @@ -161,8 +164,8 @@ async def create_or_update( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('RoleDefinition', pipeline_response) @@ -189,7 +192,7 @@ async def get( :type role_definition_name: str :keyword callable cls: A custom type or function that will be passed the direct response :return: RoleDefinition, or the result of cls(response) - :rtype: ~key_vault_client.models.RoleDefinition + :rtype: ~azure.keyvault.v7_2.models.RoleDefinition :raises: ~azure.core.exceptions.HttpResponseError """ cls = kwargs.pop('cls', None) # type: ClsType["_models.RoleDefinition"] @@ -223,8 +226,8 @@ async def get( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('RoleDefinition', pipeline_response) @@ -252,7 +255,7 @@ def list( :type filter: str :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either RoleDefinitionListResult or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~key_vault_client.models.RoleDefinitionListResult] + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.keyvault.v7_2.models.RoleDefinitionListResult] :raises: ~azure.core.exceptions.HttpResponseError """ cls = kwargs.pop('cls', None) # type: ClsType["_models.RoleDefinitionListResult"] @@ -308,9 +311,9 @@ async def get_next(next_link=None): response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize(_models.KeyVaultError, response) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, model=error) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations_async/__init__.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations_async/__init__.py deleted file mode 100644 index e7870cbaf603..000000000000 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations_async/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Code generated by Microsoft (R) AutoRest Code Generator (autorest: 3.0.6306, generator: {generator}) -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from ._role_definitions_operations_async import RoleDefinitionsOperations -from ._role_assignments_operations_async import RoleAssignmentsOperations -from ._key_vault_client_operations_async import KeyVaultClientOperationsMixin - -__all__ = [ - 'RoleDefinitionsOperations', - 'RoleAssignmentsOperations', - 'KeyVaultClientOperationsMixin', -] diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/models/__init__.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/models/__init__.py index e65cfcf3dde4..47bde45ad659 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/models/__init__.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/models/__init__.py @@ -1,6 +1,8 @@ # coding=utf-8 # -------------------------------------------------------------------------- -# Code generated by Microsoft (R) AutoRest Code Generator (autorest: 3.0.6306, generator: {generator}) +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/models/_key_vault_client_enums.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/models/_key_vault_client_enums.py index 6130c70fe5ef..e114121d7fed 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/models/_key_vault_client_enums.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/models/_key_vault_client_enums.py @@ -1,6 +1,8 @@ # coding=utf-8 # -------------------------------------------------------------------------- -# Code generated by Microsoft (R) AutoRest Code Generator (autorest: 3.0.6306, generator: {generator}) +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/models/_models.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/models/_models.py index ab47754e5607..e5e5852604a9 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/models/_models.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/models/_models.py @@ -1,6 +1,8 @@ # coding=utf-8 # -------------------------------------------------------------------------- -# Code generated by Microsoft (R) AutoRest Code Generator (autorest: 3.0.6306, generator: {generator}) +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- @@ -60,7 +62,7 @@ class Error(msrest.serialization.Model): :ivar message: The error message. :vartype message: str :ivar inner_error: The key vault server error. - :vartype inner_error: ~key_vault_client.models.Error + :vartype inner_error: ~azure.keyvault.v7_2.models.Error """ _validation = { @@ -93,7 +95,7 @@ class FullBackupOperation(msrest.serialization.Model): :param status_details: The status details of backup operation. :type status_details: str :param error: Error encountered, if any, during the full backup operation. - :type error: ~key_vault_client.models.Error + :type error: ~azure.keyvault.v7_2.models.Error :param start_time: The start time of the backup operation in UTC. :type start_time: ~datetime.datetime :param end_time: The end time of the backup operation in UTC. @@ -135,7 +137,7 @@ class KeyVaultError(msrest.serialization.Model): Variables are only populated by the server, and will be ignored when sending a request. :ivar error: The key vault server error. - :vartype error: ~key_vault_client.models.Error + :vartype error: ~azure.keyvault.v7_2.models.Error """ _validation = { @@ -163,10 +165,10 @@ class Permission(msrest.serialization.Model): other role definitions assigned to a principal. :type not_actions: list[str] :param data_actions: Data action permissions that are granted. - :type data_actions: list[str or ~key_vault_client.models.DataAction] + :type data_actions: list[str or ~azure.keyvault.v7_2.models.DataAction] :param not_data_actions: Data action permissions that are excluded but not denied. They may be granted by other role definitions assigned to a principal. - :type not_data_actions: list[str or ~key_vault_client.models.DataAction] + :type not_data_actions: list[str or ~azure.keyvault.v7_2.models.DataAction] """ _attribute_map = { @@ -195,7 +197,7 @@ class RestoreOperation(msrest.serialization.Model): :param status_details: The status details of restore operation. :type status_details: str :param error: Error encountered, if any, during the restore operation. - :type error: ~key_vault_client.models.Error + :type error: ~azure.keyvault.v7_2.models.Error :param job_id: Identifier for the restore operation. :type job_id: str :param start_time: The start time of the restore operation. @@ -233,7 +235,7 @@ class RestoreOperationParameters(msrest.serialization.Model): :param sas_token_parameters: Required. SAS token parameter object containing Azure storage resourceUri and token. - :type sas_token_parameters: ~key_vault_client.models.SASTokenParameter + :type sas_token_parameters: ~azure.keyvault.v7_2.models.SASTokenParameter :param folder_to_restore: Required. The Folder name of the blob where the previous successful full backup was stored. :type folder_to_restore: str @@ -270,7 +272,7 @@ class RoleAssignment(msrest.serialization.Model): :ivar type: The role assignment type. :vartype type: str :param properties: Role assignment properties. - :type properties: ~key_vault_client.models.RoleAssignmentPropertiesWithScope + :type properties: ~azure.keyvault.v7_2.models.RoleAssignmentPropertiesWithScope """ _validation = { @@ -303,7 +305,7 @@ class RoleAssignmentCreateParameters(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. :param properties: Required. Role assignment properties. - :type properties: ~key_vault_client.models.RoleAssignmentProperties + :type properties: ~azure.keyvault.v7_2.models.RoleAssignmentProperties """ _validation = { @@ -345,7 +347,7 @@ class RoleAssignmentListResult(msrest.serialization.Model): """Role assignment list operation result. :param value: Role assignment list. - :type value: list[~key_vault_client.models.RoleAssignment] + :type value: list[~azure.keyvault.v7_2.models.RoleAssignment] :param next_link: The URL to use for getting the next set of results. :type next_link: str """ @@ -399,7 +401,7 @@ class RoleAssignmentPropertiesWithScope(msrest.serialization.Model): """Role assignment properties with scope. :param scope: The role scope. Possible values include: "/", "/keys". - :type scope: str or ~key_vault_client.models.RoleScope + :type scope: str or ~azure.keyvault.v7_2.models.RoleScope :param role_definition_id: The role definition ID. :type role_definition_id: str :param principal_id: The principal ID. @@ -433,17 +435,17 @@ class RoleDefinition(msrest.serialization.Model): :vartype name: str :ivar type: The role definition type. Possible values include: "Microsoft.Authorization/roleDefinitions". - :vartype type: str or ~key_vault_client.models.RoleDefinitionType + :vartype type: str or ~azure.keyvault.v7_2.models.RoleDefinitionType :param role_name: The role name. :type role_name: str :param description: The role definition description. :type description: str :param role_type: The role type. Possible values include: "AKVBuiltInRole", "CustomRole". - :type role_type: str or ~key_vault_client.models.RoleType + :type role_type: str or ~azure.keyvault.v7_2.models.RoleType :param permissions: Role definition permissions. - :type permissions: list[~key_vault_client.models.Permission] + :type permissions: list[~azure.keyvault.v7_2.models.Permission] :param assignable_scopes: Role definition assignable scopes. - :type assignable_scopes: list[str or ~key_vault_client.models.RoleScope] + :type assignable_scopes: list[str or ~azure.keyvault.v7_2.models.RoleScope] """ _validation = { @@ -484,7 +486,7 @@ class RoleDefinitionCreateParameters(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. :param properties: Required. Role definition properties. - :type properties: ~key_vault_client.models.RoleDefinitionProperties + :type properties: ~azure.keyvault.v7_2.models.RoleDefinitionProperties """ _validation = { @@ -526,7 +528,7 @@ class RoleDefinitionListResult(msrest.serialization.Model): """Role definition list operation result. :param value: Role definition list. - :type value: list[~key_vault_client.models.RoleDefinition] + :type value: list[~azure.keyvault.v7_2.models.RoleDefinition] :param next_link: The URL to use for getting the next set of results. :type next_link: str """ @@ -553,11 +555,11 @@ class RoleDefinitionProperties(msrest.serialization.Model): :param description: The role definition description. :type description: str :param role_type: The role type. Possible values include: "AKVBuiltInRole", "CustomRole". - :type role_type: str or ~key_vault_client.models.RoleType + :type role_type: str or ~azure.keyvault.v7_2.models.RoleType :param permissions: Role definition permissions. - :type permissions: list[~key_vault_client.models.Permission] + :type permissions: list[~azure.keyvault.v7_2.models.Permission] :param assignable_scopes: Role definition assignable scopes. - :type assignable_scopes: list[str or ~key_vault_client.models.RoleScope] + :type assignable_scopes: list[str or ~azure.keyvault.v7_2.models.RoleScope] """ _attribute_map = { @@ -618,7 +620,7 @@ class SelectiveKeyRestoreOperation(msrest.serialization.Model): :param status_details: The status details of restore operation. :type status_details: str :param error: Error encountered, if any, during the selective key restore operation. - :type error: ~key_vault_client.models.Error + :type error: ~azure.keyvault.v7_2.models.Error :param job_id: Identifier for the selective key restore operation. :type job_id: str :param start_time: The start time of the restore operation. @@ -656,7 +658,7 @@ class SelectiveKeyRestoreOperationParameters(msrest.serialization.Model): :param sas_token_parameters: Required. SAS token parameter object containing Azure storage resourceUri and token. - :type sas_token_parameters: ~key_vault_client.models.SASTokenParameter + :type sas_token_parameters: ~azure.keyvault.v7_2.models.SASTokenParameter :param folder: Required. The Folder name of the blob where the previous successful full backup was stored. :type folder: str diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/models/_models_py3.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/models/_models_py3.py index 802d4b7f6dff..932a41b85fea 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/models/_models_py3.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/models/_models_py3.py @@ -1,6 +1,8 @@ # coding=utf-8 # -------------------------------------------------------------------------- -# Code generated by Microsoft (R) AutoRest Code Generator (autorest: 3.0.6306, generator: {generator}) +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- @@ -69,7 +71,7 @@ class Error(msrest.serialization.Model): :ivar message: The error message. :vartype message: str :ivar inner_error: The key vault server error. - :vartype inner_error: ~key_vault_client.models.Error + :vartype inner_error: ~azure.keyvault.v7_2.models.Error """ _validation = { @@ -102,7 +104,7 @@ class FullBackupOperation(msrest.serialization.Model): :param status_details: The status details of backup operation. :type status_details: str :param error: Error encountered, if any, during the full backup operation. - :type error: ~key_vault_client.models.Error + :type error: ~azure.keyvault.v7_2.models.Error :param start_time: The start time of the backup operation in UTC. :type start_time: ~datetime.datetime :param end_time: The end time of the backup operation in UTC. @@ -152,7 +154,7 @@ class KeyVaultError(msrest.serialization.Model): Variables are only populated by the server, and will be ignored when sending a request. :ivar error: The key vault server error. - :vartype error: ~key_vault_client.models.Error + :vartype error: ~azure.keyvault.v7_2.models.Error """ _validation = { @@ -180,10 +182,10 @@ class Permission(msrest.serialization.Model): other role definitions assigned to a principal. :type not_actions: list[str] :param data_actions: Data action permissions that are granted. - :type data_actions: list[str or ~key_vault_client.models.DataAction] + :type data_actions: list[str or ~azure.keyvault.v7_2.models.DataAction] :param not_data_actions: Data action permissions that are excluded but not denied. They may be granted by other role definitions assigned to a principal. - :type not_data_actions: list[str or ~key_vault_client.models.DataAction] + :type not_data_actions: list[str or ~azure.keyvault.v7_2.models.DataAction] """ _attribute_map = { @@ -217,7 +219,7 @@ class RestoreOperation(msrest.serialization.Model): :param status_details: The status details of restore operation. :type status_details: str :param error: Error encountered, if any, during the restore operation. - :type error: ~key_vault_client.models.Error + :type error: ~azure.keyvault.v7_2.models.Error :param job_id: Identifier for the restore operation. :type job_id: str :param start_time: The start time of the restore operation. @@ -262,7 +264,7 @@ class RestoreOperationParameters(msrest.serialization.Model): :param sas_token_parameters: Required. SAS token parameter object containing Azure storage resourceUri and token. - :type sas_token_parameters: ~key_vault_client.models.SASTokenParameter + :type sas_token_parameters: ~azure.keyvault.v7_2.models.SASTokenParameter :param folder_to_restore: Required. The Folder name of the blob where the previous successful full backup was stored. :type folder_to_restore: str @@ -302,7 +304,7 @@ class RoleAssignment(msrest.serialization.Model): :ivar type: The role assignment type. :vartype type: str :param properties: Role assignment properties. - :type properties: ~key_vault_client.models.RoleAssignmentPropertiesWithScope + :type properties: ~azure.keyvault.v7_2.models.RoleAssignmentPropertiesWithScope """ _validation = { @@ -337,7 +339,7 @@ class RoleAssignmentCreateParameters(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. :param properties: Required. Role assignment properties. - :type properties: ~key_vault_client.models.RoleAssignmentProperties + :type properties: ~azure.keyvault.v7_2.models.RoleAssignmentProperties """ _validation = { @@ -383,7 +385,7 @@ class RoleAssignmentListResult(msrest.serialization.Model): """Role assignment list operation result. :param value: Role assignment list. - :type value: list[~key_vault_client.models.RoleAssignment] + :type value: list[~azure.keyvault.v7_2.models.RoleAssignment] :param next_link: The URL to use for getting the next set of results. :type next_link: str """ @@ -443,7 +445,7 @@ class RoleAssignmentPropertiesWithScope(msrest.serialization.Model): """Role assignment properties with scope. :param scope: The role scope. Possible values include: "/", "/keys". - :type scope: str or ~key_vault_client.models.RoleScope + :type scope: str or ~azure.keyvault.v7_2.models.RoleScope :param role_definition_id: The role definition ID. :type role_definition_id: str :param principal_id: The principal ID. @@ -481,17 +483,17 @@ class RoleDefinition(msrest.serialization.Model): :vartype name: str :ivar type: The role definition type. Possible values include: "Microsoft.Authorization/roleDefinitions". - :vartype type: str or ~key_vault_client.models.RoleDefinitionType + :vartype type: str or ~azure.keyvault.v7_2.models.RoleDefinitionType :param role_name: The role name. :type role_name: str :param description: The role definition description. :type description: str :param role_type: The role type. Possible values include: "AKVBuiltInRole", "CustomRole". - :type role_type: str or ~key_vault_client.models.RoleType + :type role_type: str or ~azure.keyvault.v7_2.models.RoleType :param permissions: Role definition permissions. - :type permissions: list[~key_vault_client.models.Permission] + :type permissions: list[~azure.keyvault.v7_2.models.Permission] :param assignable_scopes: Role definition assignable scopes. - :type assignable_scopes: list[str or ~key_vault_client.models.RoleScope] + :type assignable_scopes: list[str or ~azure.keyvault.v7_2.models.RoleScope] """ _validation = { @@ -538,7 +540,7 @@ class RoleDefinitionCreateParameters(msrest.serialization.Model): All required parameters must be populated in order to send to Azure. :param properties: Required. Role definition properties. - :type properties: ~key_vault_client.models.RoleDefinitionProperties + :type properties: ~azure.keyvault.v7_2.models.RoleDefinitionProperties """ _validation = { @@ -584,7 +586,7 @@ class RoleDefinitionListResult(msrest.serialization.Model): """Role definition list operation result. :param value: Role definition list. - :type value: list[~key_vault_client.models.RoleDefinition] + :type value: list[~azure.keyvault.v7_2.models.RoleDefinition] :param next_link: The URL to use for getting the next set of results. :type next_link: str """ @@ -614,11 +616,11 @@ class RoleDefinitionProperties(msrest.serialization.Model): :param description: The role definition description. :type description: str :param role_type: The role type. Possible values include: "AKVBuiltInRole", "CustomRole". - :type role_type: str or ~key_vault_client.models.RoleType + :type role_type: str or ~azure.keyvault.v7_2.models.RoleType :param permissions: Role definition permissions. - :type permissions: list[~key_vault_client.models.Permission] + :type permissions: list[~azure.keyvault.v7_2.models.Permission] :param assignable_scopes: Role definition assignable scopes. - :type assignable_scopes: list[str or ~key_vault_client.models.RoleScope] + :type assignable_scopes: list[str or ~azure.keyvault.v7_2.models.RoleScope] """ _attribute_map = { @@ -688,7 +690,7 @@ class SelectiveKeyRestoreOperation(msrest.serialization.Model): :param status_details: The status details of restore operation. :type status_details: str :param error: Error encountered, if any, during the selective key restore operation. - :type error: ~key_vault_client.models.Error + :type error: ~azure.keyvault.v7_2.models.Error :param job_id: Identifier for the selective key restore operation. :type job_id: str :param start_time: The start time of the restore operation. @@ -733,7 +735,7 @@ class SelectiveKeyRestoreOperationParameters(msrest.serialization.Model): :param sas_token_parameters: Required. SAS token parameter object containing Azure storage resourceUri and token. - :type sas_token_parameters: ~key_vault_client.models.SASTokenParameter + :type sas_token_parameters: ~azure.keyvault.v7_2.models.SASTokenParameter :param folder: Required. The Folder name of the blob where the previous successful full backup was stored. :type folder: str diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/__init__.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/__init__.py index 45bbefb596c1..f871fcce6e3a 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/__init__.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/__init__.py @@ -1,6 +1,8 @@ # coding=utf-8 # -------------------------------------------------------------------------- -# Code generated by Microsoft (R) AutoRest Code Generator (autorest: 3.0.6306, generator: {generator}) +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_key_vault_client_operations.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_key_vault_client_operations.py index 3c12ff62a347..2fa5299b841d 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_key_vault_client_operations.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_key_vault_client_operations.py @@ -8,13 +8,14 @@ from typing import TYPE_CHECKING import warnings -from azure.core.exceptions import HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import HttpRequest, HttpResponse from azure.core.polling import LROPoller, NoPolling, PollingMethod -from azure.core.polling.base_polling import LROBasePolling +from azure.mgmt.core.exceptions import ARMErrorFormat +from azure.mgmt.core.polling.arm_polling import ARMPolling -from .. import models +from .. import models as _models if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports @@ -28,15 +29,18 @@ class KeyVaultClientOperationsMixin(object): def _full_backup_initial( self, vault_base_url, # type: str - azure_storage_blob_container_uri=None, # type: Optional["models.SASTokenParameter"] + azure_storage_blob_container_uri=None, # type: Optional["_models.SASTokenParameter"] **kwargs # type: Any ): - # type: (...) -> "models.FullBackupOperation" - cls = kwargs.pop('cls', None) # type: ClsType["models.FullBackupOperation"] - error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + # type: (...) -> "_models.FullBackupOperation" + cls = kwargs.pop('cls', None) # type: ClsType["_models.FullBackupOperation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } error_map.update(kwargs.pop('error_map', {})) api_version = "7.2-preview" content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" # Construct URL url = self._full_backup_initial.metadata['url'] # type: ignore @@ -52,7 +56,7 @@ def _full_backup_initial( # Construct headers header_parameters = {} # type: Dict[str, Any] header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = 'application/json' + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') body_content_kwargs = {} # type: Dict[str, Any] if azure_storage_blob_container_uri is not None: @@ -61,14 +65,13 @@ def _full_backup_initial( body_content = None body_content_kwargs['content'] = body_content request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) response = pipeline_response.http_response if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize(models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) response_headers = {} response_headers['Retry-After']=self._deserialize('int', response.headers.get('Retry-After')) @@ -84,10 +87,10 @@ def _full_backup_initial( def begin_full_backup( self, vault_base_url, # type: str - azure_storage_blob_container_uri=None, # type: Optional["models.SASTokenParameter"] + azure_storage_blob_container_uri=None, # type: Optional["_models.SASTokenParameter"] **kwargs # type: Any ): - # type: (...) -> LROPoller["models.FullBackupOperation"] + # type: (...) -> LROPoller["_models.FullBackupOperation"] """Creates a full backup using a user-provided SAS token to an Azure blob storage container. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -98,16 +101,16 @@ def begin_full_backup( :type azure_storage_blob_container_uri: ~azure.keyvault.v7_2.models.SASTokenParameter :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: True for ARMPolling, False for no polling, or a - polling object for personal polling strategy + :keyword polling: Pass in True if you'd like the ARMPolling polling method, + False for no polling, or your own initialized polling object for a personal polling strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. :return: An instance of LROPoller that returns either FullBackupOperation or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.keyvault.v7_2.models.FullBackupOperation] :raises ~azure.core.exceptions.HttpResponseError: """ - polling = kwargs.pop('polling', False) # type: Union[bool, PollingMethod] - cls = kwargs.pop('cls', None) # type: ClsType["models.FullBackupOperation"] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.FullBackupOperation"] lro_delay = kwargs.pop( 'polling_interval', self._config.polling_interval @@ -135,7 +138,11 @@ def get_long_running_output(pipeline_response): return cls(pipeline_response, deserialized, response_headers) return deserialized - if polling is True: polling_method = LROBasePolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + path_format_arguments = { + 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), + } + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -155,7 +162,7 @@ def full_backup_status( job_id, # type: str **kwargs # type: Any ): - # type: (...) -> "models.FullBackupOperation" + # type: (...) -> "_models.FullBackupOperation" """Returns the status of full backup operation. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -167,10 +174,13 @@ def full_backup_status( :rtype: ~azure.keyvault.v7_2.models.FullBackupOperation :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["models.FullBackupOperation"] - error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + cls = kwargs.pop('cls', None) # type: ClsType["_models.FullBackupOperation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } error_map.update(kwargs.pop('error_map', {})) api_version = "7.2-preview" + accept = "application/json" # Construct URL url = self.full_backup_status.metadata['url'] # type: ignore @@ -186,7 +196,7 @@ def full_backup_status( # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = 'application/json' + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') request = self._client.get(url, query_parameters, header_parameters) pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) @@ -194,8 +204,8 @@ def full_backup_status( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize(models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('FullBackupOperation', pipeline_response) @@ -208,15 +218,18 @@ def full_backup_status( def _full_restore_operation_initial( self, vault_base_url, # type: str - restore_blob_details=None, # type: Optional["models.RestoreOperationParameters"] + restore_blob_details=None, # type: Optional["_models.RestoreOperationParameters"] **kwargs # type: Any ): - # type: (...) -> "models.RestoreOperation" - cls = kwargs.pop('cls', None) # type: ClsType["models.RestoreOperation"] - error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + # type: (...) -> "_models.RestoreOperation" + cls = kwargs.pop('cls', None) # type: ClsType["_models.RestoreOperation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } error_map.update(kwargs.pop('error_map', {})) api_version = "7.2-preview" content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" # Construct URL url = self._full_restore_operation_initial.metadata['url'] # type: ignore @@ -232,7 +245,7 @@ def _full_restore_operation_initial( # Construct headers header_parameters = {} # type: Dict[str, Any] header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = 'application/json' + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') body_content_kwargs = {} # type: Dict[str, Any] if restore_blob_details is not None: @@ -241,14 +254,13 @@ def _full_restore_operation_initial( body_content = None body_content_kwargs['content'] = body_content request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) response = pipeline_response.http_response if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize(models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) response_headers = {} response_headers['Retry-After']=self._deserialize('int', response.headers.get('Retry-After')) @@ -264,10 +276,10 @@ def _full_restore_operation_initial( def begin_full_restore_operation( self, vault_base_url, # type: str - restore_blob_details=None, # type: Optional["models.RestoreOperationParameters"] + restore_blob_details=None, # type: Optional["_models.RestoreOperationParameters"] **kwargs # type: Any ): - # type: (...) -> LROPoller["models.RestoreOperation"] + # type: (...) -> LROPoller["_models.RestoreOperation"] """Restores all key materials using the SAS token pointing to a previously stored Azure Blob storage backup folder. @@ -278,16 +290,16 @@ def begin_full_restore_operation( :type restore_blob_details: ~azure.keyvault.v7_2.models.RestoreOperationParameters :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: True for ARMPolling, False for no polling, or a - polling object for personal polling strategy + :keyword polling: Pass in True if you'd like the ARMPolling polling method, + False for no polling, or your own initialized polling object for a personal polling strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. :return: An instance of LROPoller that returns either RestoreOperation or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.keyvault.v7_2.models.RestoreOperation] :raises ~azure.core.exceptions.HttpResponseError: """ - polling = kwargs.pop('polling', False) # type: Union[bool, PollingMethod] - cls = kwargs.pop('cls', None) # type: ClsType["models.RestoreOperation"] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.RestoreOperation"] lro_delay = kwargs.pop( 'polling_interval', self._config.polling_interval @@ -315,7 +327,11 @@ def get_long_running_output(pipeline_response): return cls(pipeline_response, deserialized, response_headers) return deserialized - if polling is True: polling_method = LROBasePolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + path_format_arguments = { + 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), + } + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -335,7 +351,7 @@ def restore_status( job_id, # type: str **kwargs # type: Any ): - # type: (...) -> "models.RestoreOperation" + # type: (...) -> "_models.RestoreOperation" """Returns the status of restore operation. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -347,10 +363,13 @@ def restore_status( :rtype: ~azure.keyvault.v7_2.models.RestoreOperation :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["models.RestoreOperation"] - error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + cls = kwargs.pop('cls', None) # type: ClsType["_models.RestoreOperation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } error_map.update(kwargs.pop('error_map', {})) api_version = "7.2-preview" + accept = "application/json" # Construct URL url = self.restore_status.metadata['url'] # type: ignore @@ -366,7 +385,7 @@ def restore_status( # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = 'application/json' + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') request = self._client.get(url, query_parameters, header_parameters) pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) @@ -374,8 +393,8 @@ def restore_status( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize(models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('RestoreOperation', pipeline_response) @@ -389,15 +408,18 @@ def _selective_key_restore_operation_initial( self, vault_base_url, # type: str key_name, # type: str - restore_blob_details=None, # type: Optional["models.SelectiveKeyRestoreOperationParameters"] + restore_blob_details=None, # type: Optional["_models.SelectiveKeyRestoreOperationParameters"] **kwargs # type: Any ): - # type: (...) -> "models.SelectiveKeyRestoreOperation" - cls = kwargs.pop('cls', None) # type: ClsType["models.SelectiveKeyRestoreOperation"] - error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + # type: (...) -> "_models.SelectiveKeyRestoreOperation" + cls = kwargs.pop('cls', None) # type: ClsType["_models.SelectiveKeyRestoreOperation"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } error_map.update(kwargs.pop('error_map', {})) api_version = "7.2-preview" content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" # Construct URL url = self._selective_key_restore_operation_initial.metadata['url'] # type: ignore @@ -414,7 +436,7 @@ def _selective_key_restore_operation_initial( # Construct headers header_parameters = {} # type: Dict[str, Any] header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = 'application/json' + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') body_content_kwargs = {} # type: Dict[str, Any] if restore_blob_details is not None: @@ -423,14 +445,13 @@ def _selective_key_restore_operation_initial( body_content = None body_content_kwargs['content'] = body_content request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) response = pipeline_response.http_response if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize(models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) response_headers = {} response_headers['Retry-After']=self._deserialize('int', response.headers.get('Retry-After')) @@ -447,10 +468,10 @@ def begin_selective_key_restore_operation( self, vault_base_url, # type: str key_name, # type: str - restore_blob_details=None, # type: Optional["models.SelectiveKeyRestoreOperationParameters"] + restore_blob_details=None, # type: Optional["_models.SelectiveKeyRestoreOperationParameters"] **kwargs # type: Any ): - # type: (...) -> LROPoller["models.SelectiveKeyRestoreOperation"] + # type: (...) -> LROPoller["_models.SelectiveKeyRestoreOperation"] """Restores all key versions of a given key using user supplied SAS token pointing to a previously stored Azure Blob storage backup folder. @@ -463,16 +484,16 @@ def begin_selective_key_restore_operation( :type restore_blob_details: ~azure.keyvault.v7_2.models.SelectiveKeyRestoreOperationParameters :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: True for ARMPolling, False for no polling, or a - polling object for personal polling strategy + :keyword polling: Pass in True if you'd like the ARMPolling polling method, + False for no polling, or your own initialized polling object for a personal polling strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. :return: An instance of LROPoller that returns either SelectiveKeyRestoreOperation or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.keyvault.v7_2.models.SelectiveKeyRestoreOperation] :raises ~azure.core.exceptions.HttpResponseError: """ - polling = kwargs.pop('polling', False) # type: Union[bool, PollingMethod] - cls = kwargs.pop('cls', None) # type: ClsType["models.SelectiveKeyRestoreOperation"] + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["_models.SelectiveKeyRestoreOperation"] lro_delay = kwargs.pop( 'polling_interval', self._config.polling_interval @@ -501,7 +522,12 @@ def get_long_running_output(pipeline_response): return cls(pipeline_response, deserialized, response_headers) return deserialized - if polling is True: polling_method = LROBasePolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **kwargs) + path_format_arguments = { + 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), + 'keyName': self._serialize.url("key_name", key_name, 'str'), + } + + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_role_assignments_operations.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_role_assignments_operations.py index eb04fd51c698..905d9497bcd8 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_role_assignments_operations.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_role_assignments_operations.py @@ -8,12 +8,13 @@ from typing import TYPE_CHECKING import warnings -from azure.core.exceptions import HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.mgmt.core.exceptions import ARMErrorFormat -from .. import models +from .. import models as _models if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports @@ -36,7 +37,7 @@ class RoleAssignmentsOperations(object): :param deserializer: An object model deserializer. """ - models = models + models = _models def __init__(self, client, config, serializer, deserializer): self._client = client @@ -51,7 +52,7 @@ def delete( role_assignment_name, # type: str **kwargs # type: Any ): - # type: (...) -> "models.RoleAssignment" + # type: (...) -> "_models.RoleAssignment" """Deletes a role assignment. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -65,10 +66,13 @@ def delete( :rtype: ~azure.keyvault.v7_2.models.RoleAssignment :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["models.RoleAssignment"] - error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + cls = kwargs.pop('cls', None) # type: ClsType["_models.RoleAssignment"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } error_map.update(kwargs.pop('error_map', {})) api_version = "7.2-preview" + accept = "application/json" # Construct URL url = self.delete.metadata['url'] # type: ignore @@ -85,7 +89,7 @@ def delete( # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = 'application/json' + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') request = self._client.delete(url, query_parameters, header_parameters) pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) @@ -93,8 +97,8 @@ def delete( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize(models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('RoleAssignment', pipeline_response) @@ -109,10 +113,10 @@ def create( vault_base_url, # type: str scope, # type: str role_assignment_name, # type: str - parameters, # type: "models.RoleAssignmentCreateParameters" + parameters, # type: "_models.RoleAssignmentCreateParameters" **kwargs # type: Any ): - # type: (...) -> "models.RoleAssignment" + # type: (...) -> "_models.RoleAssignment" """Creates a role assignment. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -129,11 +133,14 @@ def create( :rtype: ~azure.keyvault.v7_2.models.RoleAssignment :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["models.RoleAssignment"] - error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + cls = kwargs.pop('cls', None) # type: ClsType["_models.RoleAssignment"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } error_map.update(kwargs.pop('error_map', {})) api_version = "7.2-preview" content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" # Construct URL url = self.create.metadata['url'] # type: ignore @@ -151,20 +158,19 @@ def create( # Construct headers header_parameters = {} # type: Dict[str, Any] header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') - header_parameters['Accept'] = 'application/json' + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') body_content_kwargs = {} # type: Dict[str, Any] body_content = self._serialize.body(parameters, 'RoleAssignmentCreateParameters') body_content_kwargs['content'] = body_content request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) - pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) response = pipeline_response.http_response if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize(models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('RoleAssignment', pipeline_response) @@ -181,7 +187,7 @@ def get( role_assignment_name, # type: str **kwargs # type: Any ): - # type: (...) -> "models.RoleAssignment" + # type: (...) -> "_models.RoleAssignment" """Get the specified role assignment. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -195,10 +201,13 @@ def get( :rtype: ~azure.keyvault.v7_2.models.RoleAssignment :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["models.RoleAssignment"] - error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + cls = kwargs.pop('cls', None) # type: ClsType["_models.RoleAssignment"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } error_map.update(kwargs.pop('error_map', {})) api_version = "7.2-preview" + accept = "application/json" # Construct URL url = self.get.metadata['url'] # type: ignore @@ -215,7 +224,7 @@ def get( # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = 'application/json' + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') request = self._client.get(url, query_parameters, header_parameters) pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) @@ -223,8 +232,8 @@ def get( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize(models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('RoleAssignment', pipeline_response) @@ -241,7 +250,7 @@ def list_for_scope( filter=None, # type: Optional[str] **kwargs # type: Any ): - # type: (...) -> Iterable["models.RoleAssignmentListResult"] + # type: (...) -> Iterable["_models.RoleAssignmentListResult"] """Gets role assignments for a scope. :param vault_base_url: The vault name, for example https://myvault.vault.azure.net. @@ -257,15 +266,18 @@ def list_for_scope( :rtype: ~azure.core.paging.ItemPaged[~azure.keyvault.v7_2.models.RoleAssignmentListResult] :raises: ~azure.core.exceptions.HttpResponseError """ - cls = kwargs.pop('cls', None) # type: ClsType["models.RoleAssignmentListResult"] - error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + cls = kwargs.pop('cls', None) # type: ClsType["_models.RoleAssignmentListResult"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } error_map.update(kwargs.pop('error_map', {})) api_version = "7.2-preview" + accept = "application/json" def prepare_request(next_link=None): # Construct headers header_parameters = {} # type: Dict[str, Any] - header_parameters['Accept'] = 'application/json' + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') if not next_link: # Construct URL @@ -307,9 +319,9 @@ def get_next(next_link=None): response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize(models.KeyVaultError, response) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, model=error) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_role_definitions_operations.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_role_definitions_operations.py index 3cfe5c94c9ff..7f909d19f166 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_role_definitions_operations.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_role_definitions_operations.py @@ -1,6 +1,8 @@ # coding=utf-8 # -------------------------------------------------------------------------- -# Code generated by Microsoft (R) AutoRest Code Generator (autorest: 3.0.6306, generator: {generator}) +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from typing import TYPE_CHECKING @@ -10,6 +12,7 @@ from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models @@ -27,7 +30,7 @@ class RoleDefinitionsOperations(object): instantiates it for you and attaches it as an attribute. :ivar models: Alias to model classes used in this operation group. - :type models: ~key_vault_client.models + :type models: ~azure.keyvault.v7_2.models :param client: Client for service requests. :param config: Configuration of service client. :param serializer: An object model serializer. @@ -60,7 +63,7 @@ def delete( :type role_definition_name: str :keyword callable cls: A custom type or function that will be passed the direct response :return: RoleDefinition, or the result of cls(response) - :rtype: ~key_vault_client.models.RoleDefinition + :rtype: ~azure.keyvault.v7_2.models.RoleDefinition :raises: ~azure.core.exceptions.HttpResponseError """ cls = kwargs.pop('cls', None) # type: ClsType["_models.RoleDefinition"] @@ -94,8 +97,8 @@ def delete( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('RoleDefinition', pipeline_response) @@ -125,10 +128,10 @@ def create_or_update( valid GUID. :type role_definition_name: str :param parameters: Parameters for the role definition. - :type parameters: ~key_vault_client.models.RoleDefinitionCreateParameters + :type parameters: ~azure.keyvault.v7_2.models.RoleDefinitionCreateParameters :keyword callable cls: A custom type or function that will be passed the direct response :return: RoleDefinition, or the result of cls(response) - :rtype: ~key_vault_client.models.RoleDefinition + :rtype: ~azure.keyvault.v7_2.models.RoleDefinition :raises: ~azure.core.exceptions.HttpResponseError """ cls = kwargs.pop('cls', None) # type: ClsType["_models.RoleDefinition"] @@ -167,8 +170,8 @@ def create_or_update( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('RoleDefinition', pipeline_response) @@ -196,7 +199,7 @@ def get( :type role_definition_name: str :keyword callable cls: A custom type or function that will be passed the direct response :return: RoleDefinition, or the result of cls(response) - :rtype: ~key_vault_client.models.RoleDefinition + :rtype: ~azure.keyvault.v7_2.models.RoleDefinition :raises: ~azure.core.exceptions.HttpResponseError """ cls = kwargs.pop('cls', None) # type: ClsType["_models.RoleDefinition"] @@ -230,8 +233,8 @@ def get( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) deserialized = self._deserialize('RoleDefinition', pipeline_response) @@ -260,7 +263,7 @@ def list( :type filter: str :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either RoleDefinitionListResult or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~key_vault_client.models.RoleDefinitionListResult] + :rtype: ~azure.core.paging.ItemPaged[~azure.keyvault.v7_2.models.RoleDefinitionListResult] :raises: ~azure.core.exceptions.HttpResponseError """ cls = kwargs.pop('cls', None) # type: ClsType["_models.RoleDefinitionListResult"] @@ -316,9 +319,9 @@ def get_next(next_link=None): response = pipeline_response.http_response if response.status_code not in [200]: - error = self._deserialize(_models.KeyVaultError, response) + error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, model=error) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response diff --git a/sdk/keyvault/azure-keyvault-administration/setup.py b/sdk/keyvault/azure-keyvault-administration/setup.py index f65c42761597..5ebe28bb4de4 100644 --- a/sdk/keyvault/azure-keyvault-administration/setup.py +++ b/sdk/keyvault/azure-keyvault-administration/setup.py @@ -67,6 +67,7 @@ "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", "License :: OSI Approved :: MIT License", ], zip_safe=False, @@ -79,7 +80,7 @@ "azure.keyvault", ] ), - install_requires=["azure-common~=1.1", "azure-core<2.0.0,>=1.7.0", "msrest>=0.6.0"], + install_requires=["azure-common~=1.1", "azure-core<2.0.0,>=1.7.0", "msrest>=0.6.21"], extras_require={ ":python_version<'3.0'": ["azure-keyvault-nspkg"], ":python_version<'3.4'": ["enum34>=1.0.4"], From 6de6e97ae10f4a399c28b197800217f7e9d3b360 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?McCoy=20Pati=C3=B1o?= Date: Mon, 1 Feb 2021 09:54:40 -0800 Subject: [PATCH 02/11] Add support for description, role_name --- .../administration/_access_control_client.py | 16 ++-- .../aio/_access_control_client.py | 47 +++++----- ..._access_control.test_role_definitions.yaml | 83 +++++++++--------- ...s_control_async.test_role_definitions.yaml | 87 +++++++++---------- .../tests/test_access_control.py | 11 ++- .../tests/test_access_control_async.py | 11 ++- 6 files changed, 139 insertions(+), 116 deletions(-) diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_access_control_client.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_access_control_client.py index 51e795965928..4212a571ad4e 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_access_control_client.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_access_control_client.py @@ -121,14 +121,15 @@ def set_role_definition(self, role_scope, permissions, **kwargs): :param permissions: the role definition's permissions. An empty list results in a role definition with no action permissions. :type permissions: Iterable[KeyVaultPermission] + :keyword str role_name: the role's name. If unspecified when creating or updating a role definition, the role + name will be set to an empty string. :keyword role_definition_name: the role definition's name. Must be a UUID. :type role_definition_name: str or uuid.UUID - :keyword assignable_scopes: the role definition's assignable scopes. - :type assignable_scopes: list[str] + :keyword str description: a description of the role definition. If unspecified when creating or updating a role + definition, the description will be set to an empty string. :returns: The created or updated role definition :rtype: KeyVaultRoleDefinition """ - role_definition_name = kwargs.pop("role_definition_name", None) or uuid4() permissions = [ self._client.role_definitions.models.Permission( actions=p.allowed_actions, @@ -140,14 +141,17 @@ def set_role_definition(self, role_scope, permissions, **kwargs): ] properties = self._client.role_definitions.models.RoleDefinitionProperties( - role_name=role_definition_name, permissions=permissions, **kwargs + role_name=kwargs.pop("role_name", None), + description=kwargs.pop("description", None), + permissions=permissions, + **kwargs ) parameters = self._client.role_definitions.models.RoleDefinitionCreateParameters(properties=properties) definition = self._client.role_definitions.create_or_update( vault_base_url=self._vault_url, scope=role_scope, - role_definition_name=role_definition_name, + role_definition_name=kwargs.pop("role_definition_name", None) or uuid4(), parameters=parameters, **kwargs ) @@ -178,7 +182,7 @@ def delete_role_definition(self, role_scope, role_definition_name, **kwargs): :param role_scope: scope of the role definition. :class:`KeyVaultRoleScope` defines common broad scopes. Specify a narrower scope as a string. Managed HSM only supports '/', or KeyVaultRoleScope.global_value. :type role_scope: str or KeyVaultRoleScope - :param role_definition_name: the role definition's name. Must be a UUID. + :param role_definition_name: the role definition's name. :type role_definition_name: str or uuid.UUID :returns: the deleted role definition :rtype: KeyVaultRoleDefinition diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/aio/_access_control_client.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/aio/_access_control_client.py index ba73fe21b2bd..7b1d84c1cdfe 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/aio/_access_control_client.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/aio/_access_control_client.py @@ -117,44 +117,47 @@ def list_role_assignments( @distributed_trace_async async def set_role_definition( - self, role_scope: "Union[str, KeyVaultRoleScope]", **kwargs: "Any" + self, role_scope: "Union[str, KeyVaultRoleScope]", permissions: "Iterable[KeyVaultPermission]", **kwargs: "Any" ) -> "KeyVaultRoleDefinition": """Creates or updates a custom role definition. :param role_scope: scope of the role definition. :class:`KeyVaultRoleScope` defines common broad scopes. Specify a narrower scope as a string. Managed HSM only supports '/', or KeyVaultRoleScope.global_value. :type role_scope: str or KeyVaultRoleScope + :param permissions: the role definition's permissions. An empty list results in a role definition with no action + permissions. + :type permissions: Iterable[KeyVaultPermission] + :keyword str role_name: the role's name. If unspecified when creating or updating a role definition, the role + name will be set to an empty string. :keyword role_definition_name: the role definition's name. Must be a UUID. :type role_definition_name: str or uuid.UUID - :keyword permissions: the role definition's permissions. - :type permissions: Iterable[KeyVaultPermission] - :keyword assignable_scopes: the role definition's assignable scopes. - :type assignable_scopes: list[str] + :keyword str description: a description of the role definition. If unspecified when creating or updating a role + definition, the description will be set to an empty string. :returns: The created or updated role definition :rtype: KeyVaultRoleDefinition """ - role_definition_name = kwargs.pop("role_definition_name", None) or uuid4() - permissions = kwargs.pop("permissions", None) - if permissions is not None: - permissions = [ - self._client.role_definitions.models.Permission( - actions=p.allowed_actions, - not_actions=p.denied_actions, - data_actions=p.allowed_data_actions, - not_data_actions=p.denied_data_actions, - ) - for p in permissions - ] + permissions = [ + self._client.role_definitions.models.Permission( + actions=p.allowed_actions, + not_actions=p.denied_actions, + data_actions=p.allowed_data_actions, + not_data_actions=p.denied_data_actions, + ) + for p in permissions + ] properties = self._client.role_definitions.models.RoleDefinitionProperties( - role_name=role_definition_name, permissions=permissions, **kwargs + role_name=kwargs.pop("role_name", None), + description=kwargs.pop("description", None), + permissions=permissions, + **kwargs ) parameters = self._client.role_definitions.models.RoleDefinitionCreateParameters(properties=properties) definition = await self._client.role_definitions.create_or_update( vault_base_url=self._vault_url, scope=role_scope, - role_definition_name=role_definition_name, + role_definition_name=kwargs.pop("role_definition_name", None) or uuid4(), parameters=parameters, **kwargs ) @@ -162,7 +165,7 @@ async def set_role_definition( @distributed_trace_async async def get_role_definition( - self, role_scope: "Union[str, KeyVaultRoleScope]", role_definition_name: "Union[str, UUID]", **kwargs: "Any" + self, role_scope: "Union[str, KeyVaultRoleScope]", role_definition_name: "Union[str, UUID]", **kwargs: "Any" ) -> "KeyVaultRoleDefinition": """Get the specified role definition. @@ -180,14 +183,14 @@ async def get_role_definition( @distributed_trace_async async def delete_role_definition( - self, role_scope: "Union[str, KeyVaultRoleScope]", role_definition_name: "Union[str, UUID]", **kwargs: "Any" + self, role_scope: "Union[str, KeyVaultRoleScope]", role_definition_name: "Union[str, UUID]", **kwargs: "Any" ) -> "KeyVaultRoleDefinition": """Deletes a custom role definition. :param role_scope: scope of the role definition. :class:`KeyVaultRoleScope` defines common broad scopes. Specify a narrower scope as a string. Managed HSM only supports '/', or KeyVaultRoleScope.global_value. :type role_scope: str or KeyVaultRoleScope - :param role_definition_name: the role definition's name. Must be a UUID. + :param role_definition_name: the role definition's name. :type role_definition_name: str or uuid.UUID :returns: the deleted role definition :rtype: KeyVaultRoleDefinition diff --git a/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control.test_role_definitions.yaml b/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control.test_role_definitions.yaml index 1292780607a6..7c29f457f273 100644 --- a/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control.test_role_definitions.yaml +++ b/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control.test_role_definitions.yaml @@ -36,9 +36,9 @@ interactions: x-frame-options: - SAMEORIGIN x-ms-build-version: - - 1.0.20210112-1-4fbf61ac-develop + - 1.0.20210128-1-4c3070d1-develop x-ms-server-latency: - - '2' + - '0' status: code: 401 message: Unauthorized @@ -81,19 +81,19 @@ interactions: x-frame-options: - SAMEORIGIN x-ms-build-version: - - 1.0.20210112-1-4fbf61ac-develop + - 1.0.20210128-1-4c3070d1-develop x-ms-keyvault-network-info: - - addr=162.211.216.102 + - addr=174.127.232.53 x-ms-keyvault-region: - - eastus2 + - northeurope x-ms-server-latency: - - '353' + - '1' status: code: 200 message: OK - request: - body: '{"properties": {"roleName": "definition-name", "permissions": [{"dataActions": - ["Microsoft.KeyVault/managedHsm/keys/read/action"]}]}}' + body: '{"properties": {"description": "test", "roleName": "role-name626010ec", + "permissions": [{"dataActions": ["Microsoft.KeyVault/managedHsm/keys/read/action"]}]}}' headers: Accept: - application/json @@ -102,7 +102,7 @@ interactions: Connection: - keep-alive Content-Length: - - '154' + - '158' Content-Type: - application/json User-Agent: @@ -111,12 +111,12 @@ interactions: uri: https://managedhsm/providers/Microsoft.Authorization/roleDefinitions/definition-name?api-version=7.2-preview response: body: - string: '{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/definition-name","name":"definition-name","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":["Microsoft.KeyVault/managedHsm/keys/read/action"],"notActions":[],"notDataActions":[]}],"roleName":"definition-name","type":"CustomRole"},"type":"Microsoft.Authorization/roleDefinitions"}' + string: '{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/definition-name","name":"definition-name","properties":{"assignableScopes":["/"],"description":"test","permissions":[{"actions":[],"dataActions":["Microsoft.KeyVault/managedHsm/keys/read/action"],"notActions":[],"notDataActions":[]}],"roleName":"role-name626010ec","type":"CustomRole"},"type":"Microsoft.Authorization/roleDefinitions"}' headers: cache-control: - no-cache content-length: - - '468' + - '453' content-security-policy: - default-src 'self' content-type: @@ -128,17 +128,16 @@ interactions: x-frame-options: - SAMEORIGIN x-ms-keyvault-network-info: - - addr=162.211.216.102 + - addr=174.127.232.53 x-ms-keyvault-region: - - eastus2 + - northeurope x-ms-server-latency: - - '53' + - '57' status: code: 201 message: Created - request: - body: '{"properties": {"roleName": "definition-name", "permissions": [{"notDataActions": - ["Microsoft.KeyVault/managedHsm/keys/read/action"], "dataActions": []}]}}' + body: '{"properties": {"permissions": [{"dataActions": [], "notDataActions": ["Microsoft.KeyVault/managedHsm/keys/read/action"]}]}}' headers: Accept: - application/json @@ -147,7 +146,7 @@ interactions: Connection: - keep-alive Content-Length: - - '176' + - '124' Content-Type: - application/json User-Agent: @@ -156,12 +155,12 @@ interactions: uri: https://managedhsm/providers/Microsoft.Authorization/roleDefinitions/definition-name?api-version=7.2-preview response: body: - string: '{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/definition-name","name":"definition-name","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":[],"notActions":[],"notDataActions":["Microsoft.KeyVault/managedHsm/keys/read/action"]}],"roleName":"definition-name","type":"CustomRole"},"type":"Microsoft.Authorization/roleDefinitions"}' + string: '{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/definition-name","name":"definition-name","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":[],"notActions":[],"notDataActions":["Microsoft.KeyVault/managedHsm/keys/read/action"]}],"roleName":"","type":"CustomRole"},"type":"Microsoft.Authorization/roleDefinitions"}' headers: cache-control: - no-cache content-length: - - '468' + - '432' content-security-policy: - default-src 'self' content-type: @@ -173,11 +172,11 @@ interactions: x-frame-options: - SAMEORIGIN x-ms-keyvault-network-info: - - addr=162.211.216.102 + - addr=174.127.232.53 x-ms-keyvault-region: - - eastus2 + - northeurope x-ms-server-latency: - - '57' + - '49' status: code: 201 message: Created @@ -203,12 +202,12 @@ interactions: HSM Policy Administrator","type":"AKVBuiltInRole"},"type":"Microsoft.Authorization/roleDefinitions"},{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/21dbd100-6940-42c2-9190-5d6cb909625b","name":"21dbd100-6940-42c2-9190-5d6cb909625b","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":["Microsoft.KeyVault/managedHsm/keys/read/action","Microsoft.KeyVault/managedHsm/keys/write/action","Microsoft.KeyVault/managedHsm/keys/backup/action","Microsoft.KeyVault/managedHsm/keys/create","Microsoft.KeyVault/managedHsm/keys/encrypt/action","Microsoft.KeyVault/managedHsm/keys/decrypt/action","Microsoft.KeyVault/managedHsm/keys/wrap/action","Microsoft.KeyVault/managedHsm/keys/unwrap/action","Microsoft.KeyVault/managedHsm/keys/sign/action","Microsoft.KeyVault/managedHsm/keys/verify/action"],"notActions":[],"notDataActions":[]}],"roleName":"Managed HSM Crypto User","type":"AKVBuiltInRole"},"type":"Microsoft.Authorization/roleDefinitions"},{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/515eb02d-2335-4d2d-92f2-b1cbdf9c3778","name":"515eb02d-2335-4d2d-92f2-b1cbdf9c3778","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":["Microsoft.KeyVault/managedHsm/keys/read/action","Microsoft.KeyVault/managedHsm/keys/write/action","Microsoft.KeyVault/managedHsm/keys/deletedKeys/read/action","Microsoft.KeyVault/managedHsm/keys/deletedKeys/recover/action","Microsoft.KeyVault/managedHsm/keys/backup/action","Microsoft.KeyVault/managedHsm/keys/restore/action","Microsoft.KeyVault/managedHsm/keys/encrypt/action","Microsoft.KeyVault/managedHsm/keys/decrypt/action","Microsoft.KeyVault/managedHsm/keys/sign/action","Microsoft.KeyVault/managedHsm/keys/verify/action","Microsoft.KeyVault/managedHsm/keys/wrap/action","Microsoft.KeyVault/managedHsm/keys/unwrap/action","Microsoft.KeyVault/managedHsm/keys/create","Microsoft.KeyVault/managedHsm/keys/delete","Microsoft.KeyVault/managedHsm/keys/export/action","Microsoft.KeyVault/managedHsm/keys/import/action","Microsoft.KeyVault/managedHsm/keys/deletedKeys/delete"],"notActions":[],"notDataActions":[]}],"roleName":"Managed HSM Crypto Officer","type":"AKVBuiltInRole"},"type":"Microsoft.Authorization/roleDefinitions"},{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/a290e904-7015-4bba-90c8-60543313cdb4","name":"a290e904-7015-4bba-90c8-60543313cdb4","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":["Microsoft.KeyVault/managedHsm/keys/read/action","Microsoft.KeyVault/managedHsm/keys/write/action","Microsoft.KeyVault/managedHsm/keys/deletedKeys/read/action","Microsoft.KeyVault/managedHsm/keys/deletedKeys/recover/action","Microsoft.KeyVault/managedHsm/keys/backup/action","Microsoft.KeyVault/managedHsm/keys/restore/action","Microsoft.KeyVault/managedHsm/roleAssignments/delete/action","Microsoft.KeyVault/managedHsm/roleAssignments/read/action","Microsoft.KeyVault/managedHsm/roleAssignments/write/action","Microsoft.KeyVault/managedHsm/roleDefinitions/read/action","Microsoft.KeyVault/managedHsm/roleDefinitions/write/action","Microsoft.KeyVault/managedHsm/roleDefinitions/delete/action","Microsoft.KeyVault/managedHsm/keys/encrypt/action","Microsoft.KeyVault/managedHsm/keys/decrypt/action","Microsoft.KeyVault/managedHsm/keys/wrap/action","Microsoft.KeyVault/managedHsm/keys/unwrap/action","Microsoft.KeyVault/managedHsm/keys/sign/action","Microsoft.KeyVault/managedHsm/keys/verify/action","Microsoft.KeyVault/managedHsm/keys/create","Microsoft.KeyVault/managedHsm/keys/delete","Microsoft.KeyVault/managedHsm/keys/export/action","Microsoft.KeyVault/managedHsm/keys/import/action","Microsoft.KeyVault/managedHsm/keys/deletedKeys/delete","Microsoft.KeyVault/managedHsm/securitydomain/download/action","Microsoft.KeyVault/managedHsm/securitydomain/upload/action","Microsoft.KeyVault/managedHsm/securitydomain/upload/read","Microsoft.KeyVault/managedHsm/securitydomain/transferkey/read","Microsoft.KeyVault/managedHsm/backup/start/action","Microsoft.KeyVault/managedHsm/restore/start/action","Microsoft.KeyVault/managedHsm/backup/status/action","Microsoft.KeyVault/managedHsm/restore/status/action"],"notActions":[],"notDataActions":[]}],"roleName":"Managed - HSM Administrator","type":"AKVBuiltInRole"},"type":"Microsoft.Authorization/roleDefinitions"},{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/definition-name","name":"definition-name","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":[],"notActions":[],"notDataActions":["Microsoft.KeyVault/managedHsm/keys/read/action"]}],"roleName":"definition-name","type":"CustomRole"},"type":"Microsoft.Authorization/roleDefinitions"}]}' + HSM Administrator","type":"AKVBuiltInRole"},"type":"Microsoft.Authorization/roleDefinitions"},{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/definition-name","name":"definition-name","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":[],"notActions":[],"notDataActions":["Microsoft.KeyVault/managedHsm/keys/read/action"]}],"roleName":"","type":"CustomRole"},"type":"Microsoft.Authorization/roleDefinitions"}]}' headers: cache-control: - no-cache content-length: - - '7241' + - '7205' content-security-policy: - default-src 'self' content-type: @@ -220,13 +219,13 @@ interactions: x-frame-options: - SAMEORIGIN x-ms-build-version: - - 1.0.20210112-1-4fbf61ac-develop + - 1.0.20210128-1-4c3070d1-develop x-ms-keyvault-network-info: - - addr=162.211.216.102 + - addr=174.127.232.53 x-ms-keyvault-region: - - eastus2 + - northeurope x-ms-server-latency: - - '1' + - '0' status: code: 200 message: OK @@ -245,12 +244,12 @@ interactions: uri: https://managedhsm/providers/Microsoft.Authorization/roleDefinitions/definition-name?api-version=7.2-preview response: body: - string: '{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/definition-name","name":"definition-name","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":[],"notActions":[],"notDataActions":["Microsoft.KeyVault/managedHsm/keys/read/action"]}],"roleName":"definition-name","type":"CustomRole"},"type":"Microsoft.Authorization/roleDefinitions"}' + string: '{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/definition-name","name":"definition-name","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":[],"notActions":[],"notDataActions":["Microsoft.KeyVault/managedHsm/keys/read/action"]}],"roleName":"","type":"CustomRole"},"type":"Microsoft.Authorization/roleDefinitions"}' headers: cache-control: - no-cache content-length: - - '468' + - '432' content-security-policy: - default-src 'self' content-type: @@ -262,13 +261,13 @@ interactions: x-frame-options: - SAMEORIGIN x-ms-build-version: - - 1.0.20210112-1-4fbf61ac-develop + - 1.0.20210128-1-4c3070d1-develop x-ms-keyvault-network-info: - - addr=162.211.216.102 + - addr=174.127.232.53 x-ms-keyvault-region: - - eastus2 + - northeurope x-ms-server-latency: - - '1' + - '0' status: code: 200 message: OK @@ -289,12 +288,12 @@ interactions: uri: https://managedhsm/providers/Microsoft.Authorization/roleDefinitions/definition-name?api-version=7.2-preview response: body: - string: '{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/definition-name","name":"definition-name","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":[],"notActions":[],"notDataActions":["Microsoft.KeyVault/managedHsm/keys/read/action"]}],"roleName":"definition-name","type":"CustomRole"},"type":"Microsoft.Authorization/roleDefinitions"}' + string: '{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/definition-name","name":"definition-name","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":[],"notActions":[],"notDataActions":["Microsoft.KeyVault/managedHsm/keys/read/action"]}],"roleName":"","type":"CustomRole"},"type":"Microsoft.Authorization/roleDefinitions"}' headers: cache-control: - no-cache content-length: - - '468' + - '432' content-security-policy: - default-src 'self' content-type: @@ -306,11 +305,11 @@ interactions: x-frame-options: - SAMEORIGIN x-ms-keyvault-network-info: - - addr=162.211.216.102 + - addr=174.127.232.53 x-ms-keyvault-region: - - eastus2 + - northeurope x-ms-server-latency: - - '44' + - '50' status: code: 200 message: OK @@ -353,11 +352,11 @@ interactions: x-frame-options: - SAMEORIGIN x-ms-build-version: - - 1.0.20210112-1-4fbf61ac-develop + - 1.0.20210128-1-4c3070d1-develop x-ms-keyvault-network-info: - - addr=162.211.216.102 + - addr=174.127.232.53 x-ms-keyvault-region: - - eastus2 + - northeurope x-ms-server-latency: - '0' status: diff --git a/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control_async.test_role_definitions.yaml b/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control_async.test_role_definitions.yaml index b8cd67e50085..64278137e7e5 100644 --- a/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control_async.test_role_definitions.yaml +++ b/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control_async.test_role_definitions.yaml @@ -23,8 +23,8 @@ interactions: resource="https://managedhsm.azure.net" x-content-type-options: nosniff x-frame-options: SAMEORIGIN - x-ms-build-version: 1.0.20210112-1-4fbf61ac-develop - x-ms-server-latency: '1' + x-ms-build-version: 1.0.20210128-1-4c3070d1-develop + x-ms-server-latency: '0' status: code: 401 message: Unauthorized @@ -56,22 +56,22 @@ interactions: strict-transport-security: max-age=31536000; includeSubDomains x-content-type-options: nosniff x-frame-options: SAMEORIGIN - x-ms-build-version: 1.0.20210112-1-4fbf61ac-develop - x-ms-keyvault-network-info: addr=162.211.216.102 - x-ms-keyvault-region: eastus2 + x-ms-build-version: 1.0.20210128-1-4c3070d1-develop + x-ms-keyvault-network-info: addr=174.127.232.53 + x-ms-keyvault-region: northeurope x-ms-server-latency: '1' status: code: 200 message: OK url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions?api-version=7.2-preview - request: - body: '{"properties": {"roleName": "definition-name", "permissions": [{"dataActions": - ["Microsoft.KeyVault/managedHsm/keys/read/action"]}]}}' + body: '{"properties": {"description": "test", "permissions": [{"dataActions": + ["Microsoft.KeyVault/managedHsm/keys/read/action"]}], "roleName": "role-named15f1369"}}' headers: Accept: - application/json Content-Length: - - '154' + - '158' Content-Type: - application/json User-Agent: @@ -80,30 +80,29 @@ interactions: uri: https://managedhsm/providers/Microsoft.Authorization/roleDefinitions/definition-name?api-version=7.2-preview response: body: - string: '{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/definition-name","name":"definition-name","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":["Microsoft.KeyVault/managedHsm/keys/read/action"],"notActions":[],"notDataActions":[]}],"roleName":"definition-name","type":"CustomRole"},"type":"Microsoft.Authorization/roleDefinitions"}' + string: '{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/definition-name","name":"definition-name","properties":{"assignableScopes":["/"],"description":"test","permissions":[{"actions":[],"dataActions":["Microsoft.KeyVault/managedHsm/keys/read/action"],"notActions":[],"notDataActions":[]}],"roleName":"role-named15f1369","type":"CustomRole"},"type":"Microsoft.Authorization/roleDefinitions"}' headers: cache-control: no-cache - content-length: '468' + content-length: '453' content-security-policy: default-src 'self' content-type: application/json; charset=utf-8 strict-transport-security: max-age=31536000; includeSubDomains x-content-type-options: nosniff x-frame-options: SAMEORIGIN - x-ms-keyvault-network-info: addr=162.211.216.102 - x-ms-keyvault-region: eastus2 - x-ms-server-latency: '36' + x-ms-keyvault-network-info: addr=174.127.232.53 + x-ms-keyvault-region: northeurope + x-ms-server-latency: '49' status: code: 201 message: Created - url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/bc61b7be-db21-4213-bc8f-1f0a3715b316?api-version=7.2-preview + url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/23ceffd8-d2a5-49a3-871f-1356c18ca245?api-version=7.2-preview - request: - body: '{"properties": {"roleName": "definition-name", "permissions": [{"notDataActions": - ["Microsoft.KeyVault/managedHsm/keys/read/action"], "dataActions": []}]}}' + body: '{"properties": {"permissions": [{"dataActions": [], "notDataActions": ["Microsoft.KeyVault/managedHsm/keys/read/action"]}]}}' headers: Accept: - application/json Content-Length: - - '176' + - '124' Content-Type: - application/json User-Agent: @@ -112,22 +111,22 @@ interactions: uri: https://managedhsm/providers/Microsoft.Authorization/roleDefinitions/definition-name?api-version=7.2-preview response: body: - string: '{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/definition-name","name":"definition-name","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":[],"notActions":[],"notDataActions":["Microsoft.KeyVault/managedHsm/keys/read/action"]}],"roleName":"definition-name","type":"CustomRole"},"type":"Microsoft.Authorization/roleDefinitions"}' + string: '{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/definition-name","name":"definition-name","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":[],"notActions":[],"notDataActions":["Microsoft.KeyVault/managedHsm/keys/read/action"]}],"roleName":"","type":"CustomRole"},"type":"Microsoft.Authorization/roleDefinitions"}' headers: cache-control: no-cache - content-length: '468' + content-length: '432' content-security-policy: default-src 'self' content-type: application/json; charset=utf-8 strict-transport-security: max-age=31536000; includeSubDomains x-content-type-options: nosniff x-frame-options: SAMEORIGIN - x-ms-keyvault-network-info: addr=162.211.216.102 - x-ms-keyvault-region: eastus2 - x-ms-server-latency: '39' + x-ms-keyvault-network-info: addr=174.127.232.53 + x-ms-keyvault-region: northeurope + x-ms-server-latency: '47' status: code: 201 message: Created - url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/bc61b7be-db21-4213-bc8f-1f0a3715b316?api-version=7.2-preview + url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/23ceffd8-d2a5-49a3-871f-1356c18ca245?api-version=7.2-preview - request: body: null headers: @@ -146,19 +145,19 @@ interactions: HSM Policy Administrator","type":"AKVBuiltInRole"},"type":"Microsoft.Authorization/roleDefinitions"},{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/21dbd100-6940-42c2-9190-5d6cb909625b","name":"21dbd100-6940-42c2-9190-5d6cb909625b","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":["Microsoft.KeyVault/managedHsm/keys/read/action","Microsoft.KeyVault/managedHsm/keys/write/action","Microsoft.KeyVault/managedHsm/keys/backup/action","Microsoft.KeyVault/managedHsm/keys/create","Microsoft.KeyVault/managedHsm/keys/encrypt/action","Microsoft.KeyVault/managedHsm/keys/decrypt/action","Microsoft.KeyVault/managedHsm/keys/wrap/action","Microsoft.KeyVault/managedHsm/keys/unwrap/action","Microsoft.KeyVault/managedHsm/keys/sign/action","Microsoft.KeyVault/managedHsm/keys/verify/action"],"notActions":[],"notDataActions":[]}],"roleName":"Managed HSM Crypto User","type":"AKVBuiltInRole"},"type":"Microsoft.Authorization/roleDefinitions"},{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/515eb02d-2335-4d2d-92f2-b1cbdf9c3778","name":"515eb02d-2335-4d2d-92f2-b1cbdf9c3778","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":["Microsoft.KeyVault/managedHsm/keys/read/action","Microsoft.KeyVault/managedHsm/keys/write/action","Microsoft.KeyVault/managedHsm/keys/deletedKeys/read/action","Microsoft.KeyVault/managedHsm/keys/deletedKeys/recover/action","Microsoft.KeyVault/managedHsm/keys/backup/action","Microsoft.KeyVault/managedHsm/keys/restore/action","Microsoft.KeyVault/managedHsm/keys/encrypt/action","Microsoft.KeyVault/managedHsm/keys/decrypt/action","Microsoft.KeyVault/managedHsm/keys/sign/action","Microsoft.KeyVault/managedHsm/keys/verify/action","Microsoft.KeyVault/managedHsm/keys/wrap/action","Microsoft.KeyVault/managedHsm/keys/unwrap/action","Microsoft.KeyVault/managedHsm/keys/create","Microsoft.KeyVault/managedHsm/keys/delete","Microsoft.KeyVault/managedHsm/keys/export/action","Microsoft.KeyVault/managedHsm/keys/import/action","Microsoft.KeyVault/managedHsm/keys/deletedKeys/delete"],"notActions":[],"notDataActions":[]}],"roleName":"Managed HSM Crypto Officer","type":"AKVBuiltInRole"},"type":"Microsoft.Authorization/roleDefinitions"},{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/a290e904-7015-4bba-90c8-60543313cdb4","name":"a290e904-7015-4bba-90c8-60543313cdb4","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":["Microsoft.KeyVault/managedHsm/keys/read/action","Microsoft.KeyVault/managedHsm/keys/write/action","Microsoft.KeyVault/managedHsm/keys/deletedKeys/read/action","Microsoft.KeyVault/managedHsm/keys/deletedKeys/recover/action","Microsoft.KeyVault/managedHsm/keys/backup/action","Microsoft.KeyVault/managedHsm/keys/restore/action","Microsoft.KeyVault/managedHsm/roleAssignments/delete/action","Microsoft.KeyVault/managedHsm/roleAssignments/read/action","Microsoft.KeyVault/managedHsm/roleAssignments/write/action","Microsoft.KeyVault/managedHsm/roleDefinitions/read/action","Microsoft.KeyVault/managedHsm/roleDefinitions/write/action","Microsoft.KeyVault/managedHsm/roleDefinitions/delete/action","Microsoft.KeyVault/managedHsm/keys/encrypt/action","Microsoft.KeyVault/managedHsm/keys/decrypt/action","Microsoft.KeyVault/managedHsm/keys/wrap/action","Microsoft.KeyVault/managedHsm/keys/unwrap/action","Microsoft.KeyVault/managedHsm/keys/sign/action","Microsoft.KeyVault/managedHsm/keys/verify/action","Microsoft.KeyVault/managedHsm/keys/create","Microsoft.KeyVault/managedHsm/keys/delete","Microsoft.KeyVault/managedHsm/keys/export/action","Microsoft.KeyVault/managedHsm/keys/import/action","Microsoft.KeyVault/managedHsm/keys/deletedKeys/delete","Microsoft.KeyVault/managedHsm/securitydomain/download/action","Microsoft.KeyVault/managedHsm/securitydomain/upload/action","Microsoft.KeyVault/managedHsm/securitydomain/upload/read","Microsoft.KeyVault/managedHsm/securitydomain/transferkey/read","Microsoft.KeyVault/managedHsm/backup/start/action","Microsoft.KeyVault/managedHsm/restore/start/action","Microsoft.KeyVault/managedHsm/backup/status/action","Microsoft.KeyVault/managedHsm/restore/status/action"],"notActions":[],"notDataActions":[]}],"roleName":"Managed - HSM Administrator","type":"AKVBuiltInRole"},"type":"Microsoft.Authorization/roleDefinitions"},{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/definition-name","name":"definition-name","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":[],"notActions":[],"notDataActions":["Microsoft.KeyVault/managedHsm/keys/read/action"]}],"roleName":"definition-name","type":"CustomRole"},"type":"Microsoft.Authorization/roleDefinitions"}]}' + HSM Administrator","type":"AKVBuiltInRole"},"type":"Microsoft.Authorization/roleDefinitions"},{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/definition-name","name":"definition-name","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":[],"notActions":[],"notDataActions":["Microsoft.KeyVault/managedHsm/keys/read/action"]}],"roleName":"","type":"CustomRole"},"type":"Microsoft.Authorization/roleDefinitions"}]}' headers: cache-control: no-cache - content-length: '7241' + content-length: '7205' content-security-policy: default-src 'self' content-type: application/json; charset=utf-8 strict-transport-security: max-age=31536000; includeSubDomains x-content-type-options: nosniff x-frame-options: SAMEORIGIN - x-ms-build-version: 1.0.20210112-1-4fbf61ac-develop - x-ms-keyvault-network-info: addr=162.211.216.102 - x-ms-keyvault-region: eastus2 - x-ms-server-latency: '0' + x-ms-build-version: 1.0.20210128-1-4c3070d1-develop + x-ms-keyvault-network-info: addr=174.127.232.53 + x-ms-keyvault-region: northeurope + x-ms-server-latency: '1' status: code: 200 message: OK @@ -174,23 +173,23 @@ interactions: uri: https://managedhsm/providers/Microsoft.Authorization/roleDefinitions/definition-name?api-version=7.2-preview response: body: - string: '{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/definition-name","name":"definition-name","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":[],"notActions":[],"notDataActions":["Microsoft.KeyVault/managedHsm/keys/read/action"]}],"roleName":"definition-name","type":"CustomRole"},"type":"Microsoft.Authorization/roleDefinitions"}' + string: '{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/definition-name","name":"definition-name","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":[],"notActions":[],"notDataActions":["Microsoft.KeyVault/managedHsm/keys/read/action"]}],"roleName":"","type":"CustomRole"},"type":"Microsoft.Authorization/roleDefinitions"}' headers: cache-control: no-cache - content-length: '468' + content-length: '432' content-security-policy: default-src 'self' content-type: application/json; charset=utf-8 strict-transport-security: max-age=31536000; includeSubDomains x-content-type-options: nosniff x-frame-options: SAMEORIGIN - x-ms-build-version: 1.0.20210112-1-4fbf61ac-develop - x-ms-keyvault-network-info: addr=162.211.216.102 - x-ms-keyvault-region: eastus2 + x-ms-build-version: 1.0.20210128-1-4c3070d1-develop + x-ms-keyvault-network-info: addr=174.127.232.53 + x-ms-keyvault-region: northeurope x-ms-server-latency: '0' status: code: 200 message: OK - url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/bc61b7be-db21-4213-bc8f-1f0a3715b316?api-version=7.2-preview + url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/23ceffd8-d2a5-49a3-871f-1356c18ca245?api-version=7.2-preview - request: body: null headers: @@ -202,22 +201,22 @@ interactions: uri: https://managedhsm/providers/Microsoft.Authorization/roleDefinitions/definition-name?api-version=7.2-preview response: body: - string: '{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/definition-name","name":"definition-name","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":[],"notActions":[],"notDataActions":["Microsoft.KeyVault/managedHsm/keys/read/action"]}],"roleName":"definition-name","type":"CustomRole"},"type":"Microsoft.Authorization/roleDefinitions"}' + string: '{"id":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/definition-name","name":"definition-name","properties":{"assignableScopes":["/"],"description":"","permissions":[{"actions":[],"dataActions":[],"notActions":[],"notDataActions":["Microsoft.KeyVault/managedHsm/keys/read/action"]}],"roleName":"","type":"CustomRole"},"type":"Microsoft.Authorization/roleDefinitions"}' headers: cache-control: no-cache - content-length: '468' + content-length: '432' content-security-policy: default-src 'self' content-type: application/json; charset=utf-8 strict-transport-security: max-age=31536000; includeSubDomains x-content-type-options: nosniff x-frame-options: SAMEORIGIN - x-ms-keyvault-network-info: addr=162.211.216.102 - x-ms-keyvault-region: eastus2 - x-ms-server-latency: '42' + x-ms-keyvault-network-info: addr=174.127.232.53 + x-ms-keyvault-region: northeurope + x-ms-server-latency: '64' status: code: 200 message: OK - url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/bc61b7be-db21-4213-bc8f-1f0a3715b316?api-version=7.2-preview + url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/23ceffd8-d2a5-49a3-871f-1356c18ca245?api-version=7.2-preview - request: body: null headers: @@ -245,9 +244,9 @@ interactions: strict-transport-security: max-age=31536000; includeSubDomains x-content-type-options: nosniff x-frame-options: SAMEORIGIN - x-ms-build-version: 1.0.20210112-1-4fbf61ac-develop - x-ms-keyvault-network-info: addr=162.211.216.102 - x-ms-keyvault-region: eastus2 + x-ms-build-version: 1.0.20210128-1-4c3070d1-develop + x-ms-keyvault-network-info: addr=174.127.232.53 + x-ms-keyvault-region: northeurope x-ms-server-latency: '0' status: code: 200 diff --git a/sdk/keyvault/azure-keyvault-administration/tests/test_access_control.py b/sdk/keyvault/azure-keyvault-administration/tests/test_access_control.py index c24c3894ab23..bfe394aa41fd 100644 --- a/sdk/keyvault/azure-keyvault-administration/tests/test_access_control.py +++ b/sdk/keyvault/azure-keyvault-administration/tests/test_access_control.py @@ -58,13 +58,20 @@ def test_role_definitions(self): assert len(original_definitions) # create custom role definition + role_name = self.get_resource_name("role-name") definition_name = self.get_replayable_uuid("definition-name") permissions = [KeyVaultPermission(allowed_data_actions=[KeyVaultDataAction.READ_HSM_KEY])] created_definition = client.set_role_definition( - role_scope=scope, permissions=permissions, role_definition_name=definition_name + role_scope=scope, + permissions=permissions, + role_name=role_name, + role_definition_name=definition_name, + description="test" ) assert "/" in created_definition.assignable_scopes + assert created_definition.role_name == role_name assert created_definition.name == definition_name + assert created_definition.description == "test" assert len(created_definition.permissions) == 1 assert created_definition.permissions[0].allowed_data_actions == [KeyVaultDataAction.READ_HSM_KEY] @@ -75,6 +82,8 @@ def test_role_definitions(self): updated_definition = client.set_role_definition( role_scope=scope, permissions=permissions, role_definition_name=definition_name ) + assert updated_definition.role_name == "" + assert updated_definition.description == "" assert len(updated_definition.permissions) == 1 assert len(updated_definition.permissions[0].allowed_data_actions) == 0 assert updated_definition.permissions[0].denied_data_actions == [KeyVaultDataAction.READ_HSM_KEY] diff --git a/sdk/keyvault/azure-keyvault-administration/tests/test_access_control_async.py b/sdk/keyvault/azure-keyvault-administration/tests/test_access_control_async.py index 41b9bafd8356..5dab265386df 100644 --- a/sdk/keyvault/azure-keyvault-administration/tests/test_access_control_async.py +++ b/sdk/keyvault/azure-keyvault-administration/tests/test_access_control_async.py @@ -68,13 +68,20 @@ async def test_role_definitions(self): assert len(original_definitions) # create custom role definition + role_name = self.get_resource_name("role-name") definition_name = self.get_replayable_uuid("definition-name") permissions = [KeyVaultPermission(allowed_data_actions=[KeyVaultDataAction.READ_HSM_KEY])] created_definition = await client.set_role_definition( - role_scope=scope, permissions=permissions, role_definition_name=definition_name + role_scope=scope, + permissions=permissions, + role_name=role_name, + role_definition_name=definition_name, + description="test" ) assert "/" in created_definition.assignable_scopes + assert created_definition.role_name == role_name assert created_definition.name == definition_name + assert created_definition.description == "test" assert len(created_definition.permissions) == 1 assert created_definition.permissions[0].allowed_data_actions == [KeyVaultDataAction.READ_HSM_KEY] @@ -85,6 +92,8 @@ async def test_role_definitions(self): updated_definition = await client.set_role_definition( role_scope=scope, permissions=permissions, role_definition_name=definition_name ) + assert updated_definition.role_name == "" + assert updated_definition.description == "" assert len(updated_definition.permissions) == 1 assert len(updated_definition.permissions[0].allowed_data_actions) == 0 assert updated_definition.permissions[0].denied_data_actions == [KeyVaultDataAction.READ_HSM_KEY] From 2321053980cb6fff466f6e5ccd52f65e57ccd519 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?McCoy=20Pati=C3=B1o?= Date: Thu, 4 Feb 2021 17:54:49 -0800 Subject: [PATCH 03/11] Less kwarg passing, better docstrings --- .../azure/keyvault/administration/_access_control_client.py | 5 ++--- .../keyvault/administration/aio/_access_control_client.py | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_access_control_client.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_access_control_client.py index 4212a571ad4e..441bb826c9d3 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_access_control_client.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_access_control_client.py @@ -66,7 +66,7 @@ def delete_role_assignment(self, role_scope, role_assignment_name, **kwargs): :param role_scope: the assignment's scope, for example "/", "/keys", or "/keys/" :class:`KeyVaultRoleScope` defines common broad scopes. Specify a narrower scope as a string. :type role_scope: str or KeyVaultRoleScope - :param role_assignment_name: the assignment's name. Must be a UUID. + :param role_assignment_name: the assignment's name. :type role_assignment_name: str or uuid.UUID :returns: the deleted assignment :rtype: KeyVaultRoleAssignment @@ -143,8 +143,7 @@ def set_role_definition(self, role_scope, permissions, **kwargs): properties = self._client.role_definitions.models.RoleDefinitionProperties( role_name=kwargs.pop("role_name", None), description=kwargs.pop("description", None), - permissions=permissions, - **kwargs + permissions=permissions ) parameters = self._client.role_definitions.models.RoleDefinitionCreateParameters(properties=properties) diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/aio/_access_control_client.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/aio/_access_control_client.py index 7b1d84c1cdfe..071ead8dacf6 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/aio/_access_control_client.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/aio/_access_control_client.py @@ -69,7 +69,7 @@ async def delete_role_assignment( :param role_scope: the assignment's scope, for example "/", "/keys", or "/keys/". :class:`KeyVaultRoleScope` defines common broad scopes. Specify a narrower scope as a string. :type role_scope: str or KeyVaultRoleScope - :param role_assignment_name: the assignment's name. Must be a UUID. + :param role_assignment_name: the assignment's name. :type role_assignment_name: str or uuid.UUID :returns: the deleted assignment :rtype: KeyVaultRoleAssignment @@ -149,8 +149,7 @@ async def set_role_definition( properties = self._client.role_definitions.models.RoleDefinitionProperties( role_name=kwargs.pop("role_name", None), description=kwargs.pop("description", None), - permissions=permissions, - **kwargs + permissions=permissions ) parameters = self._client.role_definitions.models.RoleDefinitionCreateParameters(properties=properties) From ce2a072f0e89e58fe2f602bb77008c8247d87d35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?McCoy=20Pati=C3=B1o?= Date: Thu, 4 Feb 2021 18:12:16 -0800 Subject: [PATCH 04/11] Regenerate without arm flag --- .../_generated/v7_2_preview/_configuration.py | 14 +-------- .../v7_2_preview/_key_vault_client.py | 11 ++----- .../v7_2_preview/aio/_configuration.py | 18 ++--------- .../v7_2_preview/aio/_key_vault_client.py | 15 +++------ .../_key_vault_client_operations.py | 31 +++++++++---------- .../_role_assignments_operations.py | 9 +++--- .../_role_definitions_operations.py | 9 +++--- .../_key_vault_client_operations.py | 31 +++++++++---------- .../_role_assignments_operations.py | 9 +++--- .../_role_definitions_operations.py | 9 +++--- 10 files changed, 56 insertions(+), 100 deletions(-) diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/_configuration.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/_configuration.py index 5ca1d669a773..f6a651dad142 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/_configuration.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/_configuration.py @@ -10,14 +10,11 @@ from azure.core.configuration import Configuration from azure.core.pipeline import policies -from azure.mgmt.core.policies import ARMHttpLoggingPolicy if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports from typing import Any - from azure.core.credentials import TokenCredential - VERSION = "unknown" class KeyVaultClientConfiguration(Configuration): @@ -26,23 +23,16 @@ class KeyVaultClientConfiguration(Configuration): Note that all parameters used to create this instance are saved as instance attributes. - :param credential: Credential needed for the client to connect to Azure. - :type credential: ~azure.core.credentials.TokenCredential """ def __init__( self, - credential, # type: "TokenCredential" **kwargs # type: Any ): # type: (...) -> None - if credential is None: - raise ValueError("Parameter 'credential' must not be None.") super(KeyVaultClientConfiguration, self).__init__(**kwargs) - self.credential = credential self.api_version = "7.2-preview" - self.credential_scopes = kwargs.pop('credential_scopes', ['https://management.azure.com/.default']) kwargs.setdefault('sdk_moniker', 'keyvault/{}'.format(VERSION)) self._configure(**kwargs) @@ -55,10 +45,8 @@ def _configure( self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs) self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs) self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs) - self.http_logging_policy = kwargs.get('http_logging_policy') or ARMHttpLoggingPolicy(**kwargs) + self.http_logging_policy = kwargs.get('http_logging_policy') or policies.HttpLoggingPolicy(**kwargs) self.retry_policy = kwargs.get('retry_policy') or policies.RetryPolicy(**kwargs) self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs) self.redirect_policy = kwargs.get('redirect_policy') or policies.RedirectPolicy(**kwargs) self.authentication_policy = kwargs.get('authentication_policy') - if self.credential and not self.authentication_policy: - self.authentication_policy = policies.BearerTokenCredentialPolicy(self.credential, *self.credential_scopes, **kwargs) diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/_key_vault_client.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/_key_vault_client.py index dd0e43bbbc19..dc3a14ac61f4 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/_key_vault_client.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/_key_vault_client.py @@ -8,15 +8,13 @@ from typing import TYPE_CHECKING -from azure.mgmt.core import ARMPipelineClient +from azure.core import PipelineClient from msrest import Deserializer, Serializer if TYPE_CHECKING: # pylint: disable=unused-import,ungrouped-imports from typing import Any - from azure.core.credentials import TokenCredential - from ._configuration import KeyVaultClientConfiguration from .operations import RoleDefinitionsOperations from .operations import RoleAssignmentsOperations @@ -31,20 +29,17 @@ class KeyVaultClient(KeyVaultClientOperationsMixin): :vartype role_definitions: azure.keyvault.v7_2.operations.RoleDefinitionsOperations :ivar role_assignments: RoleAssignmentsOperations operations :vartype role_assignments: azure.keyvault.v7_2.operations.RoleAssignmentsOperations - :param credential: Credential needed for the client to connect to Azure. - :type credential: ~azure.core.credentials.TokenCredential :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. """ def __init__( self, - credential, # type: "TokenCredential" **kwargs # type: Any ): # type: (...) -> None base_url = '{vaultBaseUrl}' - self._config = KeyVaultClientConfiguration(credential, **kwargs) - self._client = ARMPipelineClient(base_url=base_url, config=self._config, **kwargs) + self._config = KeyVaultClientConfiguration(**kwargs) + self._client = PipelineClient(base_url=base_url, config=self._config, **kwargs) client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} self._serialize = Serializer(client_models) diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/_configuration.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/_configuration.py index c3f58a5a2198..5abffe30345d 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/_configuration.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/_configuration.py @@ -6,15 +6,10 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, TYPE_CHECKING +from typing import Any from azure.core.configuration import Configuration from azure.core.pipeline import policies -from azure.mgmt.core.policies import ARMHttpLoggingPolicy - -if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports - from azure.core.credentials_async import AsyncTokenCredential VERSION = "unknown" @@ -24,22 +19,15 @@ class KeyVaultClientConfiguration(Configuration): Note that all parameters used to create this instance are saved as instance attributes. - :param credential: Credential needed for the client to connect to Azure. - :type credential: ~azure.core.credentials_async.AsyncTokenCredential """ def __init__( self, - credential: "AsyncTokenCredential", **kwargs: Any ) -> None: - if credential is None: - raise ValueError("Parameter 'credential' must not be None.") super(KeyVaultClientConfiguration, self).__init__(**kwargs) - self.credential = credential self.api_version = "7.2-preview" - self.credential_scopes = kwargs.pop('credential_scopes', ['https://management.azure.com/.default']) kwargs.setdefault('sdk_moniker', 'keyvault/{}'.format(VERSION)) self._configure(**kwargs) @@ -51,10 +39,8 @@ def _configure( self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs) self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs) self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs) - self.http_logging_policy = kwargs.get('http_logging_policy') or ARMHttpLoggingPolicy(**kwargs) + self.http_logging_policy = kwargs.get('http_logging_policy') or policies.HttpLoggingPolicy(**kwargs) self.retry_policy = kwargs.get('retry_policy') or policies.AsyncRetryPolicy(**kwargs) self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs) self.redirect_policy = kwargs.get('redirect_policy') or policies.AsyncRedirectPolicy(**kwargs) self.authentication_policy = kwargs.get('authentication_policy') - if self.credential and not self.authentication_policy: - self.authentication_policy = policies.AsyncBearerTokenCredentialPolicy(self.credential, *self.credential_scopes, **kwargs) diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/_key_vault_client.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/_key_vault_client.py index 6aa30ebfcd79..b707722e518e 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/_key_vault_client.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/_key_vault_client.py @@ -6,15 +6,11 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, TYPE_CHECKING +from typing import Any -from azure.mgmt.core import AsyncARMPipelineClient +from azure.core import AsyncPipelineClient from msrest import Deserializer, Serializer -if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports - from azure.core.credentials_async import AsyncTokenCredential - from ._configuration import KeyVaultClientConfiguration from .operations import RoleDefinitionsOperations from .operations import RoleAssignmentsOperations @@ -29,19 +25,16 @@ class KeyVaultClient(KeyVaultClientOperationsMixin): :vartype role_definitions: azure.keyvault.v7_2.aio.operations.RoleDefinitionsOperations :ivar role_assignments: RoleAssignmentsOperations operations :vartype role_assignments: azure.keyvault.v7_2.aio.operations.RoleAssignmentsOperations - :param credential: Credential needed for the client to connect to Azure. - :type credential: ~azure.core.credentials_async.AsyncTokenCredential :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. """ def __init__( self, - credential: "AsyncTokenCredential", **kwargs: Any ) -> None: base_url = '{vaultBaseUrl}' - self._config = KeyVaultClientConfiguration(credential, **kwargs) - self._client = AsyncARMPipelineClient(base_url=base_url, config=self._config, **kwargs) + self._config = KeyVaultClientConfiguration(**kwargs) + self._client = AsyncPipelineClient(base_url=base_url, config=self._config, **kwargs) client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} self._serialize = Serializer(client_models) diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/_key_vault_client_operations.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/_key_vault_client_operations.py index 486c7c6c6bc6..7e4a177be588 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/_key_vault_client_operations.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/_key_vault_client_operations.py @@ -12,8 +12,7 @@ from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod -from azure.mgmt.core.exceptions import ARMErrorFormat -from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling +from azure.core.polling.async_base_polling import AsyncLROBasePolling from ... import models as _models @@ -66,7 +65,7 @@ async def _full_backup_initial( if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) response_headers = {} response_headers['Retry-After']=self._deserialize('int', response.headers.get('Retry-After')) @@ -95,7 +94,7 @@ async def begin_full_backup( :type azure_storage_blob_container_uri: ~azure.keyvault.v7_2.models.SASTokenParameter :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: Pass in True if you'd like the AsyncARMPolling polling method, + :keyword polling: Pass in True if you'd like the AsyncLROBasePolling polling method, False for no polling, or your own initialized polling object for a personal polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. @@ -103,7 +102,7 @@ async def begin_full_backup( :rtype: ~azure.core.polling.AsyncLROPoller[~azure.keyvault.v7_2.models.FullBackupOperation] :raises ~azure.core.exceptions.HttpResponseError: """ - polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + polling = kwargs.pop('polling', False) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.FullBackupOperation"] lro_delay = kwargs.pop( 'polling_interval', @@ -136,7 +135,7 @@ def get_long_running_output(pipeline_response): 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), } - if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncLROBasePolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -198,7 +197,7 @@ async def full_backup_status( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) deserialized = self._deserialize('FullBackupOperation', pipeline_response) @@ -252,7 +251,7 @@ async def _full_restore_operation_initial( if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) response_headers = {} response_headers['Retry-After']=self._deserialize('int', response.headers.get('Retry-After')) @@ -281,7 +280,7 @@ async def begin_full_restore_operation( :type restore_blob_details: ~azure.keyvault.v7_2.models.RestoreOperationParameters :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: Pass in True if you'd like the AsyncARMPolling polling method, + :keyword polling: Pass in True if you'd like the AsyncLROBasePolling polling method, False for no polling, or your own initialized polling object for a personal polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. @@ -289,7 +288,7 @@ async def begin_full_restore_operation( :rtype: ~azure.core.polling.AsyncLROPoller[~azure.keyvault.v7_2.models.RestoreOperation] :raises ~azure.core.exceptions.HttpResponseError: """ - polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + polling = kwargs.pop('polling', False) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.RestoreOperation"] lro_delay = kwargs.pop( 'polling_interval', @@ -322,7 +321,7 @@ def get_long_running_output(pipeline_response): 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), } - if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncLROBasePolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: @@ -384,7 +383,7 @@ async def restore_status( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) deserialized = self._deserialize('RestoreOperation', pipeline_response) @@ -440,7 +439,7 @@ async def _selective_key_restore_operation_initial( if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) response_headers = {} response_headers['Retry-After']=self._deserialize('int', response.headers.get('Retry-After')) @@ -472,7 +471,7 @@ async def begin_selective_key_restore_operation( :type restore_blob_details: ~azure.keyvault.v7_2.models.SelectiveKeyRestoreOperationParameters :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: Pass in True if you'd like the AsyncARMPolling polling method, + :keyword polling: Pass in True if you'd like the AsyncLROBasePolling polling method, False for no polling, or your own initialized polling object for a personal polling strategy. :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. @@ -480,7 +479,7 @@ async def begin_selective_key_restore_operation( :rtype: ~azure.core.polling.AsyncLROPoller[~azure.keyvault.v7_2.models.SelectiveKeyRestoreOperation] :raises ~azure.core.exceptions.HttpResponseError: """ - polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + polling = kwargs.pop('polling', False) # type: Union[bool, AsyncPollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.SelectiveKeyRestoreOperation"] lro_delay = kwargs.pop( 'polling_interval', @@ -515,7 +514,7 @@ def get_long_running_output(pipeline_response): 'keyName': self._serialize.url("key_name", key_name, 'str'), } - if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = AsyncLROBasePolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) elif polling is False: polling_method = AsyncNoPolling() else: polling_method = polling if cont_token: diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/_role_assignments_operations.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/_role_assignments_operations.py index ddd23a4c4e67..5f64f7441b3b 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/_role_assignments_operations.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/_role_assignments_operations.py @@ -12,7 +12,6 @@ from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest -from azure.mgmt.core.exceptions import ARMErrorFormat from ... import models as _models @@ -93,7 +92,7 @@ async def delete( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) deserialized = self._deserialize('RoleAssignment', pipeline_response) @@ -164,7 +163,7 @@ async def create( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) deserialized = self._deserialize('RoleAssignment', pipeline_response) @@ -226,7 +225,7 @@ async def get( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) deserialized = self._deserialize('RoleAssignment', pipeline_response) @@ -313,7 +312,7 @@ async def get_next(next_link=None): if response.status_code not in [200]: error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) return pipeline_response diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/_role_definitions_operations.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/_role_definitions_operations.py index 33fdec8c04ff..0d4bd31131aa 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/_role_definitions_operations.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/aio/operations/_role_definitions_operations.py @@ -12,7 +12,6 @@ from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest -from azure.mgmt.core.exceptions import ARMErrorFormat from ... import models as _models @@ -93,7 +92,7 @@ async def delete( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) deserialized = self._deserialize('RoleDefinition', pipeline_response) @@ -165,7 +164,7 @@ async def create_or_update( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) deserialized = self._deserialize('RoleDefinition', pipeline_response) @@ -227,7 +226,7 @@ async def get( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) deserialized = self._deserialize('RoleDefinition', pipeline_response) @@ -313,7 +312,7 @@ async def get_next(next_link=None): if response.status_code not in [200]: error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) return pipeline_response diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_key_vault_client_operations.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_key_vault_client_operations.py index 2fa5299b841d..e25461f9f99e 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_key_vault_client_operations.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_key_vault_client_operations.py @@ -12,8 +12,7 @@ from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import HttpRequest, HttpResponse from azure.core.polling import LROPoller, NoPolling, PollingMethod -from azure.mgmt.core.exceptions import ARMErrorFormat -from azure.mgmt.core.polling.arm_polling import ARMPolling +from azure.core.polling.base_polling import LROBasePolling from .. import models as _models @@ -71,7 +70,7 @@ def _full_backup_initial( if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) response_headers = {} response_headers['Retry-After']=self._deserialize('int', response.headers.get('Retry-After')) @@ -101,7 +100,7 @@ def begin_full_backup( :type azure_storage_blob_container_uri: ~azure.keyvault.v7_2.models.SASTokenParameter :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: Pass in True if you'd like the ARMPolling polling method, + :keyword polling: Pass in True if you'd like the LROBasePolling polling method, False for no polling, or your own initialized polling object for a personal polling strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. @@ -109,7 +108,7 @@ def begin_full_backup( :rtype: ~azure.core.polling.LROPoller[~azure.keyvault.v7_2.models.FullBackupOperation] :raises ~azure.core.exceptions.HttpResponseError: """ - polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + polling = kwargs.pop('polling', False) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.FullBackupOperation"] lro_delay = kwargs.pop( 'polling_interval', @@ -142,7 +141,7 @@ def get_long_running_output(pipeline_response): 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), } - if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = LROBasePolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -205,7 +204,7 @@ def full_backup_status( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) deserialized = self._deserialize('FullBackupOperation', pipeline_response) @@ -260,7 +259,7 @@ def _full_restore_operation_initial( if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) response_headers = {} response_headers['Retry-After']=self._deserialize('int', response.headers.get('Retry-After')) @@ -290,7 +289,7 @@ def begin_full_restore_operation( :type restore_blob_details: ~azure.keyvault.v7_2.models.RestoreOperationParameters :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: Pass in True if you'd like the ARMPolling polling method, + :keyword polling: Pass in True if you'd like the LROBasePolling polling method, False for no polling, or your own initialized polling object for a personal polling strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. @@ -298,7 +297,7 @@ def begin_full_restore_operation( :rtype: ~azure.core.polling.LROPoller[~azure.keyvault.v7_2.models.RestoreOperation] :raises ~azure.core.exceptions.HttpResponseError: """ - polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + polling = kwargs.pop('polling', False) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.RestoreOperation"] lro_delay = kwargs.pop( 'polling_interval', @@ -331,7 +330,7 @@ def get_long_running_output(pipeline_response): 'vaultBaseUrl': self._serialize.url("vault_base_url", vault_base_url, 'str', skip_quote=True), } - if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = LROBasePolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: @@ -394,7 +393,7 @@ def restore_status( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) deserialized = self._deserialize('RestoreOperation', pipeline_response) @@ -451,7 +450,7 @@ def _selective_key_restore_operation_initial( if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) response_headers = {} response_headers['Retry-After']=self._deserialize('int', response.headers.get('Retry-After')) @@ -484,7 +483,7 @@ def begin_selective_key_restore_operation( :type restore_blob_details: ~azure.keyvault.v7_2.models.SelectiveKeyRestoreOperationParameters :keyword callable cls: A custom type or function that will be passed the direct response :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: Pass in True if you'd like the ARMPolling polling method, + :keyword polling: Pass in True if you'd like the LROBasePolling polling method, False for no polling, or your own initialized polling object for a personal polling strategy. :paramtype polling: bool or ~azure.core.polling.PollingMethod :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. @@ -492,7 +491,7 @@ def begin_selective_key_restore_operation( :rtype: ~azure.core.polling.LROPoller[~azure.keyvault.v7_2.models.SelectiveKeyRestoreOperation] :raises ~azure.core.exceptions.HttpResponseError: """ - polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + polling = kwargs.pop('polling', False) # type: Union[bool, PollingMethod] cls = kwargs.pop('cls', None) # type: ClsType["_models.SelectiveKeyRestoreOperation"] lro_delay = kwargs.pop( 'polling_interval', @@ -527,7 +526,7 @@ def get_long_running_output(pipeline_response): 'keyName': self._serialize.url("key_name", key_name, 'str'), } - if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) + if polling is True: polling_method = LROBasePolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs) elif polling is False: polling_method = NoPolling() else: polling_method = polling if cont_token: diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_role_assignments_operations.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_role_assignments_operations.py index 905d9497bcd8..9aee72ea3e40 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_role_assignments_operations.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_role_assignments_operations.py @@ -12,7 +12,6 @@ from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import HttpRequest, HttpResponse -from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models @@ -98,7 +97,7 @@ def delete( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) deserialized = self._deserialize('RoleAssignment', pipeline_response) @@ -170,7 +169,7 @@ def create( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) deserialized = self._deserialize('RoleAssignment', pipeline_response) @@ -233,7 +232,7 @@ def get( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) deserialized = self._deserialize('RoleAssignment', pipeline_response) @@ -321,7 +320,7 @@ def get_next(next_link=None): if response.status_code not in [200]: error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) return pipeline_response diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_role_definitions_operations.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_role_definitions_operations.py index 7f909d19f166..aeaf390b8199 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_role_definitions_operations.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_generated/v7_2_preview/operations/_role_definitions_operations.py @@ -12,7 +12,6 @@ from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse from azure.core.pipeline.transport import HttpRequest, HttpResponse -from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models @@ -98,7 +97,7 @@ def delete( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) deserialized = self._deserialize('RoleDefinition', pipeline_response) @@ -171,7 +170,7 @@ def create_or_update( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) deserialized = self._deserialize('RoleDefinition', pipeline_response) @@ -234,7 +233,7 @@ def get( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) deserialized = self._deserialize('RoleDefinition', pipeline_response) @@ -321,7 +320,7 @@ def get_next(next_link=None): if response.status_code not in [200]: error = self._deserialize.failsafe_deserialize(_models.KeyVaultError, response) map_error(status_code=response.status_code, response=response, error_map=error_map) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + raise HttpResponseError(response=response, model=error) return pipeline_response From cd52df391225e1d8cc36ad9a811751ea8128a102 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?McCoy=20Pati=C3=B1o?= Date: Thu, 4 Feb 2021 18:12:51 -0800 Subject: [PATCH 05/11] Re-record tests to be safe --- ...t_access_control.test_role_assignment.yaml | 54 +++++++++--------- ..._access_control.test_role_definitions.yaml | 55 ++----------------- ...ss_control_async.test_role_assignment.yaml | 54 +++++++++--------- ...s_control_async.test_role_definitions.yaml | 55 +++++-------------- 4 files changed, 73 insertions(+), 145 deletions(-) diff --git a/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control.test_role_assignment.yaml b/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control.test_role_assignment.yaml index d299f92466bd..2012338b632e 100644 --- a/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control.test_role_assignment.yaml +++ b/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control.test_role_assignment.yaml @@ -36,9 +36,9 @@ interactions: x-frame-options: - SAMEORIGIN x-ms-build-version: - - 1.0.20210112-1-4fbf61ac-develop + - 1.0.20210128-1-4c3070d1-develop x-ms-server-latency: - - '1' + - '2' status: code: 401 message: Unauthorized @@ -81,19 +81,19 @@ interactions: x-frame-options: - SAMEORIGIN x-ms-build-version: - - 1.0.20210112-1-4fbf61ac-develop + - 1.0.20210128-1-4c3070d1-develop x-ms-keyvault-network-info: - - addr=162.211.216.102 + - addr=174.127.232.53 x-ms-keyvault-region: - - eastus2 + - northeurope x-ms-server-latency: - - '332' + - '1' status: code: 200 message: OK - request: - body: '{"properties": {"principalId": "service-principal-id", "roleDefinitionId": - "Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/7b127d3c-77bd-4e3e-bbe0-dbb8971fa7f8"}}' + body: '{"properties": {"roleDefinitionId": "Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/7b127d3c-77bd-4e3e-bbe0-dbb8971fa7f8", + "principalId": "service-principal-id"}}' headers: Accept: - application/json @@ -128,11 +128,11 @@ interactions: x-frame-options: - SAMEORIGIN x-ms-keyvault-network-info: - - addr=162.211.216.102 + - addr=174.127.232.53 x-ms-keyvault-region: - - eastus2 + - northeurope x-ms-server-latency: - - '62' + - '59' status: code: 201 message: Created @@ -168,13 +168,13 @@ interactions: x-frame-options: - SAMEORIGIN x-ms-build-version: - - 1.0.20210112-1-4fbf61ac-develop + - 1.0.20210128-1-4c3070d1-develop x-ms-keyvault-network-info: - - addr=162.211.216.102 + - addr=174.127.232.53 x-ms-keyvault-region: - - eastus2 + - northeurope x-ms-server-latency: - - '1' + - '0' status: code: 200 message: OK @@ -193,7 +193,7 @@ interactions: uri: https://managedhsm/providers/Microsoft.Authorization/roleAssignments?api-version=7.2-preview response: body: - string: '{"value":[{"id":"/providers/Microsoft.Authorization/roleAssignments/9f810469-b448-03af-ab69-9157ab298955","name":"9f810469-b448-03af-ab69-9157ab298955","properties":{"principalId":"cbd24137-615e-47bf-840a-c2a268157bf7","roleDefinitionId":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/a290e904-7015-4bba-90c8-60543313cdb4","scope":"/"},"type":"Microsoft.Authorization/roleAssignments"},{"id":"/providers/Microsoft.Authorization/roleAssignments/some-uuid","name":"some-uuid","properties":{"principalId":"service-principal-id","roleDefinitionId":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/7b127d3c-77bd-4e3e-bbe0-dbb8971fa7f8","scope":"/"},"type":"Microsoft.Authorization/roleAssignments"}]}' + string: '{"value":[{"id":"/providers/Microsoft.Authorization/roleAssignments/d1dd605c-1243-400b-16d4-9548525eb240","name":"d1dd605c-1243-400b-16d4-9548525eb240","properties":{"principalId":"47a2c409-7d58-4e1b-a121-9dccf4ce4035","roleDefinitionId":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/a290e904-7015-4bba-90c8-60543313cdb4","scope":"/"},"type":"Microsoft.Authorization/roleAssignments"},{"id":"/providers/Microsoft.Authorization/roleAssignments/some-uuid","name":"some-uuid","properties":{"principalId":"service-principal-id","roleDefinitionId":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/7b127d3c-77bd-4e3e-bbe0-dbb8971fa7f8","scope":"/"},"type":"Microsoft.Authorization/roleAssignments"}]}' headers: cache-control: - no-cache @@ -210,13 +210,13 @@ interactions: x-frame-options: - SAMEORIGIN x-ms-build-version: - - 1.0.20210112-1-4fbf61ac-develop + - 1.0.20210128-1-4c3070d1-develop x-ms-keyvault-network-info: - - addr=162.211.216.102 + - addr=174.127.232.53 x-ms-keyvault-region: - - eastus2 + - northeurope x-ms-server-latency: - - '0' + - '1' status: code: 200 message: OK @@ -254,11 +254,11 @@ interactions: x-frame-options: - SAMEORIGIN x-ms-keyvault-network-info: - - addr=162.211.216.102 + - addr=174.127.232.53 x-ms-keyvault-region: - - eastus2 + - northeurope x-ms-server-latency: - - '43' + - '52' status: code: 200 message: OK @@ -277,7 +277,7 @@ interactions: uri: https://managedhsm/providers/Microsoft.Authorization/roleAssignments?api-version=7.2-preview response: body: - string: '{"value":[{"id":"/providers/Microsoft.Authorization/roleAssignments/9f810469-b448-03af-ab69-9157ab298955","name":"9f810469-b448-03af-ab69-9157ab298955","properties":{"principalId":"cbd24137-615e-47bf-840a-c2a268157bf7","roleDefinitionId":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/a290e904-7015-4bba-90c8-60543313cdb4","scope":"/"},"type":"Microsoft.Authorization/roleAssignments"}]}' + string: '{"value":[{"id":"/providers/Microsoft.Authorization/roleAssignments/d1dd605c-1243-400b-16d4-9548525eb240","name":"d1dd605c-1243-400b-16d4-9548525eb240","properties":{"principalId":"47a2c409-7d58-4e1b-a121-9dccf4ce4035","roleDefinitionId":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/a290e904-7015-4bba-90c8-60543313cdb4","scope":"/"},"type":"Microsoft.Authorization/roleAssignments"}]}' headers: cache-control: - no-cache @@ -294,11 +294,11 @@ interactions: x-frame-options: - SAMEORIGIN x-ms-build-version: - - 1.0.20210112-1-4fbf61ac-develop + - 1.0.20210128-1-4c3070d1-develop x-ms-keyvault-network-info: - - addr=162.211.216.102 + - addr=174.127.232.53 x-ms-keyvault-region: - - eastus2 + - northeurope x-ms-server-latency: - '0' status: diff --git a/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control.test_role_definitions.yaml b/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control.test_role_definitions.yaml index 7c29f457f273..0f5f9f94583f 100644 --- a/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control.test_role_definitions.yaml +++ b/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control.test_role_definitions.yaml @@ -1,47 +1,4 @@ interactions: -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-keyvault-administration/4.0.0b3 Python/3.5.3 (Windows-10-10.0.19041-SP0) - method: GET - uri: https://managedhsm/providers/Microsoft.Authorization/roleDefinitions?api-version=7.2-preview - response: - body: - string: OK - headers: - cache-control: - - no-cache - content-length: - - '2' - content-security-policy: - - default-src 'self' - content-type: - - application/json; charset=utf-8 - strict-transport-security: - - max-age=31536000; includeSubDomains - www-authenticate: - - Bearer authorization="https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47", - resource="https://managedhsm.azure.net" - x-content-type-options: - - nosniff - x-frame-options: - - SAMEORIGIN - x-ms-build-version: - - 1.0.20210128-1-4c3070d1-develop - x-ms-server-latency: - - '0' - status: - code: 401 - message: Unauthorized - request: body: null headers: @@ -92,8 +49,8 @@ interactions: code: 200 message: OK - request: - body: '{"properties": {"description": "test", "roleName": "role-name626010ec", - "permissions": [{"dataActions": ["Microsoft.KeyVault/managedHsm/keys/read/action"]}]}}' + body: '{"properties": {"roleName": "role-name626010ec", "permissions": [{"dataActions": + ["Microsoft.KeyVault/managedHsm/keys/read/action"]}], "description": "test"}}' headers: Accept: - application/json @@ -132,7 +89,7 @@ interactions: x-ms-keyvault-region: - northeurope x-ms-server-latency: - - '57' + - '69' status: code: 201 message: Created @@ -176,7 +133,7 @@ interactions: x-ms-keyvault-region: - northeurope x-ms-server-latency: - - '49' + - '51' status: code: 201 message: Created @@ -225,7 +182,7 @@ interactions: x-ms-keyvault-region: - northeurope x-ms-server-latency: - - '0' + - '1' status: code: 200 message: OK @@ -309,7 +266,7 @@ interactions: x-ms-keyvault-region: - northeurope x-ms-server-latency: - - '50' + - '54' status: code: 200 message: OK diff --git a/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control_async.test_role_assignment.yaml b/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control_async.test_role_assignment.yaml index e038e117d8a2..8ea72f0b7eeb 100644 --- a/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control_async.test_role_assignment.yaml +++ b/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control_async.test_role_assignment.yaml @@ -23,7 +23,7 @@ interactions: resource="https://managedhsm.azure.net" x-content-type-options: nosniff x-frame-options: SAMEORIGIN - x-ms-build-version: 1.0.20210112-1-4fbf61ac-develop + x-ms-build-version: 1.0.20210128-1-4c3070d1-develop x-ms-server-latency: '1' status: code: 401 @@ -56,17 +56,17 @@ interactions: strict-transport-security: max-age=31536000; includeSubDomains x-content-type-options: nosniff x-frame-options: SAMEORIGIN - x-ms-build-version: 1.0.20210112-1-4fbf61ac-develop - x-ms-keyvault-network-info: addr=162.211.216.102 - x-ms-keyvault-region: eastus2 - x-ms-server-latency: '361' + x-ms-build-version: 1.0.20210128-1-4c3070d1-develop + x-ms-keyvault-network-info: addr=174.127.232.53 + x-ms-keyvault-region: northeurope + x-ms-server-latency: '438' status: code: 200 message: OK url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions?api-version=7.2-preview - request: - body: '{"properties": {"principalId": "service-principal-id", "roleDefinitionId": - "Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/7b127d3c-77bd-4e3e-bbe0-dbb8971fa7f8"}}' + body: '{"properties": {"roleDefinitionId": "Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/7b127d3c-77bd-4e3e-bbe0-dbb8971fa7f8", + "principalId": "service-principal-id"}}' headers: Accept: - application/json @@ -89,13 +89,13 @@ interactions: strict-transport-security: max-age=31536000; includeSubDomains x-content-type-options: nosniff x-frame-options: SAMEORIGIN - x-ms-keyvault-network-info: addr=162.211.216.102 - x-ms-keyvault-region: eastus2 - x-ms-server-latency: '1073' + x-ms-keyvault-network-info: addr=174.127.232.53 + x-ms-keyvault-region: northeurope + x-ms-server-latency: '78' status: code: 201 message: Created - url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleAssignments/9226dc58-113e-4315-8dba-1cce42d3c96b?api-version=7.2-preview + url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleAssignments/a130a947-ac11-4676-884c-90622363ba80?api-version=7.2-preview - request: body: null headers: @@ -116,14 +116,14 @@ interactions: strict-transport-security: max-age=31536000; includeSubDomains x-content-type-options: nosniff x-frame-options: SAMEORIGIN - x-ms-build-version: 1.0.20210112-1-4fbf61ac-develop - x-ms-keyvault-network-info: addr=162.211.216.102 - x-ms-keyvault-region: eastus2 + x-ms-build-version: 1.0.20210128-1-4c3070d1-develop + x-ms-keyvault-network-info: addr=174.127.232.53 + x-ms-keyvault-region: northeurope x-ms-server-latency: '0' status: code: 200 message: OK - url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleAssignments/9226dc58-113e-4315-8dba-1cce42d3c96b?api-version=7.2-preview + url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleAssignments/a130a947-ac11-4676-884c-90622363ba80?api-version=7.2-preview - request: body: null headers: @@ -135,7 +135,7 @@ interactions: uri: https://managedhsm/providers/Microsoft.Authorization/roleAssignments?api-version=7.2-preview response: body: - string: '{"value":[{"id":"/providers/Microsoft.Authorization/roleAssignments/9f810469-b448-03af-ab69-9157ab298955","name":"9f810469-b448-03af-ab69-9157ab298955","properties":{"principalId":"cbd24137-615e-47bf-840a-c2a268157bf7","roleDefinitionId":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/a290e904-7015-4bba-90c8-60543313cdb4","scope":"/"},"type":"Microsoft.Authorization/roleAssignments"},{"id":"/providers/Microsoft.Authorization/roleAssignments/some-uuid","name":"some-uuid","properties":{"principalId":"service-principal-id","roleDefinitionId":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/7b127d3c-77bd-4e3e-bbe0-dbb8971fa7f8","scope":"/"},"type":"Microsoft.Authorization/roleAssignments"}]}' + string: '{"value":[{"id":"/providers/Microsoft.Authorization/roleAssignments/d1dd605c-1243-400b-16d4-9548525eb240","name":"d1dd605c-1243-400b-16d4-9548525eb240","properties":{"principalId":"47a2c409-7d58-4e1b-a121-9dccf4ce4035","roleDefinitionId":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/a290e904-7015-4bba-90c8-60543313cdb4","scope":"/"},"type":"Microsoft.Authorization/roleAssignments"},{"id":"/providers/Microsoft.Authorization/roleAssignments/some-uuid","name":"some-uuid","properties":{"principalId":"service-principal-id","roleDefinitionId":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/7b127d3c-77bd-4e3e-bbe0-dbb8971fa7f8","scope":"/"},"type":"Microsoft.Authorization/roleAssignments"}]}' headers: cache-control: no-cache content-length: '809' @@ -144,9 +144,9 @@ interactions: strict-transport-security: max-age=31536000; includeSubDomains x-content-type-options: nosniff x-frame-options: SAMEORIGIN - x-ms-build-version: 1.0.20210112-1-4fbf61ac-develop - x-ms-keyvault-network-info: addr=162.211.216.102 - x-ms-keyvault-region: eastus2 + x-ms-build-version: 1.0.20210128-1-4c3070d1-develop + x-ms-keyvault-network-info: addr=174.127.232.53 + x-ms-keyvault-region: northeurope x-ms-server-latency: '0' status: code: 200 @@ -172,13 +172,13 @@ interactions: strict-transport-security: max-age=31536000; includeSubDomains x-content-type-options: nosniff x-frame-options: SAMEORIGIN - x-ms-keyvault-network-info: addr=162.211.216.102 - x-ms-keyvault-region: eastus2 - x-ms-server-latency: '49' + x-ms-keyvault-network-info: addr=174.127.232.53 + x-ms-keyvault-region: northeurope + x-ms-server-latency: '50' status: code: 200 message: OK - url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleAssignments/9226dc58-113e-4315-8dba-1cce42d3c96b?api-version=7.2-preview + url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleAssignments/a130a947-ac11-4676-884c-90622363ba80?api-version=7.2-preview - request: body: null headers: @@ -190,7 +190,7 @@ interactions: uri: https://managedhsm/providers/Microsoft.Authorization/roleAssignments?api-version=7.2-preview response: body: - string: '{"value":[{"id":"/providers/Microsoft.Authorization/roleAssignments/9f810469-b448-03af-ab69-9157ab298955","name":"9f810469-b448-03af-ab69-9157ab298955","properties":{"principalId":"cbd24137-615e-47bf-840a-c2a268157bf7","roleDefinitionId":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/a290e904-7015-4bba-90c8-60543313cdb4","scope":"/"},"type":"Microsoft.Authorization/roleAssignments"}]}' + string: '{"value":[{"id":"/providers/Microsoft.Authorization/roleAssignments/d1dd605c-1243-400b-16d4-9548525eb240","name":"d1dd605c-1243-400b-16d4-9548525eb240","properties":{"principalId":"47a2c409-7d58-4e1b-a121-9dccf4ce4035","roleDefinitionId":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/a290e904-7015-4bba-90c8-60543313cdb4","scope":"/"},"type":"Microsoft.Authorization/roleAssignments"}]}' headers: cache-control: no-cache content-length: '410' @@ -199,9 +199,9 @@ interactions: strict-transport-security: max-age=31536000; includeSubDomains x-content-type-options: nosniff x-frame-options: SAMEORIGIN - x-ms-build-version: 1.0.20210112-1-4fbf61ac-develop - x-ms-keyvault-network-info: addr=162.211.216.102 - x-ms-keyvault-region: eastus2 + x-ms-build-version: 1.0.20210128-1-4c3070d1-develop + x-ms-keyvault-network-info: addr=174.127.232.53 + x-ms-keyvault-region: northeurope x-ms-server-latency: '0' status: code: 200 diff --git a/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control_async.test_role_definitions.yaml b/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control_async.test_role_definitions.yaml index 64278137e7e5..f3b2da774385 100644 --- a/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control_async.test_role_definitions.yaml +++ b/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control_async.test_role_definitions.yaml @@ -1,34 +1,4 @@ interactions: -- request: - body: null - headers: - Accept: - - application/json - Content-Length: - - '0' - User-Agent: - - azsdk-python-keyvault-administration/4.0.0b3 Python/3.5.3 (Windows-10-10.0.19041-SP0) - method: GET - uri: https://managedhsm/providers/Microsoft.Authorization/roleDefinitions?api-version=7.2-preview - response: - body: - string: OK - headers: - cache-control: no-cache - content-length: '2' - content-security-policy: default-src 'self' - content-type: application/json; charset=utf-8 - strict-transport-security: max-age=31536000; includeSubDomains - www-authenticate: Bearer authorization="https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47", - resource="https://managedhsm.azure.net" - x-content-type-options: nosniff - x-frame-options: SAMEORIGIN - x-ms-build-version: 1.0.20210128-1-4c3070d1-develop - x-ms-server-latency: '0' - status: - code: 401 - message: Unauthorized - url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions?api-version=7.2-preview - request: body: null headers: @@ -59,14 +29,14 @@ interactions: x-ms-build-version: 1.0.20210128-1-4c3070d1-develop x-ms-keyvault-network-info: addr=174.127.232.53 x-ms-keyvault-region: northeurope - x-ms-server-latency: '1' + x-ms-server-latency: '0' status: code: 200 message: OK url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions?api-version=7.2-preview - request: - body: '{"properties": {"description": "test", "permissions": [{"dataActions": - ["Microsoft.KeyVault/managedHsm/keys/read/action"]}], "roleName": "role-named15f1369"}}' + body: '{"properties": {"roleName": "role-named15f1369", "permissions": [{"dataActions": + ["Microsoft.KeyVault/managedHsm/keys/read/action"]}], "description": "test"}}' headers: Accept: - application/json @@ -91,13 +61,14 @@ interactions: x-frame-options: SAMEORIGIN x-ms-keyvault-network-info: addr=174.127.232.53 x-ms-keyvault-region: northeurope - x-ms-server-latency: '49' + x-ms-server-latency: '55' status: code: 201 message: Created - url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/23ceffd8-d2a5-49a3-871f-1356c18ca245?api-version=7.2-preview + url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/69be4ec0-b611-4807-8a98-ecc71a76d07a?api-version=7.2-preview - request: - body: '{"properties": {"permissions": [{"dataActions": [], "notDataActions": ["Microsoft.KeyVault/managedHsm/keys/read/action"]}]}}' + body: '{"properties": {"permissions": [{"notDataActions": ["Microsoft.KeyVault/managedHsm/keys/read/action"], + "dataActions": []}]}}' headers: Accept: - application/json @@ -122,11 +93,11 @@ interactions: x-frame-options: SAMEORIGIN x-ms-keyvault-network-info: addr=174.127.232.53 x-ms-keyvault-region: northeurope - x-ms-server-latency: '47' + x-ms-server-latency: '57' status: code: 201 message: Created - url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/23ceffd8-d2a5-49a3-871f-1356c18ca245?api-version=7.2-preview + url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/69be4ec0-b611-4807-8a98-ecc71a76d07a?api-version=7.2-preview - request: body: null headers: @@ -157,7 +128,7 @@ interactions: x-ms-build-version: 1.0.20210128-1-4c3070d1-develop x-ms-keyvault-network-info: addr=174.127.232.53 x-ms-keyvault-region: northeurope - x-ms-server-latency: '1' + x-ms-server-latency: '0' status: code: 200 message: OK @@ -189,7 +160,7 @@ interactions: status: code: 200 message: OK - url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/23ceffd8-d2a5-49a3-871f-1356c18ca245?api-version=7.2-preview + url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/69be4ec0-b611-4807-8a98-ecc71a76d07a?api-version=7.2-preview - request: body: null headers: @@ -212,11 +183,11 @@ interactions: x-frame-options: SAMEORIGIN x-ms-keyvault-network-info: addr=174.127.232.53 x-ms-keyvault-region: northeurope - x-ms-server-latency: '64' + x-ms-server-latency: '52' status: code: 200 message: OK - url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/23ceffd8-d2a5-49a3-871f-1356c18ca245?api-version=7.2-preview + url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/69be4ec0-b611-4807-8a98-ecc71a76d07a?api-version=7.2-preview - request: body: null headers: From 50dedd4161e197386b3a0b2fff16097f05ef0ce5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?McCoy=20Pati=C3=B1o?= Date: Fri, 5 Feb 2021 08:42:20 -0800 Subject: [PATCH 06/11] Update msrest requirement in shared_requirements --- shared_requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared_requirements.txt b/shared_requirements.txt index a433cdff4533..28455c63e551 100644 --- a/shared_requirements.txt +++ b/shared_requirements.txt @@ -126,7 +126,7 @@ avro<2.0.0,>=1.10.0 #override azure-data-tables azure-core<2.0.0,>=1.6.0 #override azure-eventhub azure-core<2.0.0,>=1.5.0 #override azure-identity azure-core<2.0.0,>=1.0.0 -#override azure-keyvault-administration msrest>=0.6.0 +#override azure-keyvault-administration msrest>=0.6.21 #override azure-keyvault-certificates msrest>=0.6.0 #override azure-keyvault-keys msrest>=0.6.0 #override azure-keyvault-secrets msrest>=0.6.0 From 0fb8e4d5ebe3899cb37d56aa6df07b0601edcdfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?McCoy=20Pati=C3=B1o?= Date: Fri, 5 Feb 2021 11:22:37 -0800 Subject: [PATCH 07/11] Explicitly convert UUID to string when passing --- .../azure/keyvault/administration/_access_control_client.py | 4 ++-- .../keyvault/administration/aio/_access_control_client.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_access_control_client.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_access_control_client.py index 441bb826c9d3..d14611f7953d 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_access_control_client.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_access_control_client.py @@ -52,7 +52,7 @@ def create_role_assignment(self, role_scope, role_definition_id, principal_id, * assignment = self._client.role_assignments.create( vault_base_url=self._vault_url, scope=role_scope, - role_assignment_name=kwargs.pop("role_assignment_name", None) or uuid4(), + role_assignment_name=kwargs.pop("role_assignment_name", None) or str(uuid4()), parameters=create_parameters, **kwargs ) @@ -150,7 +150,7 @@ def set_role_definition(self, role_scope, permissions, **kwargs): definition = self._client.role_definitions.create_or_update( vault_base_url=self._vault_url, scope=role_scope, - role_definition_name=kwargs.pop("role_definition_name", None) or uuid4(), + role_definition_name=kwargs.pop("role_definition_name", None) or str(uuid4()), parameters=parameters, **kwargs ) diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/aio/_access_control_client.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/aio/_access_control_client.py index 071ead8dacf6..7165c1fd0463 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/aio/_access_control_client.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/aio/_access_control_client.py @@ -54,7 +54,7 @@ async def create_role_assignment( assignment = await self._client.role_assignments.create( vault_base_url=self._vault_url, scope=role_scope, - role_assignment_name=kwargs.pop("role_assignment_name", None) or uuid4(), + role_assignment_name=kwargs.pop("role_assignment_name", None) or str(uuid4()), parameters=create_parameters, **kwargs ) @@ -156,7 +156,7 @@ async def set_role_definition( definition = await self._client.role_definitions.create_or_update( vault_base_url=self._vault_url, scope=role_scope, - role_definition_name=kwargs.pop("role_definition_name", None) or uuid4(), + role_definition_name=kwargs.pop("role_definition_name", None) or str(uuid4()), parameters=parameters, **kwargs ) From 99d99cb6e7da42bf41ca99e3ea56b649acd9d8eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?McCoy=20Pati=C3=B1o?= Date: Fri, 5 Feb 2021 11:32:55 -0800 Subject: [PATCH 08/11] Clear HttpChallengeCache between test cases --- ...t_access_control.test_role_assignment.yaml | 12 ++--- ..._access_control.test_role_definitions.yaml | 53 +++++++++++++++++-- ...ss_control_async.test_role_assignment.yaml | 16 +++--- ...s_control_async.test_role_definitions.yaml | 53 ++++++++++++++----- .../tests/test_access_control.py | 6 +++ .../tests/test_access_control_async.py | 6 +++ 6 files changed, 115 insertions(+), 31 deletions(-) diff --git a/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control.test_role_assignment.yaml b/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control.test_role_assignment.yaml index 2012338b632e..11ee3ea7511b 100644 --- a/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control.test_role_assignment.yaml +++ b/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control.test_role_assignment.yaml @@ -38,7 +38,7 @@ interactions: x-ms-build-version: - 1.0.20210128-1-4c3070d1-develop x-ms-server-latency: - - '2' + - '1' status: code: 401 message: Unauthorized @@ -92,8 +92,8 @@ interactions: code: 200 message: OK - request: - body: '{"properties": {"roleDefinitionId": "Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/7b127d3c-77bd-4e3e-bbe0-dbb8971fa7f8", - "principalId": "service-principal-id"}}' + body: '{"properties": {"principalId": "service-principal-id", "roleDefinitionId": + "Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/7b127d3c-77bd-4e3e-bbe0-dbb8971fa7f8"}}' headers: Accept: - application/json @@ -132,7 +132,7 @@ interactions: x-ms-keyvault-region: - northeurope x-ms-server-latency: - - '59' + - '80' status: code: 201 message: Created @@ -216,7 +216,7 @@ interactions: x-ms-keyvault-region: - northeurope x-ms-server-latency: - - '1' + - '0' status: code: 200 message: OK @@ -258,7 +258,7 @@ interactions: x-ms-keyvault-region: - northeurope x-ms-server-latency: - - '52' + - '51' status: code: 200 message: OK diff --git a/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control.test_role_definitions.yaml b/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control.test_role_definitions.yaml index 0f5f9f94583f..72c90e8217e2 100644 --- a/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control.test_role_definitions.yaml +++ b/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control.test_role_definitions.yaml @@ -1,4 +1,47 @@ interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-keyvault-administration/4.0.0b3 Python/3.5.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://managedhsm/providers/Microsoft.Authorization/roleDefinitions?api-version=7.2-preview + response: + body: + string: OK + headers: + cache-control: + - no-cache + content-length: + - '2' + content-security-policy: + - default-src 'self' + content-type: + - application/json; charset=utf-8 + strict-transport-security: + - max-age=31536000; includeSubDomains + www-authenticate: + - Bearer authorization="https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://managedhsm.azure.net" + x-content-type-options: + - nosniff + x-frame-options: + - SAMEORIGIN + x-ms-build-version: + - 1.0.20210128-1-4c3070d1-develop + x-ms-server-latency: + - '0' + status: + code: 401 + message: Unauthorized - request: body: null headers: @@ -49,8 +92,8 @@ interactions: code: 200 message: OK - request: - body: '{"properties": {"roleName": "role-name626010ec", "permissions": [{"dataActions": - ["Microsoft.KeyVault/managedHsm/keys/read/action"]}], "description": "test"}}' + body: '{"properties": {"roleName": "role-name626010ec", "description": "test", + "permissions": [{"dataActions": ["Microsoft.KeyVault/managedHsm/keys/read/action"]}]}}' headers: Accept: - application/json @@ -89,7 +132,7 @@ interactions: x-ms-keyvault-region: - northeurope x-ms-server-latency: - - '69' + - '71' status: code: 201 message: Created @@ -133,7 +176,7 @@ interactions: x-ms-keyvault-region: - northeurope x-ms-server-latency: - - '51' + - '60' status: code: 201 message: Created @@ -266,7 +309,7 @@ interactions: x-ms-keyvault-region: - northeurope x-ms-server-latency: - - '54' + - '49' status: code: 200 message: OK diff --git a/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control_async.test_role_assignment.yaml b/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control_async.test_role_assignment.yaml index 8ea72f0b7eeb..62488c11f923 100644 --- a/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control_async.test_role_assignment.yaml +++ b/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control_async.test_role_assignment.yaml @@ -59,7 +59,7 @@ interactions: x-ms-build-version: 1.0.20210128-1-4c3070d1-develop x-ms-keyvault-network-info: addr=174.127.232.53 x-ms-keyvault-region: northeurope - x-ms-server-latency: '438' + x-ms-server-latency: '347' status: code: 200 message: OK @@ -91,11 +91,11 @@ interactions: x-frame-options: SAMEORIGIN x-ms-keyvault-network-info: addr=174.127.232.53 x-ms-keyvault-region: northeurope - x-ms-server-latency: '78' + x-ms-server-latency: '58' status: code: 201 message: Created - url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleAssignments/a130a947-ac11-4676-884c-90622363ba80?api-version=7.2-preview + url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleAssignments/f5a832df-251b-4eb8-beaf-f7d3ab5c8c40?api-version=7.2-preview - request: body: null headers: @@ -123,7 +123,7 @@ interactions: status: code: 200 message: OK - url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleAssignments/a130a947-ac11-4676-884c-90622363ba80?api-version=7.2-preview + url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleAssignments/f5a832df-251b-4eb8-beaf-f7d3ab5c8c40?api-version=7.2-preview - request: body: null headers: @@ -135,7 +135,7 @@ interactions: uri: https://managedhsm/providers/Microsoft.Authorization/roleAssignments?api-version=7.2-preview response: body: - string: '{"value":[{"id":"/providers/Microsoft.Authorization/roleAssignments/d1dd605c-1243-400b-16d4-9548525eb240","name":"d1dd605c-1243-400b-16d4-9548525eb240","properties":{"principalId":"47a2c409-7d58-4e1b-a121-9dccf4ce4035","roleDefinitionId":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/a290e904-7015-4bba-90c8-60543313cdb4","scope":"/"},"type":"Microsoft.Authorization/roleAssignments"},{"id":"/providers/Microsoft.Authorization/roleAssignments/some-uuid","name":"some-uuid","properties":{"principalId":"service-principal-id","roleDefinitionId":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/7b127d3c-77bd-4e3e-bbe0-dbb8971fa7f8","scope":"/"},"type":"Microsoft.Authorization/roleAssignments"}]}' + string: '{"value":[{"id":"/providers/Microsoft.Authorization/roleAssignments/some-uuid","name":"some-uuid","properties":{"principalId":"service-principal-id","roleDefinitionId":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/7b127d3c-77bd-4e3e-bbe0-dbb8971fa7f8","scope":"/"},"type":"Microsoft.Authorization/roleAssignments"},{"id":"/providers/Microsoft.Authorization/roleAssignments/d1dd605c-1243-400b-16d4-9548525eb240","name":"d1dd605c-1243-400b-16d4-9548525eb240","properties":{"principalId":"47a2c409-7d58-4e1b-a121-9dccf4ce4035","roleDefinitionId":"Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/a290e904-7015-4bba-90c8-60543313cdb4","scope":"/"},"type":"Microsoft.Authorization/roleAssignments"}]}' headers: cache-control: no-cache content-length: '809' @@ -147,7 +147,7 @@ interactions: x-ms-build-version: 1.0.20210128-1-4c3070d1-develop x-ms-keyvault-network-info: addr=174.127.232.53 x-ms-keyvault-region: northeurope - x-ms-server-latency: '0' + x-ms-server-latency: '1' status: code: 200 message: OK @@ -174,11 +174,11 @@ interactions: x-frame-options: SAMEORIGIN x-ms-keyvault-network-info: addr=174.127.232.53 x-ms-keyvault-region: northeurope - x-ms-server-latency: '50' + x-ms-server-latency: '65' status: code: 200 message: OK - url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleAssignments/a130a947-ac11-4676-884c-90622363ba80?api-version=7.2-preview + url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleAssignments/f5a832df-251b-4eb8-beaf-f7d3ab5c8c40?api-version=7.2-preview - request: body: null headers: diff --git a/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control_async.test_role_definitions.yaml b/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control_async.test_role_definitions.yaml index f3b2da774385..a5b32b8449fa 100644 --- a/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control_async.test_role_definitions.yaml +++ b/sdk/keyvault/azure-keyvault-administration/tests/recordings/test_access_control_async.test_role_definitions.yaml @@ -1,4 +1,34 @@ interactions: +- request: + body: null + headers: + Accept: + - application/json + Content-Length: + - '0' + User-Agent: + - azsdk-python-keyvault-administration/4.0.0b3 Python/3.5.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://managedhsm/providers/Microsoft.Authorization/roleDefinitions?api-version=7.2-preview + response: + body: + string: OK + headers: + cache-control: no-cache + content-length: '2' + content-security-policy: default-src 'self' + content-type: application/json; charset=utf-8 + strict-transport-security: max-age=31536000; includeSubDomains + www-authenticate: Bearer authorization="https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47", + resource="https://managedhsm.azure.net" + x-content-type-options: nosniff + x-frame-options: SAMEORIGIN + x-ms-build-version: 1.0.20210128-1-4c3070d1-develop + x-ms-server-latency: '0' + status: + code: 401 + message: Unauthorized + url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions?api-version=7.2-preview - request: body: null headers: @@ -29,14 +59,14 @@ interactions: x-ms-build-version: 1.0.20210128-1-4c3070d1-develop x-ms-keyvault-network-info: addr=174.127.232.53 x-ms-keyvault-region: northeurope - x-ms-server-latency: '0' + x-ms-server-latency: '1' status: code: 200 message: OK url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions?api-version=7.2-preview - request: - body: '{"properties": {"roleName": "role-named15f1369", "permissions": [{"dataActions": - ["Microsoft.KeyVault/managedHsm/keys/read/action"]}], "description": "test"}}' + body: '{"properties": {"roleName": "role-named15f1369", "description": "test", + "permissions": [{"dataActions": ["Microsoft.KeyVault/managedHsm/keys/read/action"]}]}}' headers: Accept: - application/json @@ -61,14 +91,13 @@ interactions: x-frame-options: SAMEORIGIN x-ms-keyvault-network-info: addr=174.127.232.53 x-ms-keyvault-region: northeurope - x-ms-server-latency: '55' + x-ms-server-latency: '65' status: code: 201 message: Created - url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/69be4ec0-b611-4807-8a98-ecc71a76d07a?api-version=7.2-preview + url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/09cac7da-ce29-4fb2-958e-7f60c658ed6d?api-version=7.2-preview - request: - body: '{"properties": {"permissions": [{"notDataActions": ["Microsoft.KeyVault/managedHsm/keys/read/action"], - "dataActions": []}]}}' + body: '{"properties": {"permissions": [{"dataActions": [], "notDataActions": ["Microsoft.KeyVault/managedHsm/keys/read/action"]}]}}' headers: Accept: - application/json @@ -93,11 +122,11 @@ interactions: x-frame-options: SAMEORIGIN x-ms-keyvault-network-info: addr=174.127.232.53 x-ms-keyvault-region: northeurope - x-ms-server-latency: '57' + x-ms-server-latency: '48' status: code: 201 message: Created - url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/69be4ec0-b611-4807-8a98-ecc71a76d07a?api-version=7.2-preview + url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/09cac7da-ce29-4fb2-958e-7f60c658ed6d?api-version=7.2-preview - request: body: null headers: @@ -160,7 +189,7 @@ interactions: status: code: 200 message: OK - url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/69be4ec0-b611-4807-8a98-ecc71a76d07a?api-version=7.2-preview + url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/09cac7da-ce29-4fb2-958e-7f60c658ed6d?api-version=7.2-preview - request: body: null headers: @@ -183,11 +212,11 @@ interactions: x-frame-options: SAMEORIGIN x-ms-keyvault-network-info: addr=174.127.232.53 x-ms-keyvault-region: northeurope - x-ms-server-latency: '52' + x-ms-server-latency: '48' status: code: 200 message: OK - url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/69be4ec0-b611-4807-8a98-ecc71a76d07a?api-version=7.2-preview + url: https://mcpatinotesthsm.managedhsm.azure.net/providers/Microsoft.Authorization/roleDefinitions/09cac7da-ce29-4fb2-958e-7f60c658ed6d?api-version=7.2-preview - request: body: null headers: diff --git a/sdk/keyvault/azure-keyvault-administration/tests/test_access_control.py b/sdk/keyvault/azure-keyvault-administration/tests/test_access_control.py index bfe394aa41fd..df0df34d6c5b 100644 --- a/sdk/keyvault/azure-keyvault-administration/tests/test_access_control.py +++ b/sdk/keyvault/azure-keyvault-administration/tests/test_access_control.py @@ -9,6 +9,7 @@ from azure.core.credentials import AccessToken from azure.identity import DefaultAzureCredential from azure.keyvault.administration import KeyVaultAccessControlClient, KeyVaultRoleScope, KeyVaultPermission, KeyVaultDataAction +from azure.keyvault.administration._internal import HttpChallengeCache import pytest from six.moves.urllib_parse import urlparse @@ -28,6 +29,11 @@ def setUp(self, *args, **kwargs): self.scrubber.register_name_pair(real.netloc, playback.netloc) super(AccessControlTests, self).setUp(*args, **kwargs) + def tearDown(self): + HttpChallengeCache.clear() + assert len(HttpChallengeCache._cache) == 0 + super(AccessControlTests, self).tearDown() + @property def credential(self): if self.is_live: diff --git a/sdk/keyvault/azure-keyvault-administration/tests/test_access_control_async.py b/sdk/keyvault/azure-keyvault-administration/tests/test_access_control_async.py index 5dab265386df..36adb7171dce 100644 --- a/sdk/keyvault/azure-keyvault-administration/tests/test_access_control_async.py +++ b/sdk/keyvault/azure-keyvault-administration/tests/test_access_control_async.py @@ -10,6 +10,7 @@ from azure.identity.aio import DefaultAzureCredential from azure.keyvault.administration import KeyVaultRoleScope, KeyVaultPermission, KeyVaultDataAction from azure.keyvault.administration.aio import KeyVaultAccessControlClient +from azure.keyvault.administration._internal import HttpChallengeCache import pytest from six.moves.urllib_parse import urlparse from devtools_testutils import AzureTestCase @@ -31,6 +32,11 @@ def setUp(self, *args, **kwargs): self.scrubber.register_name_pair(real.netloc, playback.netloc) super(AccessControlTests, self).setUp(*args, **kwargs) + def tearDown(self): + HttpChallengeCache.clear() + assert len(HttpChallengeCache._cache) == 0 + super(AccessControlTests, self).tearDown() + @property def credential(self): if self.is_live: From 68e7a617d55857e0a65ba3845670e21d9327cf84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?McCoy=20Pati=C3=B1o?= Date: Fri, 5 Feb 2021 13:13:51 -0800 Subject: [PATCH 09/11] Thanks, Charles! --- .../keyvault/administration/_access_control_client.py | 10 ++++++++-- .../administration/aio/_access_control_client.py | 10 ++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_access_control_client.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_access_control_client.py index d14611f7953d..940a531e0dc1 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_access_control_client.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_access_control_client.py @@ -44,6 +44,9 @@ def create_role_assignment(self, role_scope, role_definition_id, principal_id, * :type role_assignment_name: str or uuid.UUID :rtype: KeyVaultRoleAssignment """ + role_assignment_name_provided = kwargs.pop("role_assignment_name", None) + role_assignment_name = str(role_assignment_name_provided) if role_assignment_name_provided else str(uuid4()) + create_parameters = self._client.role_assignments.models.RoleAssignmentCreateParameters( properties=self._client.role_assignments.models.RoleAssignmentProperties( principal_id=principal_id, role_definition_id=str(role_definition_id) @@ -52,7 +55,7 @@ def create_role_assignment(self, role_scope, role_definition_id, principal_id, * assignment = self._client.role_assignments.create( vault_base_url=self._vault_url, scope=role_scope, - role_assignment_name=kwargs.pop("role_assignment_name", None) or str(uuid4()), + role_assignment_name=role_assignment_name, parameters=create_parameters, **kwargs ) @@ -130,6 +133,9 @@ def set_role_definition(self, role_scope, permissions, **kwargs): :returns: The created or updated role definition :rtype: KeyVaultRoleDefinition """ + role_definition_name_provided = kwargs.pop("role_definition_name", None) + role_definition_name = str(role_definition_name_provided) if role_definition_name_provided else str(uuid4()) + permissions = [ self._client.role_definitions.models.Permission( actions=p.allowed_actions, @@ -150,7 +156,7 @@ def set_role_definition(self, role_scope, permissions, **kwargs): definition = self._client.role_definitions.create_or_update( vault_base_url=self._vault_url, scope=role_scope, - role_definition_name=kwargs.pop("role_definition_name", None) or str(uuid4()), + role_definition_name=role_definition_name, parameters=parameters, **kwargs ) diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/aio/_access_control_client.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/aio/_access_control_client.py index 7165c1fd0463..23f7ccb31566 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/aio/_access_control_client.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/aio/_access_control_client.py @@ -46,6 +46,9 @@ async def create_role_assignment( :type role_assignment_name: str or uuid.UUID :rtype: KeyVaultRoleAssignment """ + role_assignment_name_provided = kwargs.pop("role_assignment_name", None) + role_assignment_name = str(role_assignment_name_provided) if role_assignment_name_provided else str(uuid4()) + create_parameters = self._client.role_assignments.models.RoleAssignmentCreateParameters( properties=self._client.role_assignments.models.RoleAssignmentProperties( principal_id=principal_id, role_definition_id=str(role_definition_id) @@ -54,7 +57,7 @@ async def create_role_assignment( assignment = await self._client.role_assignments.create( vault_base_url=self._vault_url, scope=role_scope, - role_assignment_name=kwargs.pop("role_assignment_name", None) or str(uuid4()), + role_assignment_name=role_assignment_name, parameters=create_parameters, **kwargs ) @@ -136,6 +139,9 @@ async def set_role_definition( :returns: The created or updated role definition :rtype: KeyVaultRoleDefinition """ + role_definition_name_provided = kwargs.pop("role_definition_name", None) + role_definition_name = str(role_definition_name_provided) if role_definition_name_provided else str(uuid4()) + permissions = [ self._client.role_definitions.models.Permission( actions=p.allowed_actions, @@ -156,7 +162,7 @@ async def set_role_definition( definition = await self._client.role_definitions.create_or_update( vault_base_url=self._vault_url, scope=role_scope, - role_definition_name=kwargs.pop("role_definition_name", None) or str(uuid4()), + role_definition_name=role_definition_name, parameters=parameters, **kwargs ) From aee07b40ddf77616b7d793e76c874911eaf23f6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?McCoy=20Pati=C3=B1o?= Date: Fri, 5 Feb 2021 15:02:51 -0800 Subject: [PATCH 10/11] Simplify role_*_name fetching --- .../keyvault/administration/_access_control_client.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_access_control_client.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_access_control_client.py index 940a531e0dc1..167fcd9b18b5 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_access_control_client.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/_access_control_client.py @@ -44,8 +44,7 @@ def create_role_assignment(self, role_scope, role_definition_id, principal_id, * :type role_assignment_name: str or uuid.UUID :rtype: KeyVaultRoleAssignment """ - role_assignment_name_provided = kwargs.pop("role_assignment_name", None) - role_assignment_name = str(role_assignment_name_provided) if role_assignment_name_provided else str(uuid4()) + role_assignment_name = kwargs.pop("role_assignment_name", None) or uuid4() create_parameters = self._client.role_assignments.models.RoleAssignmentCreateParameters( properties=self._client.role_assignments.models.RoleAssignmentProperties( @@ -55,7 +54,7 @@ def create_role_assignment(self, role_scope, role_definition_id, principal_id, * assignment = self._client.role_assignments.create( vault_base_url=self._vault_url, scope=role_scope, - role_assignment_name=role_assignment_name, + role_assignment_name=str(role_assignment_name), parameters=create_parameters, **kwargs ) @@ -133,8 +132,7 @@ def set_role_definition(self, role_scope, permissions, **kwargs): :returns: The created or updated role definition :rtype: KeyVaultRoleDefinition """ - role_definition_name_provided = kwargs.pop("role_definition_name", None) - role_definition_name = str(role_definition_name_provided) if role_definition_name_provided else str(uuid4()) + role_definition_name = kwargs.pop("role_definition_name", None) or uuid4() permissions = [ self._client.role_definitions.models.Permission( @@ -156,7 +154,7 @@ def set_role_definition(self, role_scope, permissions, **kwargs): definition = self._client.role_definitions.create_or_update( vault_base_url=self._vault_url, scope=role_scope, - role_definition_name=role_definition_name, + role_definition_name=str(role_definition_name), parameters=parameters, **kwargs ) From eaef44d27d22306f3e4b76bc35ee581bc708512c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?McCoy=20Pati=C3=B1o?= Date: Fri, 5 Feb 2021 15:13:31 -0800 Subject: [PATCH 11/11] Probably shouldn't forget async --- .../administration/aio/_access_control_client.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/aio/_access_control_client.py b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/aio/_access_control_client.py index 23f7ccb31566..f9936a6e7ae0 100644 --- a/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/aio/_access_control_client.py +++ b/sdk/keyvault/azure-keyvault-administration/azure/keyvault/administration/aio/_access_control_client.py @@ -46,8 +46,7 @@ async def create_role_assignment( :type role_assignment_name: str or uuid.UUID :rtype: KeyVaultRoleAssignment """ - role_assignment_name_provided = kwargs.pop("role_assignment_name", None) - role_assignment_name = str(role_assignment_name_provided) if role_assignment_name_provided else str(uuid4()) + role_assignment_name = kwargs.pop("role_assignment_name", None) or uuid4() create_parameters = self._client.role_assignments.models.RoleAssignmentCreateParameters( properties=self._client.role_assignments.models.RoleAssignmentProperties( @@ -57,7 +56,7 @@ async def create_role_assignment( assignment = await self._client.role_assignments.create( vault_base_url=self._vault_url, scope=role_scope, - role_assignment_name=role_assignment_name, + role_assignment_name=str(role_assignment_name), parameters=create_parameters, **kwargs ) @@ -139,8 +138,7 @@ async def set_role_definition( :returns: The created or updated role definition :rtype: KeyVaultRoleDefinition """ - role_definition_name_provided = kwargs.pop("role_definition_name", None) - role_definition_name = str(role_definition_name_provided) if role_definition_name_provided else str(uuid4()) + role_definition_name = kwargs.pop("role_definition_name", None) or uuid4() permissions = [ self._client.role_definitions.models.Permission( @@ -162,7 +160,7 @@ async def set_role_definition( definition = await self._client.role_definitions.create_or_update( vault_base_url=self._vault_url, scope=role_scope, - role_definition_name=role_definition_name, + role_definition_name=str(role_definition_name), parameters=parameters, **kwargs )