1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-04-27 19:05:16 +00:00
seahub/scripts/remove-objs.py
2021-12-04 10:45:31 +08:00

42 lines
1.4 KiB
Python

#!/usr/bin/env python3
import sys
import os
import logging
from seafobj.objstore_factory import objstore_factory
logging.basicConfig(format='%(asctime)s %(message)s', level=logging.INFO)
def main(argv):
repo_id = argv[1]
orig_storage_id = argv[2]
dtypes = ['commits', 'fs', 'blocks']
for dtype in dtypes:
if 'OBJECT_LIST_FILE_PATH' in os.environ:
object_list_file_path = '.'.join(['_'.join([os.environ['OBJECT_LIST_FILE_PATH'], repo_id]), dtype])
else:
logging.warning('OBJECT_LIST_FILE_PATH environment does not exist.')
sys.exit()
obj_stores = objstore_factory.get_obj_stores(dtype)
#If these storage ids passed in do not exist in conf, stop migrate this repo.
if orig_storage_id not in obj_stores:
logging.warning('Storage id passed in does not exist in configuration.\n')
sys.exit()
orig_store = obj_stores[orig_storage_id]
with open(object_list_file_path, 'r') as f:
for line in f:
obj = line.rstrip('\n').split('/', 1)
try:
orig_store.remove_obj(obj[0], obj[1])
except Exception as e:
logging.warning('Failed to remove object %s from repo %s:%s' % (obj[1], obj[0], e))
logging.info('The process of remove repo [%s] is over.\n', repo_id)
if __name__ == '__main__':
main(sys.argv)