Update RAGFlowMinio to support single bucket mode and prefix paths
This commit is contained in:
parent
9108499905
commit
45c805ef33
1 changed files with 33 additions and 4 deletions
|
|
@ -193,18 +193,47 @@ class RAGFlowMinio:
|
||||||
return
|
return
|
||||||
|
|
||||||
@use_default_bucket
|
@use_default_bucket
|
||||||
def remove_bucket(self, bucket):
|
def remove_bucket(self, bucket, **kwargs):
|
||||||
|
orig_bucket = kwargs.pop('_orig_bucket', None)
|
||||||
try:
|
try:
|
||||||
if self.conn.bucket_exists(bucket):
|
if self.bucket:
|
||||||
objects_to_delete = self.conn.list_objects(bucket, recursive=True)
|
# Single bucket mode: remove objects with prefix
|
||||||
|
prefix = ""
|
||||||
|
if self.prefix_path:
|
||||||
|
prefix = f"{self.prefix_path}/"
|
||||||
|
if orig_bucket:
|
||||||
|
prefix += f"{orig_bucket}/"
|
||||||
|
|
||||||
|
# List objects with prefix
|
||||||
|
objects_to_delete = self.conn.list_objects(bucket, prefix=prefix, recursive=True)
|
||||||
for obj in objects_to_delete:
|
for obj in objects_to_delete:
|
||||||
self.conn.remove_object(bucket, obj.object_name)
|
self.conn.remove_object(bucket, obj.object_name)
|
||||||
self.conn.remove_bucket(bucket)
|
# Do NOT remove the physical bucket
|
||||||
|
else:
|
||||||
|
if self.conn.bucket_exists(bucket):
|
||||||
|
objects_to_delete = self.conn.list_objects(bucket, recursive=True)
|
||||||
|
for obj in objects_to_delete:
|
||||||
|
self.conn.remove_object(bucket, obj.object_name)
|
||||||
|
self.conn.remove_bucket(bucket)
|
||||||
except Exception:
|
except Exception:
|
||||||
logging.exception(f"Fail to remove bucket {bucket}")
|
logging.exception(f"Fail to remove bucket {bucket}")
|
||||||
|
|
||||||
|
def _resolve_bucket_and_path(self, bucket, fnm):
|
||||||
|
if self.bucket:
|
||||||
|
if self.prefix_path:
|
||||||
|
fnm = f"{self.prefix_path}/{bucket}/{fnm}"
|
||||||
|
else:
|
||||||
|
fnm = f"{bucket}/{fnm}"
|
||||||
|
bucket = self.bucket
|
||||||
|
elif self.prefix_path:
|
||||||
|
fnm = f"{self.prefix_path}/{fnm}"
|
||||||
|
return bucket, fnm
|
||||||
|
|
||||||
def copy(self, src_bucket, src_path, dest_bucket, dest_path):
|
def copy(self, src_bucket, src_path, dest_bucket, dest_path):
|
||||||
try:
|
try:
|
||||||
|
src_bucket, src_path = self._resolve_bucket_and_path(src_bucket, src_path)
|
||||||
|
dest_bucket, dest_path = self._resolve_bucket_and_path(dest_bucket, dest_path)
|
||||||
|
|
||||||
if not self.conn.bucket_exists(dest_bucket):
|
if not self.conn.bucket_exists(dest_bucket):
|
||||||
self.conn.make_bucket(dest_bucket)
|
self.conn.make_bucket(dest_bucket)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue