Skip to content

Commit

Permalink
Merge pull request #5 from plesk/task-nvizovitin-tuxcare-els-support
Browse files Browse the repository at this point in the history
TuxCare ELS support, update submodule
  • Loading branch information
vizovitin authored May 28, 2024
2 parents 08f7840 + bcfb597 commit dcf478f
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 25 deletions.
2 changes: 1 addition & 1 deletion dist-upgrader
Submodule dist-upgrader updated 67 files
+23 −0 .github/workflows/mypy.yaml
+22 −0 .github/workflows/tests.yml
+1 −1 BUCK
+1 −1 LICENSE
+1 −1 buck.defs.py
+1 −1 defs.py
+1 −1 pleskdistup/BUCK
+1 −1 pleskdistup/__init__.py
+2 −1 pleskdistup/actions/__init__.py
+105 −5 pleskdistup/actions/common.py
+313 −2 pleskdistup/actions/common_checks.py
+27 −14 pleskdistup/actions/distupgrade.py
+92 −0 pleskdistup/actions/emails.py
+134 −2 pleskdistup/actions/extensions.py
+1 −1 pleskdistup/actions/mariadb.py
+5 −1 pleskdistup/actions/packages.py
+108 −29 pleskdistup/actions/plesk.py
+76 −3 pleskdistup/actions/spamassassin.py
+103 −2 pleskdistup/actions/systemd.py
+1 −1 pleskdistup/common/BUCK
+1 −1 pleskdistup/common/LICENSE
+3 −1 pleskdistup/common/src/__init__.py
+30 −14 pleskdistup/common/src/action.py
+136 −47 pleskdistup/common/src/dist.py
+1 −1 pleskdistup/common/src/dpkg.py
+11 −2 pleskdistup/common/src/feedback.py
+1 −1 pleskdistup/common/src/files.py
+67 −20 pleskdistup/common/src/leapp_configs.py
+35 −11 pleskdistup/common/src/log.py
+3 −3 pleskdistup/common/src/mariadb.py
+1 −1 pleskdistup/common/src/motd.py
+15 −15 pleskdistup/common/src/packages.py
+24 −0 pleskdistup/common/src/php.py
+87 −9 pleskdistup/common/src/plesk.py
+43 −0 pleskdistup/common/src/postgres.py
+82 −13 pleskdistup/common/src/rpm.py
+62 −7 pleskdistup/common/src/systemd.py
+1 −1 pleskdistup/common/src/util.py
+98 −5 pleskdistup/common/src/version.py
+32 −4 pleskdistup/common/src/writers.py
+77 −115 pleskdistup/common/tests/actionstests.py
+32 −25 pleskdistup/common/tests/distrotests.py
+1 −1 pleskdistup/common/tests/feedbacktests.py
+1 −1 pleskdistup/common/tests/filestests.py
+31 −3 pleskdistup/common/tests/leapp_configs_tests.py
+47 −0 pleskdistup/common/tests/logtests.py
+1 −1 pleskdistup/common/tests/mariadbtests.py
+4 −4 pleskdistup/common/tests/motdtests.py
+78 −0 pleskdistup/common/tests/phptests.py
+90 −0 pleskdistup/common/tests/plesktests.py
+145 −15 pleskdistup/common/tests/rpmtests.py
+1 −1 pleskdistup/common/tests/test_main.py
+1 −1 pleskdistup/common/tests/testcase.py
+1 −1 pleskdistup/common/tests/utiltests.py
+125 −2 pleskdistup/common/tests/versiontests.py
+1 −1 pleskdistup/config.py
+1 −1 pleskdistup/convert.py
+1 −1 pleskdistup/debian/__init__.py
+96 −33 pleskdistup/main.py
+11 −2 pleskdistup/messages.py
+1 −1 pleskdistup/phase.py
+5 −4 pleskdistup/registry.py
+1 −1 pleskdistup/resume.py
+0 −23 pleskdistup/sysdesc.py
+1 −1 pleskdistup/ubuntu/__init__.py
+6 −18 pleskdistup/upgrader.py
+1 −1 product.defs.py
2 changes: 2 additions & 0 deletions ubuntu18to20/actions/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Copyright 2024. WebPros International GmbH. All rights reserved.
from .packages import *
33 changes: 33 additions & 0 deletions ubuntu18to20/actions/packages.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Copyright 2024. WebPros International GmbH. All rights reserved.
from pleskdistup.common import action, packages


class RemoveUnusedPackages(action.ActiveAction):
""" Removes packages that are not used anymore in the target OS after the dist-upgrade.
These are mostly versioned packages, which have corresponding alternatives in the
target OS with a different package name, which makes these ones obsolete and useless.
The alternatives are expected to have been installed by the dist-upgrade itself.
"""

def __init__(self):
self.name = "remove unused packages"
self.unused_packages = [
"libmagickcore-6.q16-3",
"libmagickwand-6.q16-3",
"libmysqlclient20",
"libprocps6",
"perl-modules-5.26",
]

