Added support for custom database port

This commit is contained in:
Antoine Nguyen
2022-09-15 10:23:59 +02:00
parent 59c61c3b7c
commit 062ad0d9f3

View File

@@ -13,6 +13,7 @@ class Database(object):
"""Common database backend.""" """Common database backend."""
default_port = None
packages = None packages = None
service = None service = None
@@ -21,6 +22,8 @@ class Database(object):
self.config = config self.config = config
engine = self.config.get("database", "engine") engine = self.config.get("database", "engine")
self.dbhost = self.config.get("database", "host") self.dbhost = self.config.get("database", "host")
self.dbport = self.config.getint(
"database", "port", fallback=self.default_port)
self.dbuser = config.get(engine, "user") self.dbuser = config.get(engine, "user")
self.dbpassword = config.get(engine, "password") self.dbpassword = config.get(engine, "password")
if self.config.getboolean("database", "install"): if self.config.getboolean("database", "install"):
@@ -36,6 +39,7 @@ class PostgreSQL(Database):
"""Postgres.""" """Postgres."""
default_port = 5432
packages = { packages = {
"deb": ["postgresql", "postgresql-server-dev-all"], "deb": ["postgresql", "postgresql-server-dev-all"],
"rpm": ["postgresql-server", "postgresql-devel"] "rpm": ["postgresql-server", "postgresql-devel"]
@@ -43,7 +47,7 @@ class PostgreSQL(Database):
service = "postgresql" service = "postgresql"
def __init__(self, config): def __init__(self, config):
super(PostgreSQL, self).__init__(config) super().__init__(config)
self._pgpass_done = False self._pgpass_done = False
def install_package(self): def install_package(self):
@@ -79,7 +83,8 @@ class PostgreSQL(Database):
cmd += " -d {}".format(dbname) cmd += " -d {}".format(dbname)
if dbuser: if dbuser:
self._setup_pgpass(dbname, dbuser, dbpassword) self._setup_pgpass(dbname, dbuser, dbpassword)
cmd += " -h {} -U {} -w".format(self.dbhost, dbuser) cmd += " -h {} -p {} -U {} -w".format(
self.dbhost, self.dbport, dbuser)
query = query.replace("'", "'\"'\"'") query = query.replace("'", "'\"'\"'")
cmd = "{} -c '{}' ".format(cmd, query) cmd = "{} -c '{}' ".format(cmd, query)
utils.exec_cmd(cmd, sudo_user=self.dbuser) utils.exec_cmd(cmd, sudo_user=self.dbuser)
@@ -137,8 +142,8 @@ class PostgreSQL(Database):
def load_sql_file(self, dbname, dbuser, dbpassword, path): def load_sql_file(self, dbname, dbuser, dbpassword, path):
"""Load SQL file.""" """Load SQL file."""
self._setup_pgpass(dbname, dbuser, dbpassword) self._setup_pgpass(dbname, dbuser, dbpassword)
cmd = "psql -h {} -d {} -U {} -w < {}".format( cmd = "psql -h {} -p {} -d {} -U {} -w < {}".format(
self.dbhost, dbname, dbuser, path) self.dbhost, self.dbport, dbname, dbuser, path)
utils.exec_cmd(cmd, sudo_user=self.dbuser) utils.exec_cmd(cmd, sudo_user=self.dbuser)
@@ -146,6 +151,7 @@ class MySQL(Database):
"""MySQL backend.""" """MySQL backend."""
default_port = 3306
packages = { packages = {
"deb": ["mariadb-server", "libmysqlclient-dev"], "deb": ["mariadb-server", "libmysqlclient-dev"],
"rpm": ["mariadb", "mariadb-devel", "mariadb-server"], "rpm": ["mariadb", "mariadb-devel", "mariadb-server"],
@@ -202,7 +208,8 @@ class MySQL(Database):
if dbuser is None and dbpassword is None: if dbuser is None and dbpassword is None:
dbuser = self.dbuser dbuser = self.dbuser
dbpassword = self.dbpassword dbpassword = self.dbpassword
cmd = "mysql -h {} -u {}".format(self.dbhost, dbuser) cmd = "mysql -h {} -P {} -u {}".format(
self.dbhost, self.dbport, dbuser)
if dbpassword: if dbpassword:
cmd += " -p{}".format(dbpassword) cmd += " -p{}".format(dbpassword)
if dbname: if dbname:
@@ -247,8 +254,8 @@ class MySQL(Database):
def load_sql_file(self, dbname, dbuser, dbpassword, path): def load_sql_file(self, dbname, dbuser, dbpassword, path):
"""Load SQL file.""" """Load SQL file."""
utils.exec_cmd( utils.exec_cmd(
"mysql -h {} -u {} -p{} {} < {}".format( "mysql -h {} -P {} -u {} -p{} {} < {}".format(
self.dbhost, dbuser, dbpassword, dbname, path) self.dbhost, self.dbport, dbuser, dbpassword, dbname, path)
) )