9030bc7285
This commit migrates Murano database migration framework from sqlalchemy-migrate to Alembic. sqlalchemy-migrate is considered abandoned. All other OpenStack projects are in process of migration to Alembic or have already finished migration. This change doesn't preserve all the migration scripts, it merges them into a single migration script. That's what we would do even without Alembic. It's a common practice to squash migration scripts into a single one right after the release. NOTICE: CLI command to run migrations changed. Now it looks like this: $ murano-db-manage upgrade Migration path: 1. Simple solution is just to re-create your database from scratch 2. You can stamp your database with revision to make Alembic think that it already applied the first migration: $ tox -e venv -- murano-db-manage --config-file etc/murano/murano.conf stamp --revision head For usage instructions see: murano/db/migraiton/alembic_migrations/README This patch also adds opportunistic tests for migrations. These tests will run in OpenStack Infrastructure jenkins slaves. It'll use real MySQL and Postgres databases. Tests will run in a "snake walk" manner, which means that upgrade and downgrade path will be tested. Base for migration tests is copied from Nova. Please note, that at this moment we cannot use code from oslo, because it is not documented and is not tested. Once test_migrations_base appears in project 'oslo.db', we'll be able to remove our own test_migrations_base and use the one from 'oslo.db'. implements: blueprint alembic-migrations Change-Id: I5aa978f7095efc57f2d6fad81b5553e1880ad931
54 lines
959 B
INI
54 lines
959 B
INI
# A generic, single database configuration.
|
|
|
|
[alembic]
|
|
# path to migration scripts
|
|
script_location = murano/db/migration/alembic_migrations
|
|
|
|
# template used to generate migration files
|
|
# file_template = %%(rev)s_%%(slug)s
|
|
|
|
# max length of characters to apply to the
|
|
# "slug" field
|
|
#truncate_slug_length = 40
|
|
|
|
# set to 'true' to run the environment during
|
|
# the 'revision' command, regardless of autogenerate
|
|
# revision_environment = false
|
|
|
|
sqlalchemy.url =
|
|
|
|
|
|
# Logging configuration
|
|
[loggers]
|
|
keys = root,sqlalchemy,alembic
|
|
|
|
[handlers]
|
|
keys = console
|
|
|
|
[formatters]
|
|
keys = generic
|
|
|
|
[logger_root]
|
|
level = WARN
|
|
handlers = console
|
|
qualname =
|
|
|
|
[logger_sqlalchemy]
|
|
level = WARN
|
|
handlers =
|
|
qualname = sqlalchemy.engine
|
|
|
|
[logger_alembic]
|
|
level = INFO
|
|
handlers =
|
|
qualname = alembic
|
|
|
|
[handler_console]
|
|
class = StreamHandler
|
|
args = (sys.stderr,)
|
|
level = NOTSET
|
|
formatter = generic
|
|
|
|
[formatter_generic]
|
|
format = %(levelname)-5.5s [%(name)s] %(message)s
|
|
datefmt = %H:%M:%S |