harshadyeola
10 years ago
1 changed files with 124 additions and 0 deletions
@ -0,0 +1,124 @@ |
|||
import os |
|||
import random |
|||
import string |
|||
import configparser |
|||
from ee.core.variables import EEVariables |
|||
from ee.core.aptget import EEAptGet |
|||
from ee.core.apt_repo import EERepo |
|||
from ee.cli.plugins.eestack import EEStack |
|||
from ee.core.shellexec import EEShellExec |
|||
|
|||
# from ee.core.logging import Log |
|||
from ee.cli.main import app |
|||
|
|||
|
|||
class EEMysqlStack(EEStack): |
|||
""" |
|||
EasyEngine MYSQL stack |
|||
""" |
|||
packages_name = ["mariadb-server", "percona-toolkit"] |
|||
# log = app.log |
|||
def __init__(self, packages_name=None): |
|||
""" |
|||
Initialize packages list in stack |
|||
pkgs_name: list of packages to be intialized for operations |
|||
in stack |
|||
""" |
|||
|
|||
self.packages_name = self._get_stack() |
|||
|
|||
self.log = app.log |
|||
print(self.packages_name) |
|||
super(EEMysqlStack, self).__init__(self.packages_name) |
|||
|
|||
def _get_stack(self): |
|||
return EEMysqlStack.packages_name |
|||
|
|||
|
|||
def _pre_install_stack(self): |
|||
""" |
|||
Defines pre-install activities done before installing mysql stack |
|||
""" |
|||
|
|||
mysql_pref = ("Package: *\nPin: origin mirror.aarnet.edu.au" |
|||
"\nPin-Priority: 1000\n") |
|||
with open('/etc/apt/preferences.d/' |
|||
'MariaDB.pref', 'w') as mysql_pref_file: |
|||
mysql_pref_file.write(mysql_pref) |
|||
|
|||
# Add repository |
|||
if EEVariables.ee_platform_codename != 'jessie': |
|||
EERepo.add(self, repo_url=EEVariables.ee_mysql_repo) |
|||
self.log.debug('Adding key for {0}' |
|||
.format(EEVariables.ee_mysql_repo)) |
|||
EERepo.add_key(self, '0xcbcb082a1bb943db', |
|||
keyserver="keyserver.ubuntu.com") |
|||
|
|||
# Predefine MySQL Credentials |
|||
chars = ''.join(random.sample(string.ascii_letters, 8)) |
|||
print("Pre-seeding MySQL") |
|||
print("echo \"mariadb-server-10.0 " |
|||
"mysql-server/root_password " |
|||
"password \" | " |
|||
"debconf-set-selections") |
|||
try: |
|||
EEShellExec.cmd_exec(self, "echo \"mariadb-server-10.0 " |
|||
"mysql-server/root_password " |
|||
"password {chars}\" | " |
|||
"debconf-set-selections" |
|||
.format(chars=chars), |
|||
log=False) |
|||
except CommandExecutionError as e: |
|||
print("Failed to initialize MySQL package") |
|||
|
|||
# Predefine MySQL credentials |
|||
print("echo \"mariadb-server-10.0 " |
|||
"mysql-server/root_password_again " |
|||
"password \" | " |
|||
"debconf-set-selections") |
|||
try: |
|||
EEShellExec.cmd_exec(self, "echo \"mariadb-server-10.0 " |
|||
"mysql-server/root_password_again " |
|||
"password {chars}\" | " |
|||
"debconf-set-selections" |
|||
.format(chars=chars), |
|||
log=False) |
|||
except CommandExecutionError as e: |
|||
|
|||
print("Failed to initialize MySQL package") |
|||
|
|||
# Write ~/.my.cnf configuration |
|||
mysql_config = """ |
|||
[client] |
|||
user = root |
|||
password = {chars} |
|||
""".format(chars=chars) |
|||
config = configparser.ConfigParser() |
|||
config.read_string(mysql_config) |
|||
print('Writting configuration into MySQL file') |
|||
with open(os.path.expanduser("~")+'/.my.cnf', encoding='utf-8', |
|||
mode='w') as configfile: |
|||
config.write(configfile) |
|||
print("Done") |
|||
|
|||
def _post_install_stack(self): |
|||
""" |
|||
Defines activities done after installing mysql stack |
|||
""" |
|||
pass |
|||
|
|||
def install_stack(self): |
|||
print("Installing MySQL stack") |
|||
self._pre_install_stack() |
|||
super(EEMysqlStack, self).install_stack() |
|||
self._post_install_stack() |
|||
|
|||
def remove_stack(self): |
|||
print("Removing MySQL stack") |
|||
super(EEMysqlStack, self).remove_stack() |
|||
|
|||
def purge_stack(self): |
|||
print("Purging MySQL stack") |
|||
super(EEMysqlStack, self).purge_stack() |
|||
print("Done") |
|||
|
Loading…
Reference in new issue