From c3224d39e5e68dce6b88a2f67a493dd190899836 Mon Sep 17 00:00:00 2001 From: VirtuBox Date: Thu, 22 Oct 2020 14:34:03 +0200 Subject: [PATCH] Add MariaDB upgrade from 10.3 to 10.5 --- wo/cli/plugins/stack_pref.py | 15 +++++++++++++-- wo/cli/plugins/stack_upgrade.py | 20 ++++++++++++++++---- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/wo/cli/plugins/stack_pref.py b/wo/cli/plugins/stack_pref.py index 24c7c52..9c140cc 100644 --- a/wo/cli/plugins/stack_pref.py +++ b/wo/cli/plugins/stack_pref.py @@ -37,12 +37,23 @@ def pre_pref(self, apt_packages): with open('/etc/apt/preferences.d/' 'MariaDB.pref', 'w') as mysql_pref_file: mysql_pref_file.write(mysql_pref) - WORepo.add(self, repo_url=WOVar.wo_mysql_repo) + if not os.path.exists('/etc/apt/sources.list.d/wo-repo.list'): + WORepo.add(self, repo_url=WOVar.wo_mysql_repo) + else: + if not WOFileUtils.grepcheck( + self, '/etc/apt/sources.list.d/wo-repo.list', + 'MariaDB/repo/10.3'): + WORepo.add(self, repo_url=WOVar.wo_mysql_repo) + else: + WOFileUtils.searchreplace( + self, '/etc/apt/sources.list.d/wo-repo.list', + '10.3', '10.5') WORepo.add_key(self, '0xcbcb082a1bb943db', keyserver='keyserver.ubuntu.com') WORepo.add_key(self, '0xF1656F24C74CD1D8', keyserver='keyserver.ubuntu.com') - if "mariadb-server" in apt_packages: + if ("mariadb-server" in apt_packages and + not os.path.exists('/etc/mysql/conf.d/my.cnf')): # generate random 24 characters root password chars = ''.join(random.sample(string.ascii_letters, 24)) # generate my.cnf root credentials diff --git a/wo/cli/plugins/stack_upgrade.py b/wo/cli/plugins/stack_upgrade.py index 4c86a91..7ac60e4 100644 --- a/wo/cli/plugins/stack_upgrade.py +++ b/wo/cli/plugins/stack_upgrade.py @@ -12,6 +12,7 @@ from wo.core.logging import Log from wo.core.shellexec import WOShellExec from wo.core.variables import WOVar from wo.core.services import WOService +from wo.core.mysql import WOMysql class WOStackUpgradeController(CementBaseController): @@ -290,14 +291,20 @@ class WOStackUpgradeController(CementBaseController): start_upgrade = input("Do you want to continue:[y/N]") if start_upgrade != "Y" and start_upgrade != "y": Log.error(self, "Not starting package update") + # additional pre_pref + if "nginx-custom" in apt_packages: + pre_pref(self, WOVar.wo_nginx) + if "mariadb-server" in apt_packages: + mariadbmajorupgrade = bool( + WOFileUtils.grepcheck( + self, '/etc/apt/sources.list.d/wo-repo.list', + 'MariaDB/repo/10.3')) + pre_pref(self, WOVar.wo_mysql) Log.wait(self, "Updating APT cache") # apt-get update WOAptGet.update(self) Log.valide(self, "Updating APT cache") - # additional pre_pref - if "nginx-custom" in apt_packages: - pre_pref(self, WOVar.wo_nginx) # check if nginx upgrade is blocked if os.path.isfile( '/etc/apt/preferences.d/nginx-block'): @@ -305,7 +312,12 @@ class WOStackUpgradeController(CementBaseController): # redis pre_pref if "redis-server" in apt_packages: pre_pref(self, WOVar.wo_redis) - # upgrade packages + # mariadb upgrade + if ("mariadb-server" in apt_packages and + mariadbmajorupgrade is True): + WOMysql.backupAll(self) + WOAptGet.remove(self, ["mariadb-server"]) + # upgrade packages WOAptGet.install(self, apt_packages) Log.wait(self, "Configuring APT Packages") post_pref(self, apt_packages, [], True)