Skip to content

Commit b5de5d7

Browse files
committed
renamed existing id parser to be more consistent with new class
1 parent 022bc80 commit b5de5d7

File tree

5 files changed

+55
-28
lines changed

5 files changed

+55
-28
lines changed

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

+5-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@
2424
LifetimeAction,
2525
KeyVaultCertificate
2626
)
27+
from ._parse_id import parse_certificate_id
2728
from ._shared.client_base import ApiVersion
29+
from ._shared import ParsedId
2830

2931
__all__ = [
3032
"ApiVersion",
@@ -47,7 +49,9 @@
4749
"CertificateContentType",
4850
"WellKnownIssuerNames",
4951
"CertificateIssuer",
50-
"IssuerProperties"
52+
"IssuerProperties",
53+
"parse_certificate_id",
54+
"ParsedId",
5155
]
5256

5357
from ._version import VERSION

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

+7-6
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# ------------------------------------
55

66
# pylint: disable=too-many-lines,too-many-public-methods
7-
from ._shared import parse_vault_id
7+
from ._shared import parse_key_vault_identifier
88
from ._generated.v7_1 import models
99
from ._enums import(
1010
CertificatePolicyAction,
@@ -147,7 +147,7 @@ def __init__(self, **kwargs):
147147
# type: (**Any) -> None
148148
self._attributes = kwargs.pop("attributes", None)
149149
self._id = kwargs.pop("cert_id", None)
150-
self._vault_id = parse_vault_id(self._id)
150+
self._vault_id = parse_key_vault_identifier(self._id)
151151
self._x509_thumbprint = kwargs.pop("x509_thumbprint", None)
152152
self._tags = kwargs.pop("tags", None)
153153

@@ -430,7 +430,7 @@ def __init__(
430430
):
431431
# type: (...) -> None
432432
self._id = cert_operation_id
433-
self._vault_id = parse_vault_id(cert_operation_id)
433+
self._vault_id = parse_key_vault_identifier(cert_operation_id)
434434
self._issuer_name = issuer_name
435435
self._certificate_type = certificate_type
436436
self._certificate_transparency = certificate_transparency
@@ -1058,7 +1058,7 @@ class IssuerProperties(object):
10581058
def __init__(self, provider=None, **kwargs):
10591059
# type: (Optional[str], **Any) -> None
10601060
self._id = kwargs.pop("issuer_id", None)
1061-
self._vault_id = parse_vault_id(self._id)
1061+
self._vault_id = parse_key_vault_identifier(self._id)
10621062
self._provider = provider
10631063

10641064
def __repr__(self):
@@ -1120,7 +1120,7 @@ def __init__(
11201120
self._organization_id = organization_id
11211121
self._admin_contacts = admin_contacts
11221122
self._id = kwargs.pop("issuer_id", None)
1123-
self._vault_id = parse_vault_id(self._id)
1123+
self._vault_id = parse_key_vault_identifier(self._id)
11241124

11251125
def __repr__(self):
11261126
# type () -> str
@@ -1158,7 +1158,8 @@ def id(self):
11581158
def name(self):
11591159
# type: () -> str
11601160
# Issuer name is listed under version under vault_id
1161-
# This is because the id we pass to parse_vault_id has an extra segment, so where most cases the version of
1161+
# This is because the id we pass to parse_key_vault_identifier has an extra segment,
1162+
# so where most cases the version of
11621163
# The general pattern is certificates/name/version, but here we have certificates/issuers/name/version
11631164
# Issuers are not versioned.
11641165
""":rtype: str"""

sdk/keyvault/azure-keyvault-certificates/azure/keyvault/certificates/_shared/__init__.py

+31-9
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
# Copyright (c) Microsoft Corporation.
33
# Licensed under the MIT License.
44
# ------------------------------------
5-
from collections import namedtuple
6-
75
try:
86
import urllib.parse as parse
97
except ImportError:
@@ -24,23 +22,47 @@
2422
"KeyVaultClientBase",
2523
]
2624

27-
_VaultId = namedtuple("VaultId", ["vault_url", "collection", "name", "version"])
25+
class ParsedId():
26+
"""Represents a key vault identifier and its parsed contents.
27+
28+
:param str original_id: The originally received complete identifier
29+
:param str vault_url: The vault URL
30+
:param str collection: The collection name of the id.
31+
:param str name: The name extracted from the id
32+
:param str version: The version extracted from the id
33+
"""
34+
35+
def __init__(
36+
self,
37+
original_id, # type: str
38+
vault_url, # type: str
39+
collection, # type: str
40+
name, # type: str
41+
version=None # type: Optional[str]
42+
):
43+
self.original_id = original_id
44+
self.vault_url = vault_url
45+
self.collection = collection
46+
self.name = name
47+
self.version = version
2848

2949

30-
def parse_vault_id(url):
50+
def parse_key_vault_identifier(original_id):
51+
# type: (str) -> ParsedId
3152
try:
32-
parsed_uri = parse.urlparse(url)
53+
parsed_uri = parse.urlparse(original_id)
3354
except Exception: # pylint: disable=broad-except
34-
raise ValueError("'{}' is not not a valid url".format(url))
55+
raise ValueError("'{}' is not not a valid ID".format(original_id))
3556
if not (parsed_uri.scheme and parsed_uri.hostname):
36-
raise ValueError("'{}' is not not a valid url".format(url))
57+
raise ValueError("'{}' is not not a valid ID".format(original_id))
3758

3859
path = list(filter(None, parsed_uri.path.split("/")))
3960

4061
if len(path) < 2 or len(path) > 3:
41-
raise ValueError("'{}' is not not a valid vault url".format(url))
62+
raise ValueError("'{}' is not not a valid vault ID".format(original_id))
4263

43-
return _VaultId(
64+
return ParsedId(
65+
original_id=original_id,
4466
vault_url="{}://{}".format(parsed_uri.scheme, parsed_uri.hostname),
4567
collection=path[0],
4668
name=path[1],

sdk/keyvault/azure-keyvault-certificates/tests/test_certificates_client.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
CertificateIssuer,
2525
IssuerProperties,
2626
)
27-
from azure.keyvault.certificates._shared import parse_vault_id
27+
from azure.keyvault.certificates._shared import parse_key_vault_identifier
2828
from devtools_testutils import ResourceGroupPreparer, KeyVaultPreparer
2929

3030
from _shared.preparer import KeyVaultClientPreparer as _KeyVaultClientPreparer
@@ -83,7 +83,7 @@ def _validate_certificate_operation(self, pending_cert_operation, vault, cert_na
8383
self.assertIsNotNone(pending_cert_operation)
8484
self.assertIsNotNone(pending_cert_operation.csr)
8585
self.assertEqual(original_cert_policy.issuer_name, pending_cert_operation.issuer_name)
86-
pending_id = parse_vault_id(pending_cert_operation.id)
86+
pending_id = parse_key_vault_identifier(pending_cert_operation.id)
8787
self.assertEqual(pending_id.vault_url.strip("/"), vault.strip("/"))
8888
self.assertEqual(pending_id.name, cert_name)
8989

@@ -258,7 +258,7 @@ def test_list(self, client, **kwargs):
258258
error_count = 0
259259
try:
260260
cert_bundle = self._import_common_certificate(client=client, cert_name=cert_name)
261-
parsed_id = parse_vault_id(url=cert_bundle.id)
261+
parsed_id = parse_key_vault_identifier(original_id=cert_bundle.id)
262262
cid = parsed_id.vault_url + "/" + parsed_id.collection + "/" + parsed_id.name
263263
expected[cid.strip("/")] = cert_bundle
264264
except Exception as ex:
@@ -287,7 +287,7 @@ def test_list_certificate_versions(self, client, **kwargs):
287287
error_count = 0
288288
try:
289289
cert_bundle = self._import_common_certificate(client=client, cert_name=cert_name)
290-
parsed_id = parse_vault_id(url=cert_bundle.id)
290+
parsed_id = parse_key_vault_identifier(original_id=cert_bundle.id)
291291
cid = parsed_id.vault_url + "/" + parsed_id.collection + "/" + parsed_id.name + "/" + parsed_id.version
292292
expected[cid.strip("/")] = cert_bundle
293293
except Exception as ex:
@@ -355,7 +355,7 @@ def test_recover_and_purge(self, client, **kwargs):
355355
client.begin_delete_certificate(certificate_name=cert_name).wait()
356356

357357
# validate all our deleted certificates are returned by list_deleted_certificates
358-
deleted = [parse_vault_id(url=c.id).name for c in client.list_deleted_certificates()]
358+
deleted = [parse_key_vault_identifier(original_id=c.id).name for c in client.list_deleted_certificates()]
359359
self.assertTrue(all(c in deleted for c in certs.keys()))
360360

361361
# recover select certificates
@@ -370,7 +370,7 @@ def test_recover_and_purge(self, client, **kwargs):
370370
time.sleep(50)
371371

372372
# validate none of our deleted certificates are returned by list_deleted_certificates
373-
deleted = [parse_vault_id(url=c.id).name for c in client.list_deleted_certificates()]
373+
deleted = [parse_key_vault_identifier(original_id=c.id).name for c in client.list_deleted_certificates()]
374374
self.assertTrue(not any(c in deleted for c in certs.keys()))
375375

376376
# validate the recovered certificates

sdk/keyvault/azure-keyvault-certificates/tests/test_certificates_client_async.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
IssuerProperties,
2323
)
2424
from azure.keyvault.certificates.aio import CertificateClient
25-
from azure.keyvault.certificates._shared import parse_vault_id
25+
from azure.keyvault.certificates._shared import parse_key_vault_identifier
2626
from devtools_testutils import ResourceGroupPreparer, KeyVaultPreparer
2727
import pytest
2828

@@ -77,7 +77,7 @@ def _validate_certificate_operation(self, pending_cert_operation, vault, cert_na
7777
self.assertIsNotNone(pending_cert_operation)
7878
self.assertIsNotNone(pending_cert_operation.csr)
7979
self.assertEqual(original_cert_policy.issuer_name, pending_cert_operation.issuer_name)
80-
pending_id = parse_vault_id(pending_cert_operation.id)
80+
pending_id = parse_key_vault_identifier(pending_cert_operation.id)
8181
self.assertEqual(pending_id.vault_url.strip("/"), vault.strip("/"))
8282
self.assertEqual(pending_id.name, cert_name)
8383

@@ -253,7 +253,7 @@ async def test_list(self, client, **kwargs):
253253
error_count = 0
254254
try:
255255
cert_bundle = await self._import_common_certificate(client=client, cert_name=cert_name)
256-
parsed_id = parse_vault_id(url=cert_bundle.id)
256+
parsed_id = parse_key_vault_identifier(original_id=cert_bundle.id)
257257
cid = parsed_id.vault_url + "/" + parsed_id.collection + "/" + parsed_id.name
258258
expected[cid.strip("/")] = cert_bundle
259259
except Exception as ex:
@@ -282,7 +282,7 @@ async def test_list_certificate_versions(self, client, **kwargs):
282282
error_count = 0
283283
try:
284284
cert_bundle = await self._import_common_certificate(client=client, cert_name=cert_name)
285-
parsed_id = parse_vault_id(url=cert_bundle.id)
285+
parsed_id = parse_key_vault_identifier(original_id=cert_bundle.id)
286286
cid = parsed_id.vault_url + "/" + parsed_id.collection + "/" + parsed_id.name + "/" + parsed_id.version
287287
expected[cid.strip("/")] = cert_bundle
288288
except Exception as ex:
@@ -355,7 +355,7 @@ async def test_recover_and_purge(self, client, **kwargs):
355355
deleted_certificates = client.list_deleted_certificates()
356356
deleted = []
357357
async for c in deleted_certificates:
358-
deleted.append(parse_vault_id(url=c.id).name)
358+
deleted.append(parse_key_vault_identifier(original_id=c.id).name)
359359
self.assertTrue(all(c in deleted for c in certs.keys()))
360360

361361
# recover select certificates
@@ -373,7 +373,7 @@ async def test_recover_and_purge(self, client, **kwargs):
373373
deleted_certificates = client.list_deleted_certificates()
374374
deleted = []
375375
async for c in deleted_certificates:
376-
deleted.append(parse_vault_id(url=c.id).name)
376+
deleted.append(parse_key_vault_identifier(original_id=c.id).name)
377377
self.assertTrue(not any(c in deleted for c in certs.keys()))
378378

379379
# validate the recovered certificates

0 commit comments

Comments
 (0)