Skip to content
Merged
11 changes: 6 additions & 5 deletions sdk/keyvault/azure-keyvault-administration/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
# Release History

## 4.3.0b1 (Unreleased)
## 4.3.0b1 (2022-11-15)

### Features Added

### Breaking Changes

### Bugs Fixed
- Added sync and async `KeyVaultSettingsClient`s for getting and updating Managed HSM settings.
- Added support for service API version `7.4-preview.1`

### Other Changes
- Python 3.6 is no longer supported. Please use Python version 3.7 or later.
- Key Vault API version `7.4-preview.1` is now the default
- Updated minimum `azure-core` version to 1.24.0
- Dropped `msrest` requirement
- Dropped `six` requirement
- Added requirement for `isodate>=0.6.1` (`isodate` was required by `msrest`)
- Added requirement for `typing-extensions>=4.0.1`

Expand Down
5 changes: 3 additions & 2 deletions sdk/keyvault/azure-keyvault-administration/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ create, manage, and deploy public and private SSL/TLS certificates

## _Disclaimer_

_Azure SDK Python packages support for Python 2.7 has ended 01 January 2022. For more information and questions, please refer to https://github.com/Azure/azure-sdk-for-python/issues/20691_.
_Azure SDK Python packages support for Python 2.7 has ended 01 January 2022. For more information and questions, please refer to https://github.com/Azure/azure-sdk-for-python/issues/20691._
_Python 3.7 or later is required to use this package. For more details, please refer to [Azure SDK for Python version support policy](https://github.com/Azure/azure-sdk-for-python/wiki/Azure-SDKs-Python-version-support-policy)._

## Getting started
### Install packages
Expand All @@ -32,7 +33,7 @@ authentication as demonstrated below.

### Prerequisites
* An [Azure subscription][azure_sub]
* Python 3.6 or later
* Python 3.7 or later
* An existing [Key Vault Managed HSM][managed_hsm]. If you need to create one, you can do so using the Azure CLI by following the steps in [this document][managed_hsm_cli].

### Authenticate the client
Expand Down
2 changes: 1 addition & 1 deletion sdk/keyvault/azure-keyvault-administration/assets.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
"AssetsRepo": "Azure/azure-sdk-assets",
"AssetsRepoPrefixPath": "python",
"TagPrefix": "python/keyvault/azure-keyvault-administration",
"Tag": "python/keyvault/azure-keyvault-administration_d3a997562c"
"Tag": "python/keyvault/azure-keyvault-administration_ed5ac87a41"
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,17 @@
# ------------------------------------
from ._access_control_client import KeyVaultAccessControlClient
from ._backup_client import KeyVaultBackupClient
from ._enums import KeyVaultRoleScope, KeyVaultDataAction
from ._enums import KeyVaultRoleScope, KeyVaultDataAction, SettingType
from ._internal.client_base import ApiVersion
from ._models import (
KeyVaultBackupResult,
KeyVaultPermission,
KeyVaultRoleAssignment,
KeyVaultRoleAssignmentProperties,
KeyVaultRoleDefinition,
KeyVaultSetting,
)
from ._settings_client import KeyVaultSettingsClient


__all__ = [
Expand All @@ -26,6 +28,9 @@
"KeyVaultRoleAssignmentProperties",
"KeyVaultRoleDefinition",
"KeyVaultRoleScope",
"KeyVaultSetting",
"KeyVaultSettingsClient",
"SettingType",
]

from ._version import VERSION
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,3 +85,9 @@ class KeyVaultDataAction(str, Enum, metaclass=CaseInsensitiveEnumMeta):
READ_HSM_RESTORE_STATUS = "Microsoft.KeyVault/managedHsm/restore/status/action"
#: Generate random numbers.
RANDOM_NUMBERS_GENERATE = "Microsoft.KeyVault/managedHsm/rng/action"


class SettingType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
"""The type specifier of the setting value."""

BOOLEAN = "boolean"
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class KeyVaultClient(KeyVaultClientOperationsMixin, MultiApiClientMixin, _SDKCli
:keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
"""

DEFAULT_API_VERSION = '7.3'
DEFAULT_API_VERSION = '7.4-preview.1'
_PROFILE_TAG = "azure.keyvault.KeyVaultClient"
LATEST_PROFILE = ProfileDefinition({
_PROFILE_TAG: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,16 @@ def begin_full_backup(
azure_storage_blob_container_uri: Optional[Union[_models.SASTokenParameter, IO]] = None,
**kwargs: Any
) -> LROPoller[_models.FullBackupOperation]:
"""Creates a full backup using a user-provided SAS token to an Azure blob storage container. This
operation is supported only by the Managed HSM service.
"""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. Required.
:type vault_base_url: str
:param azure_storage_blob_container_uri: Azure blob shared access signature token pointing to a
valid Azure blob container where full backup needs to be stored. This token needs to be valid
for at least next 24 hours from the time of making this call. Is either a model type or a IO
type. Default value is None.
:type azure_storage_blob_container_uri: ~azure.keyvault.v7_3.models.SASTokenParameter or IO
:type azure_storage_blob_container_uri: ~azure.keyvault.v7_4_preview_1.models.SASTokenParameter
or IO
:keyword content_type: Body Parameter content-type. Known values are: 'application/json'.
Default value is None.
:paramtype content_type: str
Expand All @@ -47,7 +47,8 @@ def begin_full_backup(
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_3.models.FullBackupOperation]
:rtype:
~azure.core.polling.LROPoller[~azure.keyvault.v7_4_preview_1.models.FullBackupOperation]
:raises ~azure.core.exceptions.HttpResponseError:
"""
api_version = self._get_api_version('begin_full_backup')
Expand Down Expand Up @@ -81,7 +82,8 @@ def begin_full_restore_operation(
:type vault_base_url: str
:param restore_blob_details: The Azure blob SAS token pointing to a folder where the previous
successful full backup was stored. Is either a model type or a IO type. Default value is None.
:type restore_blob_details: ~azure.keyvault.v7_3.models.RestoreOperationParameters or IO
:type restore_blob_details: ~azure.keyvault.v7_4_preview_1.models.RestoreOperationParameters or
IO
:keyword content_type: Body Parameter content-type. Known values are: 'application/json'.
Default value is None.
:paramtype content_type: str
Expand All @@ -95,7 +97,7 @@ def begin_full_restore_operation(
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_3.models.RestoreOperation]
:rtype: ~azure.core.polling.LROPoller[~azure.keyvault.v7_4_preview_1.models.RestoreOperation]
:raises ~azure.core.exceptions.HttpResponseError:
"""
api_version = self._get_api_version('begin_full_restore_operation')
Expand Down Expand Up @@ -132,8 +134,8 @@ def begin_selective_key_restore_operation(
:type key_name: str
:param restore_blob_details: The Azure blob SAS token pointing to a folder where the previous
successful full backup was stored. Is either a model type or a IO type. Default value is None.
:type restore_blob_details: ~azure.keyvault.v7_3.models.SelectiveKeyRestoreOperationParameters
or IO
:type restore_blob_details:
~azure.keyvault.v7_4_preview_1.models.SelectiveKeyRestoreOperationParameters or IO
:keyword content_type: Body Parameter content-type. Known values are: 'application/json'.
Default value is None.
:paramtype content_type: str
Expand All @@ -147,7 +149,8 @@ def begin_selective_key_restore_operation(
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_3.models.SelectiveKeyRestoreOperation]
:rtype:
~azure.core.polling.LROPoller[~azure.keyvault.v7_4_preview_1.models.SelectiveKeyRestoreOperation]
:raises ~azure.core.exceptions.HttpResponseError:
"""
api_version = self._get_api_version('begin_selective_key_restore_operation')
Expand Down Expand Up @@ -182,7 +185,7 @@ def full_backup_status(
:type job_id: str
:keyword callable cls: A custom type or function that will be passed the direct response
:return: FullBackupOperation or the result of cls(response)
:rtype: ~azure.keyvault.v7_3.models.FullBackupOperation
:rtype: ~azure.keyvault.v7_4_preview_1.models.FullBackupOperation
:raises ~azure.core.exceptions.HttpResponseError:
"""
api_version = self._get_api_version('full_backup_status')
Expand All @@ -203,6 +206,70 @@ def full_backup_status(
mixin_instance._deserialize = Deserializer(self._models_dict(api_version))
return mixin_instance.full_backup_status(vault_base_url, job_id, **kwargs)

def get_setting_value(
self,
vault_base_url: str,
setting_name: str,
**kwargs: Any
) -> _models.Setting:
"""Get specified account setting value.

Retrieves the value of a specified, value account setting.

:param vault_base_url: The vault name, for example https://myvault.vault.azure.net. Required.
:type vault_base_url: str
:param setting_name: The name of the account setting. Must be a valid settings option.
Required.
:type setting_name: str
:keyword callable cls: A custom type or function that will be passed the direct response
:return: Setting or the result of cls(response)
:rtype: ~azure.keyvault.v7_4_preview_1.models.Setting
:raises ~azure.core.exceptions.HttpResponseError:
"""
api_version = self._get_api_version('get_setting_value')
if api_version == '7.4-preview.1':
from .v7_4_preview_1.operations import KeyVaultClientOperationsMixin as OperationClass
else:
raise ValueError("API version {} does not have operation 'get_setting_value'".format(api_version))
mixin_instance = OperationClass()
mixin_instance._client = self._client
mixin_instance._config = self._config
mixin_instance._config.api_version = api_version
mixin_instance._serialize = Serializer(self._models_dict(api_version))
mixin_instance._serialize.client_side_validation = False
mixin_instance._deserialize = Deserializer(self._models_dict(api_version))
return mixin_instance.get_setting_value(vault_base_url, setting_name, **kwargs)

def get_settings(
self,
vault_base_url: str,
**kwargs: Any
) -> _models.SettingsListResult:
"""List account settings.

Retrieves a list of all the available account settings that can be configured.

:param vault_base_url: The vault name, for example https://myvault.vault.azure.net. Required.
:type vault_base_url: str
:keyword callable cls: A custom type or function that will be passed the direct response
:return: SettingsListResult or the result of cls(response)
:rtype: ~azure.keyvault.v7_4_preview_1.models.SettingsListResult
:raises ~azure.core.exceptions.HttpResponseError:
"""
api_version = self._get_api_version('get_settings')
if api_version == '7.4-preview.1':
from .v7_4_preview_1.operations import KeyVaultClientOperationsMixin as OperationClass
else:
raise ValueError("API version {} does not have operation 'get_settings'".format(api_version))
mixin_instance = OperationClass()
mixin_instance._client = self._client
mixin_instance._config = self._config
mixin_instance._config.api_version = api_version
mixin_instance._serialize = Serializer(self._models_dict(api_version))
mixin_instance._serialize.client_side_validation = False
mixin_instance._deserialize = Deserializer(self._models_dict(api_version))
return mixin_instance.get_settings(vault_base_url, **kwargs)

def restore_status(
self,
vault_base_url: str,
Expand All @@ -217,7 +284,7 @@ def restore_status(
:type job_id: str
:keyword callable cls: A custom type or function that will be passed the direct response
:return: RestoreOperation or the result of cls(response)
:rtype: ~azure.keyvault.v7_3.models.RestoreOperation
:rtype: ~azure.keyvault.v7_4_preview_1.models.RestoreOperation
:raises ~azure.core.exceptions.HttpResponseError:
"""
api_version = self._get_api_version('restore_status')
Expand All @@ -237,3 +304,45 @@ def restore_status(
mixin_instance._serialize.client_side_validation = False
mixin_instance._deserialize = Deserializer(self._models_dict(api_version))
return mixin_instance.restore_status(vault_base_url, job_id, **kwargs)

def update_settings(
self,
vault_base_url: str,
setting_name: str,
parameters: Union[_models.UpdateSettingsRequest, IO],
**kwargs: Any
) -> _models.Setting:
"""Updates key vault account setting, stores it, then returns the setting name and value to the
client.

Description of the pool setting to be updated.

:param vault_base_url: The vault name, for example https://myvault.vault.azure.net. Required.
:type vault_base_url: str
:param setting_name: The name of the account setting. Must be a valid settings option.
Required.
:type setting_name: str
:param parameters: The parameters to update an account setting. Is either a model type or a IO
type. Required.
:type parameters: ~azure.keyvault.v7_4_preview_1.models.UpdateSettingsRequest or IO
:keyword content_type: Body Parameter content-type. Known values are: 'application/json'.
Default value is None.
:paramtype content_type: str
:keyword callable cls: A custom type or function that will be passed the direct response
:return: Setting or the result of cls(response)
:rtype: ~azure.keyvault.v7_4_preview_1.models.Setting
:raises ~azure.core.exceptions.HttpResponseError:
"""
api_version = self._get_api_version('update_settings')
if api_version == '7.4-preview.1':
from .v7_4_preview_1.operations import KeyVaultClientOperationsMixin as OperationClass
else:
raise ValueError("API version {} does not have operation 'update_settings'".format(api_version))
mixin_instance = OperationClass()
mixin_instance._client = self._client
mixin_instance._config = self._config
mixin_instance._config.api_version = api_version
mixin_instance._serialize = Serializer(self._models_dict(api_version))
mixin_instance._serialize.client_side_validation = False
mixin_instance._deserialize = Deserializer(self._models_dict(api_version))
return mixin_instance.update_settings(vault_base_url, setting_name, parameters, **kwargs)
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class KeyVaultClient(KeyVaultClientOperationsMixin, MultiApiClientMixin, _SDKCli
:keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
"""

DEFAULT_API_VERSION = '7.3'
DEFAULT_API_VERSION = '7.4-preview.1'
_PROFILE_TAG = "azure.keyvault.KeyVaultClient"
LATEST_PROFILE = ProfileDefinition({
_PROFILE_TAG: {
Expand Down
Loading