Remove table creation from the SQL driver
Table creation must happen outside of API requests. This changes the devstack plugin to create the tables properly. Change-Id: I57c4fba06dc6725ea977477b777e4ffd6856adde
This commit is contained in:
parent
f81dd19d48
commit
10b07c9ccf
@ -129,6 +129,8 @@ function configure_zaqar {
|
|||||||
iniset $ZAQAR_CONF 'drivers:management_store:sqlalchemy' uri `database_connection_url zaqar`
|
iniset $ZAQAR_CONF 'drivers:management_store:sqlalchemy' uri `database_connection_url zaqar`
|
||||||
iniset $ZAQAR_CONF 'drivers:management_store:sqlalchemy' database zaqar_mgmt
|
iniset $ZAQAR_CONF 'drivers:management_store:sqlalchemy' database zaqar_mgmt
|
||||||
|
|
||||||
|
zaqar-sql-db-manage --config-file $ZAQAR_CONF upgrade head
|
||||||
|
|
||||||
iniset $ZAQAR_CONF drivers message_store redis
|
iniset $ZAQAR_CONF drivers message_store redis
|
||||||
iniset $ZAQAR_CONF 'drivers:message_store:redis' uri redis://localhost:6379
|
iniset $ZAQAR_CONF 'drivers:message_store:redis' uri redis://localhost:6379
|
||||||
iniset $ZAQAR_CONF 'drivers:message_store:redis' database zaqar
|
iniset $ZAQAR_CONF 'drivers:message_store:redis' database zaqar
|
||||||
@ -139,6 +141,8 @@ function configure_zaqar {
|
|||||||
iniset $ZAQAR_CONF 'drivers:management_store:sqlalchemy' uri `database_connection_url zaqar`
|
iniset $ZAQAR_CONF 'drivers:management_store:sqlalchemy' uri `database_connection_url zaqar`
|
||||||
iniset $ZAQAR_CONF 'drivers:management_store:sqlalchemy' database zaqar_mgmt
|
iniset $ZAQAR_CONF 'drivers:management_store:sqlalchemy' database zaqar_mgmt
|
||||||
|
|
||||||
|
zaqar-sql-db-manage --config-file $ZAQAR_CONF upgrade head
|
||||||
|
|
||||||
iniset $ZAQAR_CONF drivers message_store swift
|
iniset $ZAQAR_CONF drivers message_store swift
|
||||||
iniset $ZAQAR_CONF 'drivers:message_store:swift' auth_url $KEYSTONE_AUTH_URI_V3
|
iniset $ZAQAR_CONF 'drivers:message_store:swift' auth_url $KEYSTONE_AUTH_URI_V3
|
||||||
iniset $ZAQAR_CONF 'drivers:message_store:swift' uri swift://zaqar:$SERVICE_PASSWORD@/service
|
iniset $ZAQAR_CONF 'drivers:message_store:swift' uri swift://zaqar:$SERVICE_PASSWORD@/service
|
||||||
|
7
releasenotes/notes/sql_init-c9b3883241631f24.yaml
Normal file
7
releasenotes/notes/sql_init-c9b3883241631f24.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
critical:
|
||||||
|
- |
|
||||||
|
When using the sqlalchemy driver, operators now are required to run
|
||||||
|
"zaqar-sql-db-manage upgrade" before making the service available. The
|
||||||
|
service previously tried to create the database on the first request, but
|
||||||
|
it was bound to race conditions.
|
@ -23,7 +23,6 @@ from zaqar.common import decorators
|
|||||||
from zaqar import storage
|
from zaqar import storage
|
||||||
from zaqar.storage.sqlalchemy import controllers
|
from zaqar.storage.sqlalchemy import controllers
|
||||||
from zaqar.storage.sqlalchemy import options
|
from zaqar.storage.sqlalchemy import options
|
||||||
from zaqar.storage.sqlalchemy import tables
|
|
||||||
|
|
||||||
|
|
||||||
class ControlDriver(storage.ControlDriverBase):
|
class ControlDriver(storage.ControlDriverBase):
|
||||||
@ -61,8 +60,6 @@ class ControlDriver(storage.ControlDriverBase):
|
|||||||
sa.event.listen(engine, 'connect',
|
sa.event.listen(engine, 'connect',
|
||||||
self._mysql_on_connect)
|
self._mysql_on_connect)
|
||||||
|
|
||||||
tables.metadata.create_all(engine, checkfirst=True)
|
|
||||||
|
|
||||||
if (self.conf.profiler.enabled and
|
if (self.conf.profiler.enabled and
|
||||||
self.conf.profiler.trace_message_store):
|
self.conf.profiler.trace_message_store):
|
||||||
sa_tracer.add_tracing(sa, engine, "db")
|
sa_tracer.add_tracing(sa, engine, "db")
|
||||||
|
@ -16,33 +16,40 @@ import six
|
|||||||
|
|
||||||
from zaqar.storage import sqlalchemy
|
from zaqar.storage import sqlalchemy
|
||||||
from zaqar.storage.sqlalchemy import controllers
|
from zaqar.storage.sqlalchemy import controllers
|
||||||
|
from zaqar.storage.sqlalchemy import tables
|
||||||
from zaqar.storage.sqlalchemy import utils
|
from zaqar.storage.sqlalchemy import utils
|
||||||
from zaqar import tests as testing
|
from zaqar import tests as testing
|
||||||
from zaqar.tests.unit.storage import base
|
from zaqar.tests.unit.storage import base
|
||||||
|
|
||||||
|
|
||||||
class SqlalchemyQueueTests(base.QueueControllerTest):
|
class DBCreateMixin(object):
|
||||||
|
|
||||||
|
def _prepare_conf(self):
|
||||||
|
tables.metadata.create_all(self.driver.engine)
|
||||||
|
|
||||||
|
|
||||||
|
class SqlalchemyQueueTests(DBCreateMixin, base.QueueControllerTest):
|
||||||
driver_class = sqlalchemy.ControlDriver
|
driver_class = sqlalchemy.ControlDriver
|
||||||
config_file = 'wsgi_sqlalchemy.conf'
|
config_file = 'wsgi_sqlalchemy.conf'
|
||||||
controller_class = controllers.QueueController
|
controller_class = controllers.QueueController
|
||||||
control_driver_class = sqlalchemy.ControlDriver
|
control_driver_class = sqlalchemy.ControlDriver
|
||||||
|
|
||||||
|
|
||||||
class SqlalchemyPoolsTest(base.PoolsControllerTest):
|
class SqlalchemyPoolsTest(DBCreateMixin, base.PoolsControllerTest):
|
||||||
config_file = 'wsgi_sqlalchemy.conf'
|
config_file = 'wsgi_sqlalchemy.conf'
|
||||||
driver_class = sqlalchemy.ControlDriver
|
driver_class = sqlalchemy.ControlDriver
|
||||||
controller_class = controllers.PoolsController
|
controller_class = controllers.PoolsController
|
||||||
control_driver_class = sqlalchemy.ControlDriver
|
control_driver_class = sqlalchemy.ControlDriver
|
||||||
|
|
||||||
|
|
||||||
class SqlalchemyCatalogueTest(base.CatalogueControllerTest):
|
class SqlalchemyCatalogueTest(DBCreateMixin, base.CatalogueControllerTest):
|
||||||
config_file = 'wsgi_sqlalchemy.conf'
|
config_file = 'wsgi_sqlalchemy.conf'
|
||||||
driver_class = sqlalchemy.ControlDriver
|
driver_class = sqlalchemy.ControlDriver
|
||||||
controller_class = controllers.CatalogueController
|
controller_class = controllers.CatalogueController
|
||||||
control_driver_class = sqlalchemy.ControlDriver
|
control_driver_class = sqlalchemy.ControlDriver
|
||||||
|
|
||||||
|
|
||||||
class SqlalchemyFlavorsTest(base.FlavorsControllerTest):
|
class SqlalchemyFlavorsTest(DBCreateMixin, base.FlavorsControllerTest):
|
||||||
config_file = 'wsgi_sqlalchemy.conf'
|
config_file = 'wsgi_sqlalchemy.conf'
|
||||||
driver_class = sqlalchemy.ControlDriver
|
driver_class = sqlalchemy.ControlDriver
|
||||||
controller_class = controllers.FlavorsController
|
controller_class = controllers.FlavorsController
|
||||||
|
Loading…
Reference in New Issue
Block a user