def _prepare_action(self) -> action.ActionResult:
return action.ActionResult()

def _post_action(self) -> action.ActionResult:
packages.remove_packages(packages.filter_installed_packages(self.unused_packages))
return action.ActionResult()

def _revert_action(self) -> action.ActionResult:
return action.ActionResult()

def estimate_post_time(self) -> int:
return 5
39 changes: 15 additions & 24 deletions ubuntu18to20/upgrader.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,45 +7,34 @@
from pleskdistup import actions
from pleskdistup.common import action, feedback
from pleskdistup.phase import Phase
from pleskdistup.upgrader import DistUpgrader, DistUpgraderFactory, PathType, SystemDescription
from pleskdistup.upgrader import dist, DistUpgrader, DistUpgraderFactory, PathType

import ubuntu18to20.config
import ubuntu18to20.actions


class Ubuntu18to20Upgrader(DistUpgrader):
_os_from_name = "Ubuntu"
_os_from_version = "18"
_os_to_name = "Ubuntu"
_os_to_version = "20"
_distro_from = dist.Ubuntu("18")
_distro_to = dist.Ubuntu("20")

def __init__(self):
super().__init__()

def __repr__(self) -> str:
attrs = ", ".join(f"{k}={getattr(self, k)!r}" for k in (
"_os_from_name", "_os_from_version",
"_os_to_name", "_os_to_version",
))
return f"{self.__class__.__name__}({attrs})"
return f"{self.__class__.__name__}(From {self._distro_from}, To {self._distro_to})"

def __str__(self) -> str:
return f"{self.__class__.__name__}"

@classmethod
def supports(
cls,
from_system: typing.Optional[SystemDescription] = None,
to_system: typing.Optional[SystemDescription] = None
from_system: typing.Optional[dist.Distro] = None,
to_system: typing.Optional[dist.Distro] = None
) -> bool:
def matching_system(system: SystemDescription, os_name: str, os_version: str) -> bool:
return (
(system.os_name is None or system.os_name == os_name)
and (system.os_version is None or system.os_version == os_version)
)

return (
(from_system is None or matching_system(from_system, cls._os_from_name, cls._os_from_version))
and (to_system is None or matching_system(to_system, cls._os_to_name, cls._os_to_version))
(from_system is None or cls._distro_from == from_system)
and (to_system is None or cls._distro_to == to_system)
)

@property
Expand Down Expand Up @@ -78,14 +67,15 @@ def construct_actions(
options: typing.Any,
phase: Phase
) -> typing.Dict[str, typing.List[action.ActiveAction]]:
new_os = f"{self._os_to_name} {self._os_to_version}"
new_os = str(self._distro_to)
return {
"Prepare": [
actions.HandleConversionStatus(options.status_flag_path, options.completion_flag_path),
actions.AddFinishSshLoginMessage(new_os), # Executed at the finish phase only
actions.AddInProgressSshLoginMessage(new_os),
actions.DisablePleskSshBanner(),
actions.RepairPleskInstallation(), # Executed at the finish phase only
actions.UninstallTuxcareEls(),
actions.DisableMariadbInnodbFastShutdown(),
actions.DisableUnsupportedMysqlModes(),
actions.InstallUbuntuUpdateManager(),
Expand Down Expand Up @@ -113,6 +103,7 @@ def construct_actions(
],
"Dist-upgrade": [
actions.DoDistupgrade(),
ubuntu18to20.actions.RemoveUnusedPackages(),
],
"Finishing actions": [
actions.Reboot(prepare_next_phase=Phase.FINISH, name="reboot and perform finishing actions"),
Expand All @@ -134,7 +125,7 @@ def get_check_actions(self, options: typing.Any, phase: Phase) -> typing.List[ac
]

def parse_args(self, args: typing.Sequence[str]) -> None:
DESC_MESSAGE = f"""Use this upgrader to dist-upgrade an {self._os_from_name} {self._os_from_version} server with Plesk to {self._os_to_name} {self._os_to_version}. The process consists of the following general stages:
DESC_MESSAGE = f"""Use this upgrader to dist-upgrade an {self._distro_from} server with Plesk to {self._distro_to}. The process consists of the following general stages:
-- Preparation (about 5 minutes) - The OS is prepared for the conversion.
-- Conversion (about 15 minutes) - Plesk and system dist-upgrade is performed.
Expand Down Expand Up @@ -173,8 +164,8 @@ def __str__(self) -> str:

def supports(
self,
from_system: typing.Optional[SystemDescription] = None,
to_system: typing.Optional[SystemDescription] = None
from_system: typing.Optional[dist.Distro] = None,
to_system: typing.Optional[dist.Distro] = None
) -> bool:
return Ubuntu18to20Upgrader.supports(from_system, to_system)

Expand Down

0 comments on commit dcf478f

Please sign in to comment.