Skip to content

Commit 4963499

Browse files
authored
[Key Vault] Make test resource cleanup script asynchronous (#17032)
1 parent b6d2979 commit 4963499

File tree

1 file changed

+63
-27
lines changed

1 file changed

+63
-27
lines changed

sdk/keyvault/test-resources-cleanup.py

Lines changed: 63 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@
22
# Copyright (c) Microsoft Corporation.
33
# Licensed under the MIT License.
44
# ------------------------------------
5-
import os
5+
import asyncio
66
from dotenv import load_dotenv
7+
import os
78

8-
from azure.identity import ClientSecretCredential
9-
from azure.keyvault.certificates import CertificateClient
10-
from azure.keyvault.keys import KeyClient
11-
from azure.keyvault.secrets import SecretClient
9+
from azure.identity.aio import ClientSecretCredential
10+
from azure.keyvault.certificates.aio import CertificateClient
11+
from azure.keyvault.keys.aio import KeyClient
12+
from azure.keyvault.secrets.aio import SecretClient
1213

1314
load_dotenv()
1415

@@ -31,25 +32,60 @@
3132
key_client = KeyClient(os.environ["AZURE_KEYVAULT_URL"], credential)
3233
secret_client = SecretClient(os.environ["AZURE_KEYVAULT_URL"], credential)
3334

34-
test_certificates = [c for c in cert_client.list_properties_of_certificates() if c.name.startswith("livekvtest")]
35-
for certificate in test_certificates:
36-
cert_client.begin_delete_certificate(certificate.name).wait()
37-
deleted_test_certificates = [
38-
c for c in cert_client.list_deleted_certificates(include_pending=True) if c.name.startswith("livekvtest")
39-
]
40-
for certificate in deleted_test_certificates:
41-
cert_client.purge_deleted_certificate(certificate.name)
42-
43-
test_keys = [k for k in key_client.list_properties_of_keys() if k.name.startswith("livekvtest")]
44-
for key in test_keys:
45-
key_client.begin_delete_key(key.name).wait()
46-
deleted_test_keys = [k for k in key_client.list_deleted_keys() if k.name.startswith("livekvtest")]
47-
for key in deleted_test_keys:
48-
key_client.purge_deleted_key(key.name)
49-
50-
test_secrets = [s for s in secret_client.list_properties_of_secrets() if s.name.startswith("livekvtest")]
51-
for secret in test_secrets:
52-
secret_client.begin_delete_secret(secret.name).wait()
53-
deleted_test_secrets = [s for s in secret_client.list_deleted_secrets() if s.name.startswith("livekvtest")]
54-
for secret in deleted_test_secrets:
55-
secret_client.purge_deleted_secret(secret.name)
35+
async def delete_certificates():
36+
coroutines = []
37+
38+
test_certificates = cert_client.list_properties_of_certificates()
39+
async for certificate in test_certificates:
40+
if certificate.name.startswith("livekvtest"):
41+
coroutines.append(cert_client.delete_certificate(certificate.name))
42+
43+
return await asyncio.gather(*coroutines)
44+
45+
async def delete_keys_and_secrets():
46+
coroutines = []
47+
48+
test_keys = key_client.list_properties_of_keys()
49+
async for key in test_keys:
50+
if key.name.startswith("livekvtest"):
51+
coroutines.append(key_client.delete_key(key.name))
52+
53+
test_secrets = secret_client.list_properties_of_secrets()
54+
async for secret in test_secrets:
55+
if secret.name.startswith("livekvtest"):
56+
coroutines.append(secret_client.delete_secret(secret.name))
57+
58+
return await asyncio.gather(*coroutines)
59+
60+
async def purge_resources():
61+
coroutines = []
62+
63+
deleted_test_certificates = cert_client.list_deleted_certificates(include_pending=True)
64+
async for certificate in deleted_test_certificates:
65+
if certificate.name.startswith("livekvtest"):
66+
coroutines.append(cert_client.purge_deleted_certificate(certificate.name))
67+
68+
deleted_test_keys = key_client.list_deleted_keys()
69+
async for key in deleted_test_keys:
70+
if key.name.startswith("livekvtest"):
71+
coroutines.append(key_client.purge_deleted_key(key.name))
72+
73+
deleted_test_secrets = secret_client.list_deleted_secrets()
74+
async for secret in deleted_test_secrets:
75+
if secret.name.startswith("livekvtest"):
76+
coroutines.append(secret_client.purge_deleted_secret(secret.name))
77+
78+
return await asyncio.gather(*coroutines)
79+
80+
async def close_sessions():
81+
await credential.close()
82+
await cert_client.close()
83+
await key_client.close()
84+
await secret_client.close()
85+
86+
loop = asyncio.get_event_loop()
87+
loop.run_until_complete(delete_certificates())
88+
loop.run_until_complete(delete_keys_and_secrets())
89+
loop.run_until_complete(purge_resources())
90+
loop.run_until_complete(close_sessions())
91+
loop.close()

0 commit comments

Comments
 (0)