summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-02-28 17:02:44 +0000
committerGerrit Code Review <review@openstack.org>2013-02-28 17:02:44 +0000
commit176789368269582455fb55facd7b1c0fdaea4e03 (patch)
tree236b290ccfaa3022c8ee5b3a0a35f9fab763cf13 /nova
parentfad84ab9eba658af0b73fa5a4f0a6755421c148f (diff)
parent40680d96302a266f2d56dcf3031ce7b27f260018 (diff)
Merge "Don't blindly skip first migration."
Diffstat (limited to 'nova')
-rw-r--r--nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py2
-rw-r--r--nova/tests/test_migrations.py35
-rw-r--r--nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/001_init.py2
3 files changed, 21 insertions, 18 deletions
diff --git a/nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py b/nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py
index 8a97959bc..1b688a883 100644
--- a/nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py
+++ b/nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py
@@ -1222,4 +1222,4 @@ def upgrade(migrate_engine):
def downgrade(migrate_engine):
- LOG.exception(_('Downgrade from Folsom is unsupported.'))
+ raise NotImplementedError('Downgrade from Folsom is unsupported.')
diff --git a/nova/tests/test_migrations.py b/nova/tests/test_migrations.py
index cbcf87e5d..beb03b0aa 100644
--- a/nova/tests/test_migrations.py
+++ b/nova/tests/test_migrations.py
@@ -366,36 +366,37 @@ class BaseMigrationTestCase(test.TestCase):
self.migration_api.db_version(engine,
self.REPOSITORY))
- self.migration_api.upgrade(engine,
- self.REPOSITORY,
- self.INIT_VERSION + 1)
-
LOG.debug('latest version is %s' % self.REPOSITORY.latest)
+ versions = range(self.INIT_VERSION + 1, self.REPOSITORY.latest + 1)
- for version in xrange(self.INIT_VERSION + 2,
- self.REPOSITORY.latest + 1):
+ for version in versions:
# upgrade -> downgrade -> upgrade
self._migrate_up(engine, version, with_data=True)
if snake_walk:
- self._migrate_down(engine, version - 1, with_data=True)
- self._migrate_up(engine, version)
+ downgraded = self._migrate_down(
+ engine, version - 1, with_data=True)
+ if downgraded:
+ self._migrate_up(engine, version)
if downgrade:
# Now walk it back down to 0 from the latest, testing
# the downgrade paths.
- for version in reversed(
- xrange(self.INIT_VERSION + 2,
- self.REPOSITORY.latest + 1)):
+ for version in reversed(versions):
# downgrade -> upgrade -> downgrade
- self._migrate_down(engine, version - 1)
- if snake_walk:
+ downgraded = self._migrate_down(engine, version - 1)
+
+ if snake_walk and downgraded:
self._migrate_up(engine, version)
self._migrate_down(engine, version - 1)
def _migrate_down(self, engine, version, with_data=False):
- self.migration_api.downgrade(engine,
- self.REPOSITORY,
- version)
+ try:
+ self.migration_api.downgrade(engine, self.REPOSITORY, version)
+ except NotImplementedError:
+ # NOTE(sirp): some migrations, namely release-level
+ # migrations, don't support a downgrade.
+ return False
+
self.assertEqual(version,
self.migration_api.db_version(engine,
self.REPOSITORY))
@@ -409,6 +410,8 @@ class BaseMigrationTestCase(test.TestCase):
if post_downgrade:
post_downgrade(engine)
+ return True
+
def _migrate_up(self, engine, version, with_data=False):
"""migrate up to a new version of the db.
diff --git a/nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/001_init.py b/nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/001_init.py
index 2d899406c..fad83e21b 100644
--- a/nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/001_init.py
+++ b/nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/001_init.py
@@ -120,4 +120,4 @@ def upgrade(migrate_engine):
def downgrade(migrate_engine):
- pass
+ raise NotImplementedError('Downgrade from 001_init is unsupported.')