Add undelete_for_hse.py
This commit is contained in:
103
undelete_for_hse.py
Normal file
103
undelete_for_hse.py
Normal file
@@ -0,0 +1,103 @@
|
||||
import os
|
||||
import traceback
|
||||
from obs import ObsClient, Versions
|
||||
|
||||
bucket = input(f"""Insert bucket name: """)
|
||||
prefiks = input(f"""Insert prefix for bucket: """)
|
||||
|
||||
ak = os.getenv(
|
||||
"AKID"
|
||||
)
|
||||
|
||||
sk = os.getenv(
|
||||
"SKID"
|
||||
)
|
||||
|
||||
endpoint = os.getenv(
|
||||
"OBSENDPOINT"
|
||||
)
|
||||
|
||||
obsClient = ObsClient(
|
||||
access_key_id = ak,
|
||||
secret_access_key = sk,
|
||||
server = endpoint
|
||||
)
|
||||
|
||||
try:
|
||||
|
||||
actualVersions = []
|
||||
deleteVersions = []
|
||||
|
||||
mark = None
|
||||
index = 1
|
||||
|
||||
while True:
|
||||
|
||||
listing = obsClient.listVersions(
|
||||
bucket,
|
||||
version = Versions(
|
||||
prefix = prefiks,
|
||||
encoding_type = 'url',
|
||||
key_marker = mark,
|
||||
max_keys = 1000
|
||||
)
|
||||
)
|
||||
|
||||
if listing['status'] < 300:
|
||||
for file_marker in listing['body']['markers']:
|
||||
file_key = file_marker['key']
|
||||
file_version = file_marker['versionId']
|
||||
|
||||
# creating lists
|
||||
|
||||
if file_marker['isLatest'] = True:
|
||||
actualFile = {
|
||||
"key": file_key,
|
||||
"version_id": file_version
|
||||
}
|
||||
actualVersions.append(actualFile)
|
||||
else:
|
||||
deleteMarkerFile = {
|
||||
"key": file_key,
|
||||
"version_id": file_version
|
||||
}
|
||||
deleteVersions.append(deleteMarkerFile)
|
||||
|
||||
# going to next file page
|
||||
|
||||
if listing['body']['head']['isTruncated'] == True:
|
||||
mark = listing['body']['head']['nextKeyMarker']
|
||||
else:
|
||||
break
|
||||
|
||||
# now doing the right way
|
||||
|
||||
print("Deleting actual versions")
|
||||
for object in actualVersions:
|
||||
deleteObject = obsClient.deleteObject(
|
||||
bucketName = bucket,
|
||||
objectKey = object['file_key'],
|
||||
versionId = object['file_version']
|
||||
)
|
||||
|
||||
if deleteObject['status'] > 204:
|
||||
print(deleteObject)
|
||||
else:
|
||||
pass
|
||||
|
||||
print("Deleting delete marker versions")
|
||||
for object in deleteVersions:
|
||||
deleteObject = obsClient.deleteObject(
|
||||
bucketName = bucket,
|
||||
objectKey = object['file_key'],
|
||||
versionId = object['file_version']
|
||||
)
|
||||
|
||||
if deleteObject['status'] > 204:
|
||||
print(deleteObject)
|
||||
else:
|
||||
pass
|
||||
|
||||
except:
|
||||
print('exception')
|
||||
print(traceback.format_exc())
|
||||
Reference in New Issue
Block a user