diff options
| author | Jenkins <jenkins@review.openstack.org> | 2013-02-28 17:02:44 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2013-02-28 17:02:44 +0000 |
| commit | 176789368269582455fb55facd7b1c0fdaea4e03 (patch) | |
| tree | 236b290ccfaa3022c8ee5b3a0a35f9fab763cf13 /nova | |
| parent | fad84ab9eba658af0b73fa5a4f0a6755421c148f (diff) | |
| parent | 40680d96302a266f2d56dcf3031ce7b27f260018 (diff) | |
Merge "Don't blindly skip first migration."
Diffstat (limited to 'nova')
| -rw-r--r-- | nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py | 2 | ||||
| -rw-r--r-- | nova/tests/test_migrations.py | 35 | ||||
| -rw-r--r-- | nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/001_init.py | 2 |
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.') |
