Browse code

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

Julien Danjou authored on 2015/09/08 19:45:06
Showing 3 changed files
... ...
@@ -101,7 +101,7 @@ function initialize_database_backends {
101 101
     # a multi-node DevStack installation.
102 102
 
103 103
     # NOTE: Don't specify ``/db`` in this string so we can use it for multiple services
104
-    BASE_SQL_CONN=${BASE_SQL_CONN:-$(get_database_type)://$DATABASE_USER:$DATABASE_PASSWORD@$DATABASE_HOST}
104
+    BASE_SQL_CONN=${BASE_SQL_CONN:-$(get_database_type_$DATABASE_TYPE)://$DATABASE_USER:$DATABASE_PASSWORD@$DATABASE_HOST}
105 105
 
106 106
     return 0
107 107
 }
... ...
@@ -135,14 +135,6 @@ function database_connection_url {
135 135
     database_connection_url_$DATABASE_TYPE $db
136 136
 }
137 137
 
138
-function get_database_type {
139
-    if [[ -n "${SQLALCHEMY_DATABASE_DRIVER}" ]]; then
140
-        echo "${DATABASE_TYPE}+${SQLALCHEMY_DATABASE_DRIVER}"
141
-    else
142
-        echo "${DATABASE_TYPE}"
143
-    fi
144
-}
145
-
146 138
 
147 139
 # Restore xtrace
148 140
 $XTRACE
... ...
@@ -12,12 +12,6 @@ MY_XTRACE=$(set +o | grep xtrace)
12 12
 set +o xtrace
13 13
 
14 14
 MYSQL_DRIVER=${MYSQL_DRIVER:-PyMySQL}
15
-# Force over to pymysql driver by default if we are using it.
16
-if is_service_enabled mysql; then
17
-    if [[ "$MYSQL_DRIVER" == "PyMySQL" ]]; then
18
-        SQLALCHEMY_DATABASE_DRIVER=${SQLALCHEMY_DATABASE_DRIVER:-"pymysql"}
19
-    fi
20
-fi
21 15
 
22 16
 register_database mysql
23 17
 
... ...
@@ -30,6 +24,14 @@ fi
30 30
 # Functions
31 31
 # ---------
32 32
 
33
+function get_database_type_mysql {
34
+    if [[ "$MYSQL_DRIVER" == "PyMySQL" ]]; then
35
+        echo mysql+pymysql
36
+    else
37
+        echo mysql
38
+    fi
39
+}
40
+
33 41
 # Get rid of everything enough to cleanly change database backends
34 42
 function cleanup_database_mysql {
35 43
     stop_service $MYSQL
... ...
@@ -21,6 +21,10 @@ register_database postgresql
21 21
 # Functions
22 22
 # ---------
23 23
 
24
+function get_database_type_postgresql {
25
+    echo postgresql
26
+}
27
+
24 28
 # Get rid of everything enough to cleanly change database backends
25 29
 function cleanup_database_postgresql {
26 30
     stop_service postgresql