database: fix PostgreSQL connection string
If all databases drivers are loaded, MySQL SQLAlchemy driver
overrides all the other one that might not have set one.
This patches fixes that.
Change-Id: If6d8d08e5b7b7c48ca012677b536d71058def6fd
Closes-Bug: #1493304
diff --git a/lib/database b/lib/database
index 5bbbe31..13740b9 100644
--- a/lib/database
+++ b/lib/database
@@ -101,7 +101,7 @@
# a multi-node DevStack installation.
# NOTE: Don't specify ``/db`` in this string so we can use it for multiple services
- BASE_SQL_CONN=${BASE_SQL_CONN:-$(get_database_type)://$DATABASE_USER:$DATABASE_PASSWORD@$DATABASE_HOST}
+ BASE_SQL_CONN=${BASE_SQL_CONN:-$(get_database_type_$DATABASE_TYPE)://$DATABASE_USER:$DATABASE_PASSWORD@$DATABASE_HOST}
return 0
}
@@ -135,14 +135,6 @@
database_connection_url_$DATABASE_TYPE $db
}
-function get_database_type {
- if [[ -n "${SQLALCHEMY_DATABASE_DRIVER}" ]]; then
- echo "${DATABASE_TYPE}+${SQLALCHEMY_DATABASE_DRIVER}"
- else
- echo "${DATABASE_TYPE}"
- fi
-}
-
# Restore xtrace
$XTRACE
diff --git a/lib/databases/mysql b/lib/databases/mysql
index ada56a7..c2ab32e 100644
--- a/lib/databases/mysql
+++ b/lib/databases/mysql
@@ -12,12 +12,6 @@
set +o xtrace
MYSQL_DRIVER=${MYSQL_DRIVER:-PyMySQL}
-# Force over to pymysql driver by default if we are using it.
-if is_service_enabled mysql; then
- if [[ "$MYSQL_DRIVER" == "PyMySQL" ]]; then
- SQLALCHEMY_DATABASE_DRIVER=${SQLALCHEMY_DATABASE_DRIVER:-"pymysql"}
- fi
-fi
register_database mysql
@@ -30,6 +24,14 @@
# Functions
# ---------
+function get_database_type_mysql {
+ if [[ "$MYSQL_DRIVER" == "PyMySQL" ]]; then
+ echo mysql+pymysql
+ else
+ echo mysql
+ fi
+}
+
# Get rid of everything enough to cleanly change database backends
function cleanup_database_mysql {
stop_service $MYSQL
diff --git a/lib/databases/postgresql b/lib/databases/postgresql
index e087a1e..78c7bed 100644
--- a/lib/databases/postgresql
+++ b/lib/databases/postgresql
@@ -21,6 +21,10 @@
# Functions
# ---------
+function get_database_type_postgresql {
+ echo postgresql
+}
+
# Get rid of everything enough to cleanly change database backends
function cleanup_database_postgresql {
stop_service postgresql