Skip to content

Commit fe89422

Browse files
updated functions to manage multiple container names
1 parent 4cca622 commit fe89422

File tree

1 file changed

+43
-20
lines changed

1 file changed

+43
-20
lines changed

storage_containers.py

Lines changed: 43 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,16 @@ def create_container_on_storage_account(storage_account: str, container_name: st
2929
3030
Returns:
3131
"""
32-
container_name = container_name
3332
blob_service_client = create_blob_service_client(storage_account=storage_account)
34-
container_client = blob_service_client.create_container(container_name)
35-
print(f"Container {container_name} created on {storage_account}")
33+
list_container_names = container_name.split(",")
34+
for container_name in list_container_names:
35+
36+
try:
37+
container_client = blob_service_client.create_container(container_name)
38+
print(f"Container {container_name} created on {storage_account}")
39+
40+
except Exception as err:
41+
print(f"Error deleting container '{container_name}': {str(err)}")
3642

3743

3844
def delete_container_on_storage_account(storage_account:str, container_name: str):
@@ -48,17 +54,30 @@ def delete_container_on_storage_account(storage_account:str, container_name: str
4854
print(f"Container {container_name} deleted from {storage_account}")
4955

5056

51-
# def delete_multiple_contaners_on_storage_aaccount(storage_account: str, *container_name: str):
52-
# """
53-
# deletes multiple containers in a single run
54-
# Args:
55-
# storage_account:
56-
# *container_name:
57-
58-
# Returns:
57+
def delete_multiple_contaners_on_storage_aaccount(storage_account: str, container_name: str):
58+
"""
59+
deletes multiple containers in a single run
60+
Args:
61+
storage_account:
62+
*container_name:
5963
60-
# """
64+
Returns:
6165
66+
"""
67+
blob_service_client = create_blob_service_client(storage_account=storage_account)
68+
list_container_name = container_name.split(",")
69+
# Iterating through multiple container names
70+
for container_name in list_container_name:
71+
try:
72+
blob_service_client.delete_container(container_name)
73+
print(f"Container '{container_name}' deleted successfully.")
74+
75+
except Exception as err:
76+
print(f"Error deleting container '{container_name}': {str(err)}")
77+
78+
print(f"Deleting containers completed!!!!!!!!!!!!!!!!!!!!!!")
79+
80+
6281
## stack overflow link: https://stackoverflow.com/questions/77643982/i-am-getting-an-error-while-using-azure-stprage-blob-sdk-while-undeleting-a-cont
6382
def recover_soft_deleted_containers_on_storage_account(storage_account: str, container_name: str):
6483
"""
@@ -95,13 +114,15 @@ def recover_all_deleted_containers_from_storage_account(storage_account: str):
95114
blob_service_client = create_blob_service_client(storage_account=storage_account)
96115
container_list = list(blob_service_client.list_containers(include_deleted=True))
97116
assert len(container_list) >= 1
98-
for container in container_list:
99-
# Find the deleted container and restore it
100-
if container.deleted :
101-
restored_container_client = blob_service_client.undelete_container(
102-
deleted_container_name=container.name, deleted_container_version=container.version)
103-
print(f"Container {container.name} recovered from {storage_account}")
104-
117+
try:
118+
for container in container_list:
119+
# Find the deleted container and restore it
120+
if container.deleted :
121+
restored_container_client = blob_service_client.undelete_container(
122+
deleted_container_name=container.name, deleted_container_version=container.version)
123+
print(f"Container {container.name} recovered from {storage_account}")
124+
except Exception as err:
125+
print(f"Unable to recover container :{container.name}")
105126

106127
def list_containers_on_storage_account(storage_account: str):
107128
"""
@@ -184,6 +205,8 @@ def azure_storage_blob(storage_account: str, time_limit_of_sas_token: int, keyva
184205
elif action == "recover_all_deleted_containers":
185206
recover_all_deleted_containers_from_storage_account(storage_account=storage_account)
186207
print(f"Recovered all deleted containers from {storage_account}")
208+
elif action== "delete_multiple_containers":
209+
delete_multiple_contaners_on_storage_aaccount(storage_account=storage_account, container_name=container_name)
187210
else:
188211
print(f"provided invalid action. please provide one among the available choices")
189212

@@ -197,7 +220,7 @@ def main():
197220
parser.add_argument('--time_limit_of_sas_token', help='time limit of SAS token', type=float, default= 1, required=True)
198221
parser.add_argument('--keyvault_name', help='keyvault name in which storage account key secret set', type=str)
199222
parser.add_argument('--secret_name', help='storage account access key secret name', type=str)
200-
parser.add_argument('--action', required=True, help= 'create container / delete container/ list containers/ recover container or containers', type= str, choices=[ 'create_container','delete_container','list_containers','recover_container','recover_all_deleted_containers'])
223+
parser.add_argument('--action', required=True, help= 'create container / delete container/ list containers/ recover container or containers', type= str, choices=[ 'create_container','delete_container','delete_multiple_containers','list_containers','recover_container','recover_all_deleted_containers'])
201224
parser.add_argument('--container_name', type=str, help='container name',default='', required=True)
202225
args = parser.parse_args()
203226
storage_account = args.storage_account

0 commit comments

Comments
 (0)