mirror of
https://github.com/dw-0/kiauh.git
synced 2025-12-27 17:53:35 +05:00
feat: implement backup menu and backup methods for existing components
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
This commit is contained in:
@@ -11,10 +11,14 @@
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
from kiauh.core.backup_manager import BACKUP_ROOT_DIR
|
||||
|
||||
MODULE_PATH = Path(__file__).resolve().parent
|
||||
|
||||
MOONRAKER_DIR = Path.home().joinpath("moonraker")
|
||||
MOONRAKER_ENV_DIR = Path.home().joinpath("moonraker-env")
|
||||
MOONRAKER_BACKUP_DIR = BACKUP_ROOT_DIR.joinpath("moonraker-backups")
|
||||
MOONRAKER_DB_BACKUP_DIR = BACKUP_ROOT_DIR.joinpath("moonraker-db-backups")
|
||||
MOONRAKER_REQUIREMENTS_TXT = MOONRAKER_DIR.joinpath(
|
||||
"scripts/moonraker-requirements.txt"
|
||||
)
|
||||
|
||||
@@ -13,9 +13,9 @@ import subprocess
|
||||
from pathlib import Path
|
||||
from typing import List, Union
|
||||
|
||||
from kiauh.components.moonraker import MOONRAKER_DIR, MOONRAKER_ENV_DIR, MODULE_PATH
|
||||
from kiauh.core.config_manager.config_manager import ConfigManager
|
||||
from kiauh.core.instance_manager.base_instance import BaseInstance
|
||||
from kiauh.components.moonraker import MOONRAKER_DIR, MOONRAKER_ENV_DIR, MODULE_PATH
|
||||
from kiauh.utils.constants import SYSTEMD
|
||||
from kiauh.utils.logger import Logger
|
||||
|
||||
@@ -34,9 +34,13 @@ class Moonraker(BaseInstance):
|
||||
self.port = self._get_port()
|
||||
self.backup_dir = self.data_dir.joinpath("backup")
|
||||
self.certs_dir = self.data_dir.joinpath("certs")
|
||||
self.db_dir = self.data_dir.joinpath("database")
|
||||
self._db_dir = self.data_dir.joinpath("database")
|
||||
self.log = self.log_dir.joinpath("moonraker.log")
|
||||
|
||||
@property
|
||||
def db_dir(self) -> Path:
|
||||
return self._db_dir
|
||||
|
||||
def create(self, create_example_cfg: bool = False) -> None:
|
||||
Logger.print_status("Creating new Moonraker Instance ...")
|
||||
service_template_path = MODULE_PATH.joinpath("assets/moonraker.service")
|
||||
@@ -46,7 +50,7 @@ class Moonraker(BaseInstance):
|
||||
env_file_target = self.sysd_dir.joinpath("moonraker.env")
|
||||
|
||||
try:
|
||||
self.create_folders([self.backup_dir, self.certs_dir, self.db_dir])
|
||||
self.create_folders([self.backup_dir, self.certs_dir, self._db_dir])
|
||||
self.write_service_file(
|
||||
service_template_path, service_file_target, env_file_target
|
||||
)
|
||||
|
||||
@@ -15,12 +15,8 @@ from pathlib import Path
|
||||
from typing import List
|
||||
|
||||
from kiauh import KIAUH_CFG
|
||||
from kiauh.core.backup_manager.backup_manager import BackupManager
|
||||
from kiauh.core.config_manager.config_manager import ConfigManager
|
||||
from kiauh.core.instance_manager.instance_manager import InstanceManager
|
||||
from kiauh.components.klipper.klipper import Klipper
|
||||
from kiauh.components.klipper.klipper_dialogs import print_instance_overview
|
||||
from kiauh.core.repo_manager.repo_manager import RepoManager
|
||||
from kiauh.components.mainsail import MAINSAIL_DIR
|
||||
from kiauh.components.mainsail.mainsail_utils import enable_mainsail_remotemode
|
||||
from kiauh.components.moonraker import (
|
||||
@@ -33,15 +29,21 @@ from kiauh.components.moonraker import (
|
||||
POLKIT_FILE,
|
||||
POLKIT_USR_FILE,
|
||||
POLKIT_SCRIPT,
|
||||
)
|
||||
)
|
||||
from kiauh.components.moonraker.moonraker import Moonraker
|
||||
from kiauh.components.moonraker.moonraker_dialogs import print_moonraker_overview
|
||||
from kiauh.components.moonraker.moonraker_utils import create_example_moonraker_conf
|
||||
from kiauh.components.moonraker.moonraker_utils import (
|
||||
create_example_moonraker_conf,
|
||||
backup_moonraker_dir,
|
||||
)
|
||||
from kiauh.core.config_manager.config_manager import ConfigManager
|
||||
from kiauh.core.instance_manager.instance_manager import InstanceManager
|
||||
from kiauh.core.repo_manager.repo_manager import RepoManager
|
||||
from kiauh.utils.filesystem_utils import check_file_exist
|
||||
from kiauh.utils.input_utils import (
|
||||
get_confirm,
|
||||
get_selection_input,
|
||||
)
|
||||
)
|
||||
from kiauh.utils.logger import Logger
|
||||
from kiauh.utils.system_utils import (
|
||||
parse_packages_from_file,
|
||||
@@ -49,7 +51,7 @@ from kiauh.utils.system_utils import (
|
||||
install_python_requirements,
|
||||
update_system_package_lists,
|
||||
install_system_packages,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def install_moonraker() -> None:
|
||||
@@ -206,9 +208,7 @@ def update_moonraker() -> None:
|
||||
|
||||
cm = ConfigManager(cfg_file=KIAUH_CFG)
|
||||
if cm.get_value("kiauh", "backup_before_update"):
|
||||
bm = BackupManager()
|
||||
bm.backup_directory("moonraker", MOONRAKER_DIR)
|
||||
bm.backup_directory("moonraker-env", MOONRAKER_ENV_DIR)
|
||||
backup_moonraker_dir()
|
||||
|
||||
instance_manager = InstanceManager(Moonraker)
|
||||
instance_manager.stop_all_instance()
|
||||
|
||||
@@ -12,9 +12,6 @@
|
||||
import shutil
|
||||
from typing import Dict, Literal, List, Union
|
||||
|
||||
from kiauh.core.config_manager.config_manager import ConfigManager
|
||||
from kiauh.core.instance_manager.instance_manager import InstanceManager
|
||||
from kiauh.core.repo_manager.repo_manager import RepoManager
|
||||
from kiauh.components.mainsail import MAINSAIL_DIR
|
||||
from kiauh.components.mainsail.mainsail_utils import enable_mainsail_remotemode
|
||||
from kiauh.components.moonraker import (
|
||||
@@ -22,13 +19,19 @@ from kiauh.components.moonraker import (
|
||||
MODULE_PATH,
|
||||
MOONRAKER_DIR,
|
||||
MOONRAKER_ENV_DIR,
|
||||
)
|
||||
MOONRAKER_BACKUP_DIR,
|
||||
MOONRAKER_DB_BACKUP_DIR,
|
||||
)
|
||||
from kiauh.components.moonraker.moonraker import Moonraker
|
||||
from kiauh.core.backup_manager.backup_manager import BackupManager
|
||||
from kiauh.core.config_manager.config_manager import ConfigManager
|
||||
from kiauh.core.instance_manager.instance_manager import InstanceManager
|
||||
from kiauh.core.repo_manager.repo_manager import RepoManager
|
||||
from kiauh.utils.common import get_install_status_common
|
||||
from kiauh.utils.logger import Logger
|
||||
from kiauh.utils.system_utils import (
|
||||
get_ipv4_addr,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def get_moonraker_status() -> (
|
||||
@@ -132,3 +135,23 @@ def moonraker_to_multi_conversion(new_name: str) -> None:
|
||||
# if mainsail is installed, we enable mainsails remote mode
|
||||
if MAINSAIL_DIR.exists() and len(im.instances) > 1:
|
||||
enable_mainsail_remotemode()
|
||||
|
||||
|
||||
def backup_moonraker_dir():
|
||||
bm = BackupManager()
|
||||
bm.backup_directory("moonraker", source=MOONRAKER_DIR, target=MOONRAKER_BACKUP_DIR)
|
||||
bm.backup_directory(
|
||||
"moonraker-env", source=MOONRAKER_ENV_DIR, target=MOONRAKER_BACKUP_DIR
|
||||
)
|
||||
|
||||
|
||||
def backup_moonraker_db_dir() -> None:
|
||||
im = InstanceManager(Moonraker)
|
||||
instances: List[Moonraker] = im.instances
|
||||
bm = BackupManager()
|
||||
|
||||
for instance in instances:
|
||||
name = f"database-{instance.data_dir_name}"
|
||||
bm.backup_directory(
|
||||
name, source=instance.db_dir, target=MOONRAKER_DB_BACKUP_DIR
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user