Skip to content

Commit c532ee5

Browse files
[PRMT-439] - Remove and cleanup code
1 parent d9b2032 commit c532ee5

File tree

1 file changed

+7
-56
lines changed

1 file changed

+7
-56
lines changed

scripts/cleanup_terraform_states.py

Lines changed: 7 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -24,24 +24,9 @@ def get_terraform_bucket(self) -> str:
2424
print("Failed to find terraform bucket")
2525
sys.exit(1)
2626

27-
def remove_folder_objects(self, bucket_name:str, folder_prefix: str):
28-
#TODO - Make sure we remove version history too
29-
print(f"Deleting all objects under: {folder_prefix}")
30-
pages = self.objects_paginator.paginate(Bucket=bucket_name, Prefix=folder_prefix)
31-
32-
objects_to_delete = []
33-
for page in pages:
34-
for obj in page.get('Contents', []):
35-
objects_to_delete.append({'Key': obj['Key']})
36-
37-
if objects_to_delete:
38-
#TODO - Check values before deleting
39-
print(objects_to_delete)
40-
# self.s3_client.delete_objects(Bucket=bucket_name, Delete={'Objects': objects_to_delete})
41-
42-
def remove_folder_object_versions(self, bucket_name:str, folder_prefix: str):
27+
def remove_object_versions(self, tf_bucket: str, folder_prefix: str) -> None:
4328
print(f"Deleting all object versions under: {folder_prefix}")
44-
pages = self.object_versions_paginator.paginate(Bucket=bucket_name, Prefix=folder_prefix)
29+
pages = self.object_versions_paginator.paginate(Bucket=tf_bucket, Prefix=folder_prefix)
4530

4631
objects_to_delete = []
4732
for page in pages:
@@ -54,49 +39,19 @@ def remove_folder_object_versions(self, bucket_name:str, folder_prefix: str):
5439
)
5540

5641
if objects_to_delete:
57-
# DELETE ALL OBJECT VERSIONS
5842
for i in range(0, len(objects_to_delete), 1000):
5943
chunk = objects_to_delete[i:i + 1000]
60-
response = self.s3_client.delete_objects(
61-
Bucket=bucket_name,
44+
self.s3_client.delete_objects(
45+
Bucket=tf_bucket,
6246
Delete={'Objects': chunk}
6347
)
64-
print(f"Deleted {len(chunk)} versions/delete markers")
65-
6648
print("All object versions deleted.")
6749

68-
def empty_folder_check(self, bucket_name:str, folder_prefix: str):
69-
try:
70-
self.s3_client.head_object(Bucket=bucket_name, Key=folder_prefix)
71-
self.s3_client.delete_object(Bucket=bucket_name, Key=folder_prefix)
72-
print(f"Deleted empty folder for: {folder_prefix}")
73-
except ClientError as e:
74-
if e.response['Error']['Code'] != "404":
75-
print(f"No empty folder found to remove for: {folder_prefix}")
76-
77-
def delete_record_in_dynamo(self, tf_bucket: str, file_key: str):
78-
#TODO - query dynamo for matching tf state path based on your sandbox workspace
79-
# Print out values first before deleting to confirm it is correct
80-
50+
def delete_record_in_dynamo(self, tf_bucket: str, file_key: str) -> None:
51+
print(f"Deleting sandbox tfstate DynamoDB record")
8152
table_name = "ndr-terraform-locks"
8253
lock_id = f'{tf_bucket}/{file_key}-md5'
83-
print(f"LockID: {lock_id}")
84-
85-
# Query TODO: Remove below query when delete_item() works
86-
# response = self.dynamo_client.get_item(
87-
# TableName=table_name,
88-
# Key={
89-
# 'LockID': {'S': lock_id}
90-
# }
91-
# )
92-
#
93-
# item = response.get('Item')
94-
# if item:
95-
# print("Item found:", item)
96-
# else:
97-
# print("Item not found.")
9854

99-
# Delete
10055
self.dynamo_client.delete_item(
10156
TableName=table_name,
10257
Key={'LockID': {'S': lock_id}},
@@ -116,13 +71,9 @@ def main(self, sandbox: str):
11671
print(f"Key: {key}")
11772
parent_folder = key[len(self.env_folder):].split("/", 1)[0]
11873
if parent_folder == sandbox:
119-
print(f"parent_folder: {parent_folder}")
12074
folder_prefix = f"{self.env_folder}{parent_folder}/"
121-
print(f"folder_prefix: {folder_prefix}")
122-
self.remove_folder_object_versions(bucket_name=tf_bucket, folder_prefix=folder_prefix)
75+
self.remove_object_versions(tf_bucket=tf_bucket, folder_prefix=folder_prefix)
12376
self.delete_record_in_dynamo(tf_bucket, key)
124-
# self.remove_folder_objects(bucket_name=tf_bucket, folder_prefix=folder_prefix) # TODO: Check if deleting the object also deletes the folder. If not, proceed to delete folder
125-
#self.empty_folder_check(bucket_name=tf_bucket, folder_prefix=folder_prefix)
12677

12778
if __name__ == '__main__':
12879
sandbox = sys.argv[1]

0 commit comments

Comments
 (0)