[enh] no cli option to avoid removing an application on installation failure

This commit is contained in:
Laurent Peuch 2016-10-09 21:34:03 +02:00
parent 2c0c53d06f
commit 81c19cd1d6
2 changed files with 18 additions and 13 deletions

View file

@ -436,6 +436,9 @@ app:
-a: -a:
full: --args full: --args
help: Serialized arguments for app script (i.e. "domain=domain.tld&path=/path") help: Serialized arguments for app script (i.e. "domain=domain.tld&path=/path")
-n:
full: --no-remove-on-fail
help: Debug option to avoid removing the app on a filed installation
### app_remove() TODO: Write help ### app_remove() TODO: Write help
remove: remove:

View file

@ -440,7 +440,7 @@ def app_upgrade(auth, app=[], url=None, file=None):
logger.success(m18n.n('upgrade_complete')) logger.success(m18n.n('upgrade_complete'))
def app_install(auth, app, label=None, args=None): def app_install(auth, app, label=None, args=None, no_remove_on_fail=False):
""" """
Install apps Install apps
@ -448,6 +448,7 @@ def app_install(auth, app, label=None, args=None):
app -- Name, local path or git URL of the app to install app -- Name, local path or git URL of the app to install
label -- Custom name for the app label -- Custom name for the app
args -- Serialize arguments for app installation args -- Serialize arguments for app installation
no_remove_on_fail -- Debug option to avoid removing the app on a filed installation
""" """
from yunohost.hook import hook_add, hook_remove, hook_exec from yunohost.hook import hook_add, hook_remove, hook_exec
@ -541,19 +542,20 @@ def app_install(auth, app, label=None, args=None):
logger.exception(m18n.n('unexpected_error')) logger.exception(m18n.n('unexpected_error'))
finally: finally:
if install_retcode != 0: if install_retcode != 0:
# Setup environment for remove script if not no_remove_on_fail:
env_dict_remove = {} # Setup environment for remove script
env_dict_remove["YNH_APP_ID"] = app_id env_dict_remove = {}
env_dict_remove["YNH_APP_INSTANCE_NAME"] = app_instance_name env_dict_remove["YNH_APP_ID"] = app_id
env_dict_remove["YNH_APP_INSTANCE_NUMBER"] = str(instance_number) env_dict_remove["YNH_APP_INSTANCE_NAME"] = app_instance_name
env_dict_remove["YNH_APP_INSTANCE_NUMBER"] = str(instance_number)
# Execute remove script # Execute remove script
remove_retcode = hook_exec( remove_retcode = hook_exec(
os.path.join(extracted_app_folder, 'scripts/remove'), os.path.join(extracted_app_folder, 'scripts/remove'),
args=[app_instance_name], env=env_dict_remove) args=[app_instance_name], env=env_dict_remove)
if remove_retcode != 0: if remove_retcode != 0:
logger.warning(m18n.n('app_not_properly_removed', logger.warning(m18n.n('app_not_properly_removed',
app=app_instance_name)) app=app_instance_name))
# Clean tmp folders # Clean tmp folders
shutil.rmtree(app_setting_path) shutil.rmtree(app_setting_path)