machine: use env vars for service validation
Use Moonraker's environment variables when generating the env file for service validation updates. Signed-off-by: Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
parent
a0a50442f7
commit
22d1fda655
|
@ -1481,7 +1481,6 @@ Restart=always
|
||||||
RestartSec=10
|
RestartSec=10
|
||||||
""" # noqa: E122
|
""" # noqa: E122
|
||||||
|
|
||||||
ENVIRONMENT = "MOONRAKER_ARGS=\"%s%s\"%s"
|
|
||||||
TEMPLATE_NAME = "password_request.html"
|
TEMPLATE_NAME = "password_request.html"
|
||||||
|
|
||||||
class ValidationError(Exception):
|
class ValidationError(Exception):
|
||||||
|
@ -1661,28 +1660,29 @@ class InstallValidator:
|
||||||
if not sysd_data.exists():
|
if not sysd_data.exists():
|
||||||
sysd_data.mkdir()
|
sysd_data.mkdir()
|
||||||
env_file = sysd_data.joinpath("moonraker.env")
|
env_file = sysd_data.joinpath("moonraker.env")
|
||||||
cmd_args = f"-d {self.data_path}"
|
env_vars: Dict[str, str] = {
|
||||||
|
"MOONRAKER_DATA_PATH": str(self.data_path)
|
||||||
|
}
|
||||||
cfg_file = pathlib.Path(app_args["config_file"])
|
cfg_file = pathlib.Path(app_args["config_file"])
|
||||||
fm: FileManager = self.server.lookup_component("file_manager")
|
fm: FileManager = self.server.lookup_component("file_manager")
|
||||||
cfg_path = fm.get_directory("config")
|
cfg_path = fm.get_directory("config")
|
||||||
log_path = fm.get_directory("logs")
|
log_path = fm.get_directory("logs")
|
||||||
if not cfg_path or not cfg_file.parent.samefile(cfg_path):
|
if not cfg_path or not cfg_file.parent.samefile(cfg_path):
|
||||||
# Configuration file does not exist in config path
|
env_vars["MOONRAKER_CONFIG_PATH"] = str(cfg_file)
|
||||||
cmd_args += f" -c {cfg_file}"
|
|
||||||
elif cfg_file.name != "moonraker.conf":
|
elif cfg_file.name != "moonraker.conf":
|
||||||
cfg_file = self.data_path.joinpath(f"config/{cfg_file.name}")
|
cfg_file = self.data_path.joinpath(f"config/{cfg_file.name}")
|
||||||
cmd_args += f" -c {cfg_file}"
|
env_vars["MOONRAKER_CONFIG_PATH"] = str(cfg_file)
|
||||||
if not app_args["log_file"]:
|
if not app_args["log_file"]:
|
||||||
# No log file configured
|
# No log file configured
|
||||||
cmd_args += f" -n"
|
env_vars["MOONRAKER_DISABLE_FILE_LOG"] = "y"
|
||||||
else:
|
else:
|
||||||
# Log file does not exist in log path
|
# Log file does not exist in log path
|
||||||
log_file = pathlib.Path(app_args["log_file"])
|
log_file = pathlib.Path(app_args["log_file"])
|
||||||
if not log_path or not log_file.parent.samefile(log_path):
|
if not log_path or not log_file.parent.samefile(log_path):
|
||||||
cmd_args += f" -l {log_file}"
|
env_vars["MOONRAKER_LOG_PATH"] = str(log_file)
|
||||||
elif log_file.name != "moonraker.log":
|
elif log_file.name != "moonraker.log":
|
||||||
cfg_file = self.data_path.joinpath(f"logs/{log_file.name}")
|
cfg_file = self.data_path.joinpath(f"logs/{log_file.name}")
|
||||||
cmd_args += f" -l {log_file}"
|
env_vars["MOONRAKER_LOG_PATH"] = str(log_file)
|
||||||
# backup existing service files
|
# backup existing service files
|
||||||
self._update_backup_path()
|
self._update_backup_path()
|
||||||
svc_bkp_path = self.backup_path.joinpath("service")
|
svc_bkp_path = self.backup_path.joinpath("service")
|
||||||
|
@ -1696,26 +1696,25 @@ class InstallValidator:
|
||||||
src_path = source_info.source_path()
|
src_path = source_info.source_path()
|
||||||
exec_path = pathlib.Path(sys.executable)
|
exec_path = pathlib.Path(sys.executable)
|
||||||
py_exec = exec_path.parent.joinpath("python")
|
py_exec = exec_path.parent.joinpath("python")
|
||||||
pythonpath = ""
|
|
||||||
src_arg = ""
|
|
||||||
if exec_path.name == "python" or py_exec.is_file():
|
if exec_path.name == "python" or py_exec.is_file():
|
||||||
# Default to loading via the python executable. This
|
# Default to loading via the python executable. This
|
||||||
# makes it possible to switch between git repos, pip
|
# makes it possible to switch between git repos, pip
|
||||||
# releases and git releases without reinstalling the
|
# releases and git releases without reinstalling the
|
||||||
# service.
|
# service.
|
||||||
exec_path = py_exec
|
exec_path = py_exec
|
||||||
src_arg = "-m moonraker "
|
env_vars["MOONRAKER_ARGS"] = "-m moonraker"
|
||||||
if not source_info.is_dist_package():
|
if not source_info.is_dist_package():
|
||||||
# This module isn't in site/dist packages,
|
# This module isn't in site/dist packages,
|
||||||
# add PYTHONPATH env variable
|
# add PYTHONPATH env variable
|
||||||
pythonpath = f"\nPYTHONPATH=\"{src_path}\""
|
env_vars["PYTHONPATH"] = str(src_path)
|
||||||
tmp_svc.write_text(
|
tmp_svc.write_text(
|
||||||
SYSTEMD_UNIT
|
SYSTEMD_UNIT
|
||||||
% (SERVICE_VERSION, user, env_file, exec_path)
|
% (SERVICE_VERSION, user, env_file, exec_path)
|
||||||
)
|
)
|
||||||
try:
|
try:
|
||||||
# write new environment
|
# write new environment
|
||||||
env_file.write_text(ENVIRONMENT % (src_arg, cmd_args, pythonpath))
|
envout = "\n".join(f"{key}=\"{val}\"" for key, val in env_vars.items())
|
||||||
|
env_file.write_text(envout)
|
||||||
await machine.exec_sudo_command(
|
await machine.exec_sudo_command(
|
||||||
f"cp -f {tmp_svc} {svc_dest}", tries=5, timeout=60.)
|
f"cp -f {tmp_svc} {svc_dest}", tries=5, timeout=60.)
|
||||||
await machine.exec_sudo_command(
|
await machine.exec_sudo_command(
|
||||||
|
|
Loading…
Reference in New Issue