From: Jakub Libosvar Date: Tue, 8 Apr 2014 10:41:11 +0000 (+0200) Subject: add engine parameter for offline migrations X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=de403598f608172b1cf41ca4ec0d880642e215d5;p=openstack-build%2Fneutron-build.git 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 --- 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')