Skip to content

Commit 2ec0448

Browse files
authored
[Key Vault] Align secrets with other languages (Azure#18766)
1 parent 9cbc08c commit 2ec0448

File tree

5 files changed

+53
-42
lines changed

5 files changed

+53
-42
lines changed

sdk/keyvault/azure-keyvault-secrets/CHANGELOG.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,13 @@
44
### Fixed
55
- Correct typing for async paging methods
66

7+
### Changed
8+
- Key Vault API version 7.2 is now the default
9+
- Updated minimum `msrest` version to 0.6.21
10+
711
### Added
8-
- Added method `parse_key_vault_secret_id` that parses out a full ID returned by Key Vault, so users can easily
9-
access the secret's `name`, `vault_url`, and `version`.
12+
- Added class `KeyVaultSecretIdentifier` that parses out a full ID returned by Key Vault,
13+
so users can easily access the secret's `name`, `vault_url`, and `version`.
1014

1115
## 4.2.0 (2020-08-11)
1216
### Fixed

sdk/keyvault/azure-keyvault-secrets/azure/keyvault/secrets/__init__.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,17 @@
22
# Copyright (c) Microsoft Corporation.
33
# Licensed under the MIT License.
44
# ------------------------------------
5-
from ._models import DeletedSecret, KeyVaultSecret, SecretProperties
6-
from ._parse_id import parse_key_vault_secret_id
7-
from ._shared import KeyVaultResourceId
5+
from ._models import DeletedSecret, KeyVaultSecret, KeyVaultSecretIdentifier, SecretProperties
86
from ._shared.client_base import ApiVersion
97
from ._client import SecretClient
108

119
__all__ = [
1210
"ApiVersion",
1311
"SecretClient",
1412
"KeyVaultSecret",
13+
"KeyVaultSecretIdentifier",
1514
"SecretProperties",
16-
"DeletedSecret",
17-
"parse_key_vault_secret_id",
18-
"KeyVaultResourceId"
15+
"DeletedSecret"
1916
]
2017

2118
from ._version import VERSION

sdk/keyvault/azure-keyvault-secrets/azure/keyvault/secrets/_models.py

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def __init__(self, attributes, vault_id, **kwargs):
2323
# type: (_models.SecretAttributes, str, **Any) -> None
2424
self._attributes = attributes
2525
self._id = vault_id
26-
self._vault_id = parse_key_vault_id(vault_id)
26+
self._vault_id = KeyVaultSecretIdentifier(vault_id)
2727
self._content_type = kwargs.get("content_type", None)
2828
self._key_id = kwargs.get("key_id", None)
2929
self._managed = kwargs.get("managed", None)
@@ -245,6 +245,45 @@ def value(self):
245245
return self._value
246246

247247

248+
class KeyVaultSecretIdentifier(object):
249+
"""Information about a KeyVaultSecret parsed from a secret ID.
250+
251+
:param str id: the full original identifier of a secret
252+
:raises ValueError: if the secret ID is improperly formatted
253+
Example:
254+
.. literalinclude:: ../tests/test_parse_id.py
255+
:start-after: [START parse_key_vault_secret_id]
256+
:end-before: [END parse_key_vault_secret_id]
257+
:language: python
258+
:caption: Parse a secret's ID
259+
:dedent: 8
260+
"""
261+
262+
def __init__(self, id): # pylint: disable=W0622
263+
# type: (str) -> None
264+
self._resource_id = parse_key_vault_id(id)
265+
266+
@property
267+
def source_id(self):
268+
# type: () -> str
269+
return self._resource_id.source_id
270+
271+
@property
272+
def vault_url(self):
273+
# type: () -> str
274+
return self._resource_id.vault_url
275+
276+
@property
277+
def name(self):
278+
# type: () -> str
279+
return self._resource_id.name
280+
281+
@property
282+
def version(self):
283+
# type: () -> Optional[str]
284+
return self._resource_id.version
285+
286+
248287
class DeletedSecret(object):
249288
"""A deleted secret's properties and information about its deletion. If soft-delete
250289
is enabled, returns information about its recovery as well."""

sdk/keyvault/azure-keyvault-secrets/azure/keyvault/secrets/_parse_id.py

Lines changed: 0 additions & 29 deletions
This file was deleted.

sdk/keyvault/azure-keyvault-secrets/tests/test_parse_id.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Copyright (c) Microsoft Corporation.
33
# Licensed under the MIT License.
44
# -------------------------------------
5-
from azure.keyvault.secrets import parse_key_vault_secret_id
5+
from azure.keyvault.secrets import KeyVaultSecretIdentifier
66
from devtools_testutils import PowerShellPreparer
77

88
from _shared.test_case import KeyVaultTestCase
@@ -21,7 +21,7 @@ def test_parse_secret_id_with_version(self, azure_keyvault_url):
2121

2222
# [START parse_key_vault_secret_id]
2323
secret = client.get_secret(secret_name)
24-
parsed_secret_id = parse_key_vault_secret_id(secret.id)
24+
parsed_secret_id = KeyVaultSecretIdentifier(secret.id)
2525

2626
print(parsed_secret_id.name)
2727
print(parsed_secret_id.vault_url)
@@ -36,7 +36,7 @@ def test_parse_secret_id_with_version(self, azure_keyvault_url):
3636

3737
def test_parse_secret_id_with_pending_version():
3838
source_id = "https://keyvault-name.vault.azure.net/secrets/secret-name/pending"
39-
parsed_secret_id = parse_key_vault_secret_id(source_id)
39+
parsed_secret_id = KeyVaultSecretIdentifier(source_id)
4040

4141
assert parsed_secret_id.name == "secret-name"
4242
assert parsed_secret_id.vault_url == "https://keyvault-name.vault.azure.net"
@@ -46,7 +46,7 @@ def test_parse_secret_id_with_pending_version():
4646

4747
def test_parse_deleted_secret_id():
4848
source_id = "https://keyvault-name.vault.azure.net/deletedsecrets/deleted-secret"
49-
parsed_secret_id = parse_key_vault_secret_id(source_id)
49+
parsed_secret_id = KeyVaultSecretIdentifier(source_id)
5050

5151
assert parsed_secret_id.name == "deleted-secret"
5252
assert parsed_secret_id.vault_url == "https://keyvault-name.vault.azure.net"

0 commit comments

Comments
 (0)