implements selecting version in db sync
Fixes Bug #993284 db_sync compares the current version with the specified version and upgrades or downgrades accordingly. Change-Id: If0e0608ac04c264df7964f8cf6a46e9b156eee49
This commit is contained in:
parent
a1c9364e1d
commit
a88b8d8dcb
@ -119,12 +119,14 @@ def db_sync(version=None, current_version=None):
|
|||||||
try:
|
try:
|
||||||
_version_control(current_version or 0)
|
_version_control(current_version or 0)
|
||||||
except versioning_exceptions.DatabaseAlreadyControlledError, e:
|
except versioning_exceptions.DatabaseAlreadyControlledError, e:
|
||||||
if current_version is not None:
|
pass
|
||||||
msg = (_("database '%(sql_connection)s' is already under "
|
|
||||||
"migration control") % locals())
|
|
||||||
raise exception.DatabaseMigrationError(msg)
|
|
||||||
|
|
||||||
upgrade(version=version)
|
if current_version is None:
|
||||||
|
current_version = int(db_version())
|
||||||
|
if version is not None and int(version) < current_version:
|
||||||
|
downgrade(version=version)
|
||||||
|
elif version is None or int(version) > current_version:
|
||||||
|
upgrade(version=version)
|
||||||
|
|
||||||
|
|
||||||
def get_migrate_repo_path():
|
def get_migrate_repo_path():
|
||||||
|
@ -211,6 +211,20 @@ class TestMigrations(utils.BaseTestCase):
|
|||||||
cur_version = migration_api.db_version()
|
cur_version = migration_api.db_version()
|
||||||
self.assertEqual(cur_version, version)
|
self.assertEqual(cur_version, version)
|
||||||
|
|
||||||
|
def test_db_sync(self):
|
||||||
|
initial_version = 0
|
||||||
|
migration_api.db_sync(initial_version)
|
||||||
|
cur_version = migration_api.db_version()
|
||||||
|
self.assertEqual(cur_version, initial_version)
|
||||||
|
|
||||||
|
migration_api.db_sync(TestMigrations.REPOSITORY.latest)
|
||||||
|
cur_version = migration_api.db_version()
|
||||||
|
self.assertEqual(cur_version, TestMigrations.REPOSITORY.latest)
|
||||||
|
|
||||||
|
migration_api.db_sync(initial_version)
|
||||||
|
cur_version = migration_api.db_version()
|
||||||
|
self.assertEqual(cur_version, initial_version)
|
||||||
|
|
||||||
def test_no_data_loss_2_to_3_to_2(self):
|
def test_no_data_loss_2_to_3_to_2(self):
|
||||||
"""
|
"""
|
||||||
Here, we test that in the case when we moved a column "type" from the
|
Here, we test that in the case when we moved a column "type" from the
|
||||||
|
Loading…
Reference in New Issue
Block a user