Skip to content
Snippets Groups Projects
Commit 3edb9134 authored by David Douard's avatar David Douard
Browse files

Always generate a zip file from uploaded archives

even if there is only one of those, otherwise the loader will fail since
this later does expect the archive to be a zip file.
parent 00cc6083
No related branches found
No related tags found
1 merge request!53Always generate a zip file from uploaded archives
...@@ -35,35 +35,31 @@ def aggregate_tarballs(extraction_dir, archive_paths): ...@@ -35,35 +35,31 @@ def aggregate_tarballs(extraction_dir, archive_paths):
Tuple (directory to clean up, archive path (aggregated or not)) Tuple (directory to clean up, archive path (aggregated or not))
""" """
if len(archive_paths) > 1: # rebuild one zip archive from (possibly) multiple ones
# need to rebuild one archive from multiple ones os.makedirs(extraction_dir, 0o755, exist_ok=True)
os.makedirs(extraction_dir, 0o755, exist_ok=True) dir_path = tempfile.mkdtemp(prefix='swh.deposit-', dir=extraction_dir)
dir_path = tempfile.mkdtemp(prefix='swh.deposit-',
dir=extraction_dir) # root folder to build an aggregated tarball
# root folder to build an aggregated tarball aggregated_tarball_rootdir = os.path.join(dir_path, 'aggregate')
aggregated_tarball_rootdir = os.path.join(dir_path, 'aggregate') os.makedirs(aggregated_tarball_rootdir, 0o755, exist_ok=True)
os.makedirs(aggregated_tarball_rootdir, 0o755, exist_ok=True)
# uncompress in a temporary location all archives
# uncompress in a temporary location all archives for archive_path in archive_paths:
for archive_path in archive_paths: tarball.uncompress(archive_path, aggregated_tarball_rootdir)
tarball.uncompress(archive_path, aggregated_tarball_rootdir)
# Aggregate into one big tarball the multiple smaller ones
# Aggregate into one big tarball the multiple smaller ones temp_tarpath = tarball.compress(
temp_tarpath = tarball.compress( aggregated_tarball_rootdir + '.zip',
aggregated_tarball_rootdir + '.zip', nature='zip',
nature='zip', dirpath_or_files=aggregated_tarball_rootdir)
dirpath_or_files=aggregated_tarball_rootdir)
# can already clean up temporary directory
# can already clean up temporary directory shutil.rmtree(aggregated_tarball_rootdir)
shutil.rmtree(aggregated_tarball_rootdir)
try:
try: yield temp_tarpath
yield temp_tarpath finally:
finally: shutil.rmtree(dir_path)
shutil.rmtree(dir_path)
else: # only 1 archive, no need to do fancy actions (and no cleanup step)
yield archive_paths[0]
class SWHDepositReadArchives(SWHPrivateAPIView, SWHGetDepositAPI, class SWHDepositReadArchives(SWHPrivateAPIView, SWHGetDepositAPI,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment