From 1412cb4e39893241e476a1a459c87bda79b0c23a Mon Sep 17 00:00:00 2001 From: j Date: Mon, 1 Feb 2016 16:46:35 +0530 Subject: [PATCH] log move/remove errors during update --- oml/update.py | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/oml/update.py b/oml/update.py index fe6ce2c..e57e10c 100644 --- a/oml/update.py +++ b/oml/update.py @@ -155,7 +155,8 @@ def install(): old_version = current_version('openmedialibrary') new_version = release['modules']['openmedialibrary']['version'] if verify(release) and old_version < new_version: - os.chdir(os.path.dirname(settings.base_dir)) + base = os.path.dirname(settings.base_dir) + os.chdir(base) platform = get_platform() for module in release['modules']: if release['modules'][module].get('platform', platform) == platform and \ @@ -169,14 +170,16 @@ def install(): tar = tarfile.open(module_tar) tar.extractall() tar.close() - os.chdir(os.path.dirname(settings.base_dir)) + os.chdir(base) module_old = '%s_old' % module - if os.path.exists(module): - shutil.move(module, module_old) - shutil.move(os.path.join(new, module), module) if os.path.exists(module_old): - shutil.rmtree(module_old) - shutil.rmtree(new) + rmtree(module_old) + if os.path.exists(module): + move(module, module_old) + move(os.path.join(new, module), module) + if os.path.exists(module_old): + rmtree(module_old) + rmtree(new) else: if os.path.exists(module_tar): os.unlink(module_tar) @@ -189,6 +192,20 @@ def install(): return True return True +def move(src, dst): + try: + shutil.move(src, dst) + except: + logger.debug('failed to move %s to %s', src, dst) + raise + +def rmtree(path): + try: + shutil.rmtree(path) + except: + logger.debug('failed to remove %s', path) + raise + def update_available(): db_version = settings.server.get('db_version', 0) if db_version < settings.DB_VERSION: