From a960c92b9fa64cbcc85f0b7c9d1cc73b0626abdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Lebleu?= Date: Wed, 27 Apr 2016 11:07:28 +0200 Subject: [PATCH] [fix] Clean properly backup tmp directory if it already exists (wip #298) --- src/yunohost/backup.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/yunohost/backup.py b/src/yunohost/backup.py index 430ecd570..5fa6fe2d8 100644 --- a/src/yunohost/backup.py +++ b/src/yunohost/backup.py @@ -114,22 +114,26 @@ def backup_create(name=None, description=None, output_directory=None, else: output_directory = archives_path + def _clean_tmp_dir(retcode=0): + ret = hook_callback('post_backup_create', args=[tmp_dir, retcode]) + if not ret['failed']: + filesystem.rm(tmp_dir, True, True) + return True + else: + logger.warning(m18n.n('backup_cleaning_failed')) + return False + # Create temporary directory if not tmp_dir: tmp_dir = "%s/tmp/%s" % (backup_path, name) if os.path.isdir(tmp_dir): logger.debug("temporary directory for backup '%s' already exists", tmp_dir) - filesystem.rm(tmp_dir, recursive=True) + if not _clean_tmp_dir(): + raise MoulinetteError( + errno.EIO, m18n.n('backup_output_directory_not_empty')) filesystem.mkdir(tmp_dir, 0750, parents=True, uid='admin') - def _clean_tmp_dir(retcode=0): - ret = hook_callback('post_backup_create', args=[tmp_dir, retcode]) - if not ret['failed']: - filesystem.rm(tmp_dir, True, True) - else: - logger.warning(m18n.n('backup_cleaning_failed')) - # Initialize backup info info = { 'description': description or '',