gau1991
10 years ago
3 changed files with 141 additions and 3 deletions
@ -0,0 +1,99 @@ |
|||||
|
from cement.core.controller import CementBaseController, expose |
||||
|
from cement.core import handler, hook |
||||
|
from ee.core.mysql import EEMysql |
||||
|
from ee.core.logging import Log |
||||
|
from ee.core.variables import EEVariables |
||||
|
from ee.core.aptget import EEAptGet |
||||
|
from ee.core.shellexec import EEShellExec |
||||
|
from ee.core.apt_repo import EERepo |
||||
|
import configparser |
||||
|
import os |
||||
|
|
||||
|
|
||||
|
class EEStackMigrateController(CementBaseController): |
||||
|
class Meta: |
||||
|
label = 'migrate' |
||||
|
stacked_on = 'stack' |
||||
|
stacked_type = 'nested' |
||||
|
description = ('Migrate stack safely') |
||||
|
arguments = [ |
||||
|
(['--mariadb'], |
||||
|
dict(help="Migrate database to MariaDB", |
||||
|
action='store_true')), |
||||
|
# (['--PHP'], |
||||
|
# dict(help="update to html site", action='store_true')), |
||||
|
] |
||||
|
|
||||
|
@expose(hide=True) |
||||
|
def migrate_mariadb(self): |
||||
|
# Backup all database |
||||
|
EEMysql.backupAll(self) |
||||
|
|
||||
|
# Add MariaDB repo |
||||
|
Log.info(self, "Adding repository for MariaDB, please wait ...") |
||||
|
EERepo.add(self, repo_url=EEVariables.ee_mysql_repo) |
||||
|
Log.debug(self, 'Adding key for {0}' |
||||
|
.format(EEVariables.ee_mysql_repo)) |
||||
|
EERepo.add_key(self, '0xcbcb082a1bb943db', |
||||
|
keyserver="keyserver.ubuntu.com") |
||||
|
|
||||
|
config = configparser.ConfigParser() |
||||
|
config.read(os.path.expanduser("~")+'/.my.cnf') |
||||
|
try: |
||||
|
chars = config['client']['password'] |
||||
|
except Exception as e: |
||||
|
Log.error(self, "Error: process exited with error %s" |
||||
|
% e) |
||||
|
|
||||
|
Log.debug(self, "Pre-seeding MariaDB") |
||||
|
Log.debug(self, "echo \"mariadb-server-10.0 " |
||||
|
"mysql-server/root_password " |
||||
|
"password \" | " |
||||
|
"debconf-set-selections") |
||||
|
EEShellExec.cmd_exec(self, "echo \"mariadb-server-10.0 " |
||||
|
"mysql-server/root_password " |
||||
|
"password {chars}\" | " |
||||
|
"debconf-set-selections" |
||||
|
.format(chars=chars), |
||||
|
log=False) |
||||
|
Log.debug(self, "echo \"mariadb-server-10.0 " |
||||
|
"mysql-server/root_password_again " |
||||
|
"password \" | " |
||||
|
"debconf-set-selections") |
||||
|
EEShellExec.cmd_exec(self, "echo \"mariadb-server-10.0 " |
||||
|
"mysql-server/root_password_again " |
||||
|
"password {chars}\" | " |
||||
|
"debconf-set-selections" |
||||
|
.format(chars=chars), |
||||
|
log=False) |
||||
|
|
||||
|
# Install MariaDB |
||||
|
apt_packages = EEVariables.ee_mysql |
||||
|
Log.info(self, "Updating apt-cache, please wait ...") |
||||
|
EEAptGet.update(self) |
||||
|
Log.info(self, "Installing MariaDB, please wait ...") |
||||
|
EEAptGet.install(self, apt_packages) |
||||
|
|
||||
|
@expose(hide=True) |
||||
|
def default(self): |
||||
|
if ((not self.app.pargs.mariadb)): |
||||
|
self.app.args.print_help() |
||||
|
if self.app.pargs.mariadb: |
||||
|
if EEVariables.ee_mysql_host is not "localhost": |
||||
|
Log.error(self, "Remote MySQL found, EasyEngine will not " |
||||
|
"install MariaDB") |
||||
|
|
||||
|
if EEShellExec.cmd_exec(self, "mysqladmin ping") and (not |
||||
|
EEAptGet.is_installed(self, 'mariadb-server')): |
||||
|
|
||||
|
Log.info(self, "If your database size is big, " |
||||
|
"migration may take some time.") |
||||
|
Log.info(self, "During migration non nginx-cached parts of " |
||||
|
"your site may remain down") |
||||
|
start_migrate = input("Type \"mariadb\" to continue:") |
||||
|
if start_migrate != "mariadb": |
||||
|
Log.error(self, "Not starting migration") |
||||
|
self.migrate_mariadb() |
||||
|
else: |
||||
|
Log.error(self, "Your current MySQL is not alive or " |
||||
|
"you allready installed MariaDB") |
Loading…
Reference in new issue