[mod] pep8 on backup.py

This commit is contained in:
Laurent Peuch 2017-08-20 22:49:21 +02:00
parent 83971afb9c
commit 40a5bcc96b

View file

@ -75,7 +75,6 @@ class BackupRestoreTargetsManager(object):
"apps": {}
}
def set_result(self, category, element, value):
"""
Change (or initialize) the current status/result of a given target.
@ -102,7 +101,6 @@ class BackupRestoreTargetsManager(object):
else:
self.results[category][element] = value
def set_wanted(self, category,
wanted_targets, available_targets,
error_if_wanted_target_is_unavailable):
@ -156,7 +154,6 @@ class BackupRestoreTargetsManager(object):
return self.list(category, exclude=["Skipped"])
def list(self, category, include=None, exclude=None):
"""
List targets in a given category.
@ -258,7 +255,6 @@ class BackupManager():
}
self.targets = BackupRestoreTargetsManager()
# Define backup name if needed
if not name:
name = self._define_backup_name()
@ -352,7 +348,6 @@ class BackupManager():
system_parts, hook_list('backup')["hooks"],
unknown_error)
def set_apps_targets(self, apps=[]):
"""
Define and validate targetted apps to be backuped
@ -385,7 +380,6 @@ class BackupManager():
logger.warning(m18n.n('backup_with_no_restore_script_for_app', app=app))
self.targets.set_result("apps", app, "Warning")
###########################################################################
# Management of files to backup / "The CSV" #
###########################################################################
@ -400,7 +394,6 @@ class BackupManager():
"""
_call_for_each_path(self, BackupManager._add_to_list_to_backup, tmp_csv)
def _add_to_list_to_backup(self, source, dest=None):
"""
Mark file or directory to backup
@ -431,7 +424,6 @@ class BackupManager():
dest = os.path.join(dest, os.path.basename(source))
self.paths_to_backup.append({'source': source, 'dest': dest})
def _write_csv(self):
"""
Write the backup list into a CSV
@ -473,7 +465,6 @@ class BackupManager():
logger.error(m18n.n('backup_csv_addition_failed'))
self.csv_file.close()
###########################################################################
# File collection from system parts and apps #
###########################################################################
@ -516,7 +507,6 @@ class BackupManager():
filesystem.rm(self.work_dir, True, True)
raise MoulinetteError(errno.EINVAL, m18n.n('backup_nothings_done'))
# Add unlisted files from backup tmp dir
self._add_to_list_to_backup('backup.csv')
self._add_to_list_to_backup('info.json')
@ -537,7 +527,6 @@ class BackupManager():
with open("%s/info.json" % self.work_dir, 'w') as f:
f.write(json.dumps(self.info))
def _get_env_var(self, app=None):
"""
Define environment variables for apps or system backup scripts.
@ -567,7 +556,6 @@ class BackupManager():
return env_var
def _collect_system_files(self):
"""
List file to backup for each selected system part
@ -633,7 +621,6 @@ class BackupManager():
logger.error(m18n.n('backup_system_part_failed', part=part))
self.targets.set_result("system", part, "Error")
def _collect_apps_files(self):
""" Prepare backup for each selected apps """
@ -642,7 +629,6 @@ class BackupManager():
for app_instance_name in apps_targets:
self._collect_app_files(app_instance_name)
def _collect_app_files(self, app):
"""
List files to backup for the app into the paths_to_backup dict.
@ -716,7 +702,6 @@ class BackupManager():
filesystem.rm(tmp_script, force=True)
filesystem.rm(env_dict["YNH_BACKUP_CSV"], force=True)
###########################################################################
# Actual backup archive creation / method management #
###########################################################################
@ -733,7 +718,6 @@ class BackupManager():
"""
self.methods.append(method)
def backup(self):
"""Apply backup methods"""
@ -742,7 +726,6 @@ class BackupManager():
method.mount_and_backup(self)
logger.info(m18n.n('backup_method_' + method.method_name + '_finished'))
def _compute_backup_size(self):
"""
Compute backup global size and details size for each apps and system
@ -854,7 +837,6 @@ class RestoreManager():
return len(successful_apps) != 0 \
or len(successful_system) != 0
def _read_info_files(self):
"""
Read the info file from inside an archive
@ -878,7 +860,6 @@ class RestoreManager():
logger.debug("restoring from backup '%s' created on %s", self.name,
time.ctime(self.info['created_at']))
def _postinstall_if_needed(self):
"""
Post install yunohost if needed
@ -903,7 +884,6 @@ class RestoreManager():
logger.debug("executing the post-install...")
tools_postinstall(domain, 'yunohost', True)
def clean(self):
"""
End a restore operations by cleaning the working directory and
@ -923,7 +903,6 @@ class RestoreManager():
logger.warning(m18n.n('restore_cleaning_failed'))
filesystem.rm(self.work_dir, True, True)
###########################################################################
# Restore target manangement #
###########################################################################
@ -1002,7 +981,6 @@ class RestoreManager():
self.info['apps'].keys(),
unknown_error)
###########################################################################
# Archive mounting #
###########################################################################
@ -1138,7 +1116,6 @@ class RestoreManager():
finally:
self.clean()
def _restore_system(self):
""" Restore user and system parts """
@ -1166,7 +1143,6 @@ class RestoreManager():
service_regen_conf()
def _restore_apps(self):
"""Restore all apps targeted"""
@ -1175,7 +1151,6 @@ class RestoreManager():
for app in apps_targets:
self._restore_app(app)
def _restore_app(self, app_instance_name):
"""
Restore an app
@ -1285,7 +1260,6 @@ class RestoreManager():
# Cleaning app directory
shutil.rmtree(app_settings_new_path, ignore_errors=True)
# TODO Cleaning app hooks
else:
self.targets.set_result("apps", app_instance_name, "Success")
@ -1293,7 +1267,6 @@ class RestoreManager():
# Cleaning temporary scripts directory
shutil.rmtree(tmp_folder_for_app_restore, ignore_errors=True)
def _get_env_var(self, app=None):
""" Define environment variable for hooks call """
env_var = {}
@ -1318,6 +1291,7 @@ class RestoreManager():
# Backup methods #
###############################################################################
class BackupMethod(object):
"""
BackupMethod is an abstract class that represents a way to backup and
@ -1364,6 +1338,7 @@ class BackupMethod(object):
method = BackupMethod.create("copy")
method.mount(restore_manager)
"""
def __init__(self, repo=None):
"""
BackupMethod constructors
@ -1646,6 +1621,7 @@ class CopyBackupMethod(BackupMethod):
This class just do an uncompress copy of each file in a location, and
could be the inverse for restoring
"""
def __init__(self, repo=None):
super(CopyBackupMethod, self).__init__(repo)
@ -1712,18 +1688,15 @@ class TarBackupMethod(BackupMethod):
def __init__(self, repo=None):
super(TarBackupMethod, self).__init__(repo)
@property
def method_name(self):
return 'tar'
@property
def _archive_file(self):
"""Return the compress archive path"""
return os.path.join(self.repo, self.name + '.tar.gz')
def backup(self):
"""
Compress prepared files
@ -1774,7 +1747,6 @@ class TarBackupMethod(BackupMethod):
if not os.path.isfile(link):
os.symlink(self._archive_file, link)
def mount(self, restore_manager):
"""
Mount the archive. We avoid copy to be able to restore on system without
@ -1845,7 +1817,6 @@ class TarBackupMethod(BackupMethod):
]
tar.extractall(members=subdir_and_files, path=self.work_dir)
# Extract apps backup
for app in apps_targets:
subdir_and_files = [
@ -1855,14 +1826,12 @@ class TarBackupMethod(BackupMethod):
tar.extractall(members=subdir_and_files, path=self.work_dir)
class BorgBackupMethod(BackupMethod):
@property
def method_name(self):
return 'borg'
def backup(self):
""" Backup prepared files with borg """
super(CopyBackupMethod, self).backup()
@ -1871,7 +1840,6 @@ class BorgBackupMethod(BackupMethod):
raise MoulinetteError(
errno.EIO, m18n.n('backup_borg_not_implemented'))
def mount(self, mnt_path):
raise MoulinetteError(
errno.EIO, m18n.n('backup_borg_not_implemented'))
@ -1883,18 +1851,17 @@ class CustomBackupMethod(BackupMethod):
backup/restore operations. A user can add his own hook inside
/etc/yunohost/hooks.d/backup_method/
"""
def __init__(self, repo=None, method=None, **kwargs):
super(CustomBackupMethod, self).__init__(repo)
self.args = kwargs
self.method = method
self._need_mount = None
@property
def method_name(self):
return 'borg'
def need_mount(self):
"""Call the backup_method hook to know if we need to organize files
@ -1910,7 +1877,6 @@ class CustomBackupMethod(BackupMethod):
self._need_mount = True if ret['succeed'] else False
return self._need_mount
def backup(self):
"""
Launch a custom script to backup
@ -1939,7 +1905,6 @@ class CustomBackupMethod(BackupMethod):
raise MoulinetteError(errno.EIO,
m18n.n('backup_custom_mount_error'))
def _get_args(self, action):
"""Return the arguments to give to the custom script"""
return [action, self.work_dir, self.name, self.repo, self.manager.size,
@ -2172,7 +2137,6 @@ def backup_restore(auth, name,
restore_manager.mount()
restore_manager.restore()
# Check if something has been restored
if restore_manager.success:
logger.success(m18n.n('restore_complete'))
@ -2334,6 +2298,7 @@ def backup_delete(name):
# Misc helpers #
###############################################################################
def _create_archive_dir():
""" Create the YunoHost archives directory if doesn't exist """
if not os.path.isdir(ARCHIVES_PATH):
@ -2361,4 +2326,3 @@ def disk_usage(path):
du_output = subprocess.check_output(['du', '-sb', path])
return int(du_output.split()[0].decode('utf-8'))