Simplify(?) YNH_APP_BASEDIR creation, to happen in _make_env_for_app_script

This commit is contained in:
Alexandre Aubin 2021-10-01 03:42:59 +02:00
parent 313897d184
commit a26145ece0
2 changed files with 14 additions and 22 deletions

View file

@ -390,12 +390,11 @@ def app_change_url(operation_logger, app, domain, path):
tmp_workdir_for_app = _make_tmp_workdir_for_app(app=app) tmp_workdir_for_app = _make_tmp_workdir_for_app(app=app)
# Prepare env. var. to pass to script # Prepare env. var. to pass to script
env_dict = _make_environment_for_app_script(app) env_dict = _make_environment_for_app_script(app, workdir=tmp_workdir_for_app)
env_dict["YNH_APP_OLD_DOMAIN"] = old_domain env_dict["YNH_APP_OLD_DOMAIN"] = old_domain
env_dict["YNH_APP_OLD_PATH"] = old_path env_dict["YNH_APP_OLD_PATH"] = old_path
env_dict["YNH_APP_NEW_DOMAIN"] = domain env_dict["YNH_APP_NEW_DOMAIN"] = domain
env_dict["YNH_APP_NEW_PATH"] = path env_dict["YNH_APP_NEW_PATH"] = path
env_dict["YNH_APP_BASEDIR"] = tmp_workdir_for_app
if domain != old_domain: if domain != old_domain:
operation_logger.related_to.append(("domain", old_domain)) operation_logger.related_to.append(("domain", old_domain))
@ -544,12 +543,11 @@ def app_upgrade(app=[], url=None, file=None, force=False, no_safety_backup=False
app_setting_path = os.path.join(APPS_SETTING_PATH, app_instance_name) app_setting_path = os.path.join(APPS_SETTING_PATH, app_instance_name)
# Prepare env. var. to pass to script # Prepare env. var. to pass to script
env_dict = _make_environment_for_app_script(app_instance_name) env_dict = _make_environment_for_app_script(app_instance_name, workdir=extracted_app_folder)
env_dict["YNH_APP_UPGRADE_TYPE"] = upgrade_type env_dict["YNH_APP_UPGRADE_TYPE"] = upgrade_type
env_dict["YNH_APP_MANIFEST_VERSION"] = str(app_new_version) env_dict["YNH_APP_MANIFEST_VERSION"] = str(app_new_version)
env_dict["YNH_APP_CURRENT_VERSION"] = str(app_current_version) env_dict["YNH_APP_CURRENT_VERSION"] = str(app_current_version)
env_dict["NO_BACKUP_UPGRADE"] = "1" if no_safety_backup else "0" env_dict["NO_BACKUP_UPGRADE"] = "1" if no_safety_backup else "0"
env_dict["YNH_APP_BASEDIR"] = extracted_app_folder
# We'll check that the app didn't brutally edit some system configuration # We'll check that the app didn't brutally edit some system configuration
manually_modified_files_before_install = manually_modified_files() manually_modified_files_before_install = manually_modified_files()
@ -829,8 +827,7 @@ def app_install(
) )
# Prepare env. var. to pass to script # Prepare env. var. to pass to script
env_dict = _make_environment_for_app_script(app_instance_name, args=args) env_dict = _make_environment_for_app_script(app_instance_name, args=args, workdir=extracted_app_folder)
env_dict["YNH_APP_BASEDIR"] = extracted_app_folder
env_dict_for_logging = env_dict.copy() env_dict_for_logging = env_dict.copy()
for question in questions: for question in questions:
@ -891,8 +888,7 @@ def app_install(
logger.warning(m18n.n("app_remove_after_failed_install")) logger.warning(m18n.n("app_remove_after_failed_install"))
# Setup environment for remove script # Setup environment for remove script
env_dict_remove = _make_environment_for_app_script(app_instance_name) env_dict_remove = _make_environment_for_app_script(app_instance_name, workdir=extracted_app_folder)
env_dict_remove["YNH_APP_BASEDIR"] = extracted_app_folder
# Execute remove script # Execute remove script
operation_logger_remove = OperationLogger( operation_logger_remove = OperationLogger(
@ -1006,8 +1002,7 @@ def app_remove(operation_logger, app, purge=False):
env_dict = {} env_dict = {}
app_id, app_instance_nb = _parse_app_instance_name(app) app_id, app_instance_nb = _parse_app_instance_name(app)
env_dict = _make_environment_for_app_script(app) env_dict = _make_environment_for_app_script(app, workdir=tmp_workdir_for_app)
env_dict["YNH_APP_BASEDIR"] = tmp_workdir_for_app
env_dict["YNH_APP_PURGE"] = str(1 if purge else 0) env_dict["YNH_APP_PURGE"] = str(1 if purge else 0)
operation_logger.extra.update({"env": env_dict}) operation_logger.extra.update({"env": env_dict})
@ -1501,9 +1496,8 @@ def app_action_run(operation_logger, app, action, args=None):
tmp_workdir_for_app = _make_tmp_workdir_for_app(app=app) tmp_workdir_for_app = _make_tmp_workdir_for_app(app=app)
env_dict = _make_environment_for_app_script(app, args=args, args_prefix="ACTION_") env_dict = _make_environment_for_app_script(app, args=args, args_prefix="ACTION_", workdir=tmp_workdir_for_app)
env_dict["YNH_ACTION"] = action env_dict["YNH_ACTION"] = action
env_dict["YNH_APP_BASEDIR"] = tmp_workdir_for_app
_, action_script = tempfile.mkstemp(dir=tmp_workdir_for_app) _, action_script = tempfile.mkstemp(dir=tmp_workdir_for_app)
@ -2328,7 +2322,7 @@ def _assert_no_conflicting_apps(domain, path, ignore_app=None, full_domain=False
) )
def _make_environment_for_app_script(app, args={}, args_prefix="APP_ARG_"): def _make_environment_for_app_script(app, args={}, args_prefix="APP_ARG_", workdir=None):
app_setting_path = os.path.join(APPS_SETTING_PATH, app) app_setting_path = os.path.join(APPS_SETTING_PATH, app)
@ -2342,6 +2336,9 @@ def _make_environment_for_app_script(app, args={}, args_prefix="APP_ARG_"):
"YNH_APP_MANIFEST_VERSION": manifest.get("version", "?"), "YNH_APP_MANIFEST_VERSION": manifest.get("version", "?"),
} }
if workdir:
env_dict["YNH_APP_BASEDIR"] = workdir
for arg_name, arg_value in args.items(): for arg_name, arg_value in args.items():
env_dict["YNH_%s%s" % (args_prefix, arg_name.upper())] = str(arg_value) env_dict["YNH_%s%s" % (args_prefix, arg_name.upper())] = str(arg_value)

