add engine parameter for offline migrations

Offline migration required config file containing connection string.
In that case only engine from URL was used. With this patch engine can be
passed from command line (or config file) along with plugins which sql
script will be generated accordingly.

DocImpact

Change-Id: Ib667a71960b833fd981f97fe7d6b1856084ef5c8
Closes-Bug: #1304326
This commit is contained in:
Jakub Libosvar 2014-04-08 12:41:11 +02:00
parent 53b701a3f9
commit de403598f6
3 changed files with 17 additions and 7 deletions

View File

@ -414,6 +414,10 @@ admin_password = %SERVICE_PASSWORD%
# main neutron server. (Leave it as is if the database runs on this host.)
# connection = sqlite://
# Database engine for which script will be generated when using offline
# migration
# engine =
# The SQLAlchemy connection string used to connect to the slave database
# slave_connection =

View File

@ -48,16 +48,19 @@ target_metadata = model_base.BASEV2.metadata
def run_migrations_offline():
"""Run migrations in 'offline' mode.
This configures the context with just a URL
and not an Engine, though an Engine is acceptable
here as well. By skipping the Engine creation
we don't even need a DBAPI to be available.
This configures the context with either a URL
or an Engine.
Calls to context.execute() here emit the given string to the
script output.
"""
context.configure(url=neutron_config.database.connection)
kwargs = dict()
if neutron_config.database.connection:
kwargs['url'] = neutron_config.database.connection
else:
kwargs['dialect_name'] = neutron_config.database.engine
context.configure(**kwargs)
with context.begin_transaction():
context.run_migrations(active_plugins=active_plugins,

View File

@ -46,11 +46,14 @@ _db_opts = [
deprecated_name='sql_connection',
default='',
help=_('URL to database')),
cfg.StrOpt('engine',
default='',
help=_('Database engine')),
]
CONF = cfg.ConfigOpts()
CONF.register_opts(_core_opts)
CONF.register_opts(_db_opts, 'database')
CONF.register_cli_opts(_core_opts)
CONF.register_cli_opts(_db_opts, 'database')
CONF.register_opts(_quota_opts, 'QUOTAS')