manila/manila/db/migration.py
Julia Varlamova f8408e2720 Use Alembic instead of Sqlalchemy-migrate in Manila
Alembic offers the following functionality:
- Can emit ALTER statements to a database in order to change
  the structure of tables and other constructs
- Provides a system whereby "migration scripts" may be constructed;
  each script indicates a particular series of steps that can "upgrade"
  a target database to a new version, and optionally a series of steps
  that can "downgrade" similarly, doing the same steps in reverse.
- Allows the scripts to execute in some sequential manner.

1. Add Alembic migrations support.
2. Move 001_manila_init.py migration to
manila/db/sqlalchemy/alembic/versions/162a3e673105_manila_init.py.
3. Remove manila/db/sqlalchemy/migrate_repo directory.
4. Fix unit tests.
5. Add ability to runtime updrade/downgrade db.

Implements bp alembic-instead-of-sqlalchemy-migrate

Change-Id: Iadc0d9596e826323ba19bd25be741c401b90b688
2014-08-26 17:12:57 +04:00

51 lines
1.5 KiB
Python

# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2010 United States Government as represented by the
# Administrator of the National Aeronautics and Space Administration.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
"""Database setup and migration commands."""
from manila import utils
IMPL = utils.LazyPluggable(
'db_backend', sqlalchemy='manila.db.migrations.alembic.migration')
def upgrade(version):
"""Upgrade database to 'version' or the most recent version."""
return IMPL.upgrade(version)
def downgrade(version):
"""Downgrade database to 'version' or to initial state."""
return IMPL.downgrade(version)
def version():
"""Display the current database version."""
return IMPL.version()
def stamp(version):
"""Stamp database with 'version' or the most recent version."""
return IMPL.stamp(version)
def revision(message, autogenerate):
"""Generate new migration script."""
return IMPL.revision(message, autogenerate)