90 lines
3.7 KiB
Python
90 lines
3.7 KiB
Python
__author__ = 'xgiovio'
|
|
|
|
|
|
|
|
import authentication, utility
|
|
|
|
def launch(swift_container,delete,fail_tries):
|
|
print ("Swift container " + swift_container)
|
|
print("___________")
|
|
|
|
swift_conn = authentication.set_authentication ()
|
|
|
|
listfoldermanifest=[]
|
|
#all files on the container
|
|
swift_conn,container_objects_raw = utility.get_list(fail_tries,swift_conn,swift_container,"")
|
|
#get dict name:manifesturl only for large files
|
|
byte0manifest,swift_conn,container_objects_manifest = utility.list_compute_manifest (fail_tries,container_objects_raw,swift_conn,swift_container,"")
|
|
for name,manifest in container_objects_manifest.items():
|
|
listfoldermanifest.append(manifest)
|
|
'''
|
|
for o in listfoldermanifest:
|
|
print(o)
|
|
'''
|
|
#_____________________________________________________________________________________________________________________
|
|
#______________________________Folders with segments
|
|
listfoldersegmentsprefix = []
|
|
|
|
#______________________________Folders with segments : container: swift_container +"_segments"
|
|
|
|
#all files on container_segments -> they are only segments
|
|
swift_conn,container_segments_objects_raw = utility.get_list(fail_tries,swift_conn,swift_container +"_segments","")
|
|
#get dict name:size
|
|
container_segments_objects = utility.list (container_segments_objects_raw,"")
|
|
#get list only with folders path name from segments
|
|
listfolder = []
|
|
for name in container_segments_objects.keys():
|
|
if utility.folder_from_path(name,"/") not in listfolder :
|
|
listfolder.append(utility.folder_from_path(name,"/"))
|
|
for o in listfolder:
|
|
listfoldersegmentsprefix.append(swift_container +"_segments/" + o)
|
|
|
|
#______________________________Folders with segments : container: swift_container path: @SynologyCloudSync/
|
|
#all files @SynologyCloudSync/ on container -> they are only segments
|
|
#get dict name:size
|
|
container_segments_objects = utility.filter_list_begin(container_objects_raw,"@SynologyCloudSync/","")
|
|
#get list only with folders path name from segments
|
|
listfolder = []
|
|
for name in container_segments_objects.keys():
|
|
if utility.folder_from_path(name,"/") not in listfolder :
|
|
listfolder.append(utility.folder_from_path(name,"/"))
|
|
for o in listfolder:
|
|
listfoldersegmentsprefix.append(swift_container +"/" + o)
|
|
|
|
|
|
#______________________________Folders with segments "!CB_"
|
|
#all files !CB_ of CloudBerry on container -> they are only segments
|
|
#get dict name:size
|
|
container_segments_objects = utility.search_list(container_objects_raw,"!CB_","")
|
|
#get list only with folders path name from segments
|
|
listfolder = []
|
|
for name in container_segments_objects.keys():
|
|
if utility.folder_from_path(name,"_") not in listfolder :
|
|
listfolder.append(utility.folder_from_path(name,"_"))
|
|
for o in listfolder:
|
|
listfoldersegmentsprefix.append(swift_container +"/" + o)
|
|
|
|
'''
|
|
for o in listfoldersegmentsprefix:
|
|
print(o)
|
|
'''
|
|
#_____________________________________________________________________________________________________________________
|
|
|
|
segments_to_delete = []
|
|
segments_not_listed = []
|
|
for manifesturlsegments in listfoldersegmentsprefix :
|
|
if manifesturlsegments not in listfoldermanifest:
|
|
segments_to_delete.append(manifesturlsegments)
|
|
|
|
for manifest in segments_to_delete:
|
|
print("Segments folder to delete: " + manifest)
|
|
|
|
for manifesturl in listfoldermanifest :
|
|
if manifesturl not in listfoldersegmentsprefix:
|
|
segments_not_listed.append(manifesturl)
|
|
|
|
for manifest in segments_not_listed:
|
|
print("Segments not present in given segments list : " + manifest)
|
|
|
|
swift_conn.close()
|