From de403598f608172b1cf41ca4ec0d880642e215d5 Mon Sep 17 00:00:00 2001 From: Jakub Libosvar Date: Tue, 8 Apr 2014 12:41:11 +0200 Subject: [PATCH] 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 --- etc/neutron.conf | 4 ++++ neutron/db/migration/alembic_migrations/env.py | 13 ++++++++----- neutron/db/migration/cli.py | 7 +++++-- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/etc/neutron.conf b/etc/neutron.conf index 8da95c970..2455f2fd7 100644 --- a/etc/neutron.conf +++ b/etc/neutron.conf @@ -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 = diff --git a/neutron/db/migration/alembic_migrations/env.py b/neutron/db/migration/alembic_migrations/env.py index 98352ffb7..885027792 100644 --- a/neutron/db/migration/alembic_migrations/env.py +++ b/neutron/db/migration/alembic_migrations/env.py @@ -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, diff --git a/neutron/db/migration/cli.py b/neutron/db/migration/cli.py index 850806e89..6a5da8bae 100644 --- a/neutron/db/migration/cli.py +++ b/neutron/db/migration/cli.py @@ -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') -- 2.45.2