From 25785ae490fd08437c82539fd4e8d424c8f7ec9d Mon Sep 17 00:00:00 2001 From: SandakovMM Date: Fri, 13 Feb 2026 15:51:25 +0200 Subject: [PATCH 1/2] Make sure we remove dist-upgrade service at the very end of the conversion --- cloudlinux7to8/upgrader.py | 10 ++++++---- dist-upgrader | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/cloudlinux7to8/upgrader.py b/cloudlinux7to8/upgrader.py index dd70b26..6c0c3c8 100644 --- a/cloudlinux7to8/upgrader.py +++ b/cloudlinux7to8/upgrader.py @@ -126,6 +126,12 @@ def construct_actions( remove_logs_on_finish=self.remove_leapp_logs ), ], + "Prepare finihsing systemd service": [ + common_actions.AddUpgradeSystemdService( + os.path.abspath(upgrader_bin_path), + options, + ), + ], "Prepare configurations": [ common_actions.RevertChangesInGrub(), custom_actions.PrepareLeappConfigurationBackup(), @@ -138,10 +144,6 @@ def construct_actions( custom_actions.AdoptAtomicRepositories(), custom_actions.PatchDnfpluginErrorOutput(), custom_actions.PatchLeappDebugNonAsciiPackager(), - common_actions.AddUpgradeSystemdService( - os.path.abspath(upgrader_bin_path), - options, - ), common_actions.UpdatePlesk(), custom_actions.PostgresReinstallModernPackage(), custom_actions.FixNamedConfig(), diff --git a/dist-upgrader b/dist-upgrader index 9418954..34ebb95 160000 --- a/dist-upgrader +++ b/dist-upgrader @@ -1 +1 @@ -Subproject commit 941895478ec9b018eff18ba7d62b1ae0a54771e2 +Subproject commit 34ebb95e90efe468162b59bba7352ab5212db25e From 4f2358852bda2e22f2e271fb677bc9f402d06cfe Mon Sep 17 00:00:00 2001 From: SandakovMM Date: Fri, 13 Feb 2026 15:53:41 +0200 Subject: [PATCH 2/2] Restore sogo packages and configuration after conversion is done --- cloudlinux7to8/actions/extensions.py | 42 +++++++++++++++++++++++++++- cloudlinux7to8/upgrader.py | 1 + 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/cloudlinux7to8/actions/extensions.py b/cloudlinux7to8/actions/extensions.py index 7c0fccf..840e87f 100644 --- a/cloudlinux7to8/actions/extensions.py +++ b/cloudlinux7to8/actions/extensions.py @@ -3,7 +3,7 @@ import typing from pleskdistup import actions as common_actions -from pleskdistup.common import action, util, leapp_configs, files +from pleskdistup.common import action, files, leapp_configs, packages, systemd, util class FixupImunify(action.ActiveAction): @@ -85,3 +85,43 @@ def __init__(self): self.name = "fetching Plesk GPG key" self.target_repository_files_regex = ["plesk*.repo"] super().__init__() + + +class AdoptSOGo(action.ActiveAction): + def __init__(self): + self.name = "adopting SOGo extension" + self.sogo_config = "/etc/sogo/sogo.conf" + self.sogo_repo_file = "/etc/yum.repos.d/plesk-ext-sogo.repo" + + def _is_required(self) -> bool: + return packages.is_package_installed("sogo") + + def _prepare_action(self) -> action.ActionResult: + files.backup_file(self.sogo_config) + return action.ActionResult() + + def fix_permissions(self) -> None: + target_dirs = ["/run/sogo", "/var/lib/sogo/", "/var/log/sogo/", "/var/spool/sogo/", "/etc/sogo/"] + for target_dir in target_dirs: + files.change_directory_ownership(target_dir, "sogo", "sogo", recursive=True) + files.change_file_ownership(self.sogo_config, "sogo", "sogo") + + def _post_action(self) -> action.ActionResult: + # This temporarily replaces systemctl with a no-op stub, allowing + # post-install scripts to run without disrupting the conversion service + # by calling the systemd daemon-reload operation. + with systemd.systemctl_stub(): + packages.install_packages(["sogo", "sogo-tool"]) + + files.restore_file_from_backup(self.sogo_config) + self.fix_permissions() + + systemd.enable_services(["sogod"]) + return action.ActionResult() + + def _revert_action(self) -> action.ActionResult: + files.restore_file_from_backup(self.sogo_config) + return action.ActionResult() + + def estimate_post_time(self) -> int: + return 1 * 60 diff --git a/cloudlinux7to8/upgrader.py b/cloudlinux7to8/upgrader.py index 6c0c3c8..b99d23f 100644 --- a/cloudlinux7to8/upgrader.py +++ b/cloudlinux7to8/upgrader.py @@ -141,6 +141,7 @@ def construct_actions( custom_actions.LeappReposConfiguration(), custom_actions.LeappChoicesConfiguration(), custom_actions.AdoptKolabRepositories(), + custom_actions.AdoptSOGo(), custom_actions.AdoptAtomicRepositories(), custom_actions.PatchDnfpluginErrorOutput(), custom_actions.PatchLeappDebugNonAsciiPackager(),