diff --git a/actions/mariadb.py b/actions/mariadb.py index c809dcf..fe65130 100644 --- a/actions/mariadb.py +++ b/actions/mariadb.py @@ -1,36 +1,10 @@ # Copyright 1999 - 2023. Plesk International GmbH. All rights reserved. import subprocess -from common import action, dist, dpkg, files, log, packages, systemd +from common import action, dpkg, files, mariadb, packages, systemd -MARIADB_VERSION_ON_ALMA = "10.3.35" - - -def _get_mariadb_utilname() -> str: - for utility in ("mariadb", "mysql"): - if subprocess.run(["which", utility], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL).returncode == 0: - return utility - - return None - - -def _is_mariadb_installed() -> bool: - utility = _get_mariadb_utilname() - if utility is None: - return False - elif utility == "mariadb": - return True - - return "MariaDB" in subprocess.check_output([utility, "--version"], universal_newlines=True) - - -def _is_mysql_installed() -> bool: - utility = _get_mariadb_utilname() - if utility is None or utility == "mariadb": - return False - - return "MariaDB" not in subprocess.check_output([utility, "--version"], universal_newlines=True) +MARIADB_VERSION_ON_UBUNTU_20 = mariadb.MariaDBVersion("10.3.38") class AddMysqlConnector(action.ActiveAction): @@ -38,7 +12,7 @@ def __init__(self): self.name = "install mysql connector" def _is_required(self) -> bool: - return _is_mysql_installed() + return mariadb.is_mysql_installed() def _prepare_action(self) -> None: pass @@ -51,12 +25,7 @@ def _revert_action(self) -> None: def get_db_server_config_file(): - if dist._is_rhel_based(dist.get_distro()): - return "/etc/my.cnf.d/server.cnf" - - if _is_mysql_installed(): - return "/etc/mysql/my.cnf" - return "/etc/mysql/mariadb.conf.d/50-server.cnf" + return mariadb.get_mysql_config_file_path() if mariadb.is_mysql_installed() else mariadb.get_mariadb_config_file_path() class DisableMariadbInnodbFastShutdown(action.ActiveAction): @@ -64,7 +33,7 @@ def __init__(self): self.name = "disabling mariadb innodb fast shutdown" def _is_required(self) -> bool: - return _is_mariadb_installed() or _is_mysql_installed() + return mariadb.is_mariadb_installed() or mariadb.is_mysql_installed() def _prepare_action(self): target_file = get_db_server_config_file() @@ -91,20 +60,37 @@ def estimate_revert_time(self): return 15 -class InstallUbuntu20DatabaseVersion(action.ActiveAction): +class InstallUbuntu20Mariadb(action.ActiveAction): def __init__(self): - self.name = "installing mariadb/mysql from ubuntu 20 official repository" + self.name = "installing mariadb from ubuntu 20 official repository" def _is_required(self) -> bool: - return _is_mariadb_installed() or _is_mysql_installed() + return mariadb.is_mariadb_installed() and MARIADB_VERSION_ON_UBUNTU_20 > mariadb.get_installed_mariadb_version() def _prepare_action(self): dpkg.depconfig_parameter_set("libraries/restart-without-asking", "true") + packages.install_packages(["mariadb-server-10.3"], force_package_config=True) + + def _post_action(self): + dpkg.depconfig_parameter_set("libraries/restart-without-asking", "false") - if _is_mariadb_installed(): - packages.install_packages(["mariadb-server-10.3"], force_package_config=True) - elif _is_mysql_installed(): - packages.install_packages(["mysql-server-5.7"], force_package_config=True) + def _revert_action(self): + dpkg.depconfig_parameter_set("libraries/restart-without-asking", "false") + + def estimate_prepare_time(self): + return 60 + + +class InstallUbuntu20Mysql(action.ActiveAction): + def __init__(self): + self.name = "installing mysql from ubuntu 20 official repository" + + def _is_required(self) -> bool: + return mariadb.is_mysql_installed() + + def _prepare_action(self): + dpkg.depconfig_parameter_set("libraries/restart-without-asking", "true") + packages.install_packages(["mysql-server-5.7"], force_package_config=True) def _post_action(self): dpkg.depconfig_parameter_set("libraries/restart-without-asking", "false") diff --git a/common b/common index 006c0af..cc3aed0 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 006c0af69d23ecb73bf8bdcf6e727ea81cbb4dcc +Subproject commit cc3aed07c5d504ce72f343b2b3ca93baa7e0ccd1 diff --git a/main.py b/main.py index 87e21bd..0986241 100644 --- a/main.py +++ b/main.py @@ -154,7 +154,8 @@ def construct_actions(options: typing.Any, stage_flag: Stages) -> typing.Dict[in ], 2: [ actions.InstallNextKernelVersion(), - actions.InstallUbuntu20DatabaseVersion(), + actions.InstallUbuntu20Mariadb(), + actions.InstallUbuntu20Mysql(), actions.InstallUdev(), actions.ReinstallSystemd(), actions.RemoveLXD(),