View file

@ -1483,7 +1483,9 @@ class RestoreManager:
logger.debug(m18n.n("restore_running_app_script", app=app_instance_name)) logger.debug(m18n.n("restore_running_app_script", app=app_instance_name))
# Prepare env. var. to pass to script # Prepare env. var. to pass to script
env_dict = _make_environment_for_app_script(app_instance_name) # FIXME : workdir should be a tmp workdir
app_workdir = os.path.join(self.work_dir, "apps", app_instance_name, "settings")
env_dict = _make_environment_for_app_script(app_instance_name, workdir=app_workdir)
env_dict.update( env_dict.update(
{ {
"YNH_BACKUP_DIR": self.work_dir, "YNH_BACKUP_DIR": self.work_dir,
@ -1491,9 +1493,6 @@ class RestoreManager:
"YNH_APP_BACKUP_DIR": os.path.join( "YNH_APP_BACKUP_DIR": os.path.join(
self.work_dir, "apps", app_instance_name, "backup" self.work_dir, "apps", app_instance_name, "backup"
), ),
"YNH_APP_BASEDIR": os.path.join(
self.work_dir, "apps", app_instance_name, "settings"
),
} }
) )
@ -1530,11 +1529,7 @@ class RestoreManager:
remove_script = os.path.join(app_scripts_in_archive, "remove") remove_script = os.path.join(app_scripts_in_archive, "remove")
# Setup environment for remove script # Setup environment for remove script
env_dict_remove = _make_environment_for_app_script(app_instance_name) env_dict_remove = _make_environment_for_app_script(app_instance_name, workdir=app_workdir)
env_dict_remove["YNH_APP_BASEDIR"] = os.path.join(
self.work_dir, "apps", app_instance_name, "settings"
)
remove_operation_logger = OperationLogger( remove_operation_logger = OperationLogger(
"remove_on_failed_restore", "remove_on_failed_restore",
[("app", app_instance_name)], [("app", app_instance_name)],