Skip to content

Commit

Permalink
Merge pull request #1 from plesk/move-some-mariadb-to-common
Browse files Browse the repository at this point in the history
Support modern MariaDB
  • Loading branch information
SandakovMM authored Oct 26, 2023
2 parents 0da48a2 + f8691e0 commit d4b4f88
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 45 deletions.
72 changes: 29 additions & 43 deletions actions/mariadb.py
Original file line number Diff line number Diff line change
@@ -1,44 +1,18 @@
# 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):
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
Expand All @@ -51,20 +25,15 @@ 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):
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()
Expand All @@ -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")
Expand Down
2 changes: 1 addition & 1 deletion common
3 changes: 2 additions & 1 deletion main.py
Original file line number Diff line number Diff line change
Expand Up @@ -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(),
Expand Down

0 comments on commit d4b4f88

Please sign in to comment.