summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-08-20 15:03:15 +0000
committerGerrit Code Review <review@openstack.org>2015-08-20 15:03:15 +0000
commit4ad8ed0c17c6d32ee0397bd2b60fcc8011e2ed1d (patch)
treee462a8791b4974e69e35a0fd8a9fedcbce7fa0fe
parent27b730143886c3699ed0b072ea2304e47bff9c2d (diff)
parentb843f049f39251c46f57df2b0da3fdc1ec923ef0 (diff)
downloadoslo-db-2.4.1.tar.gz
Merge "Assume relative revisions belong to alembic"2.4.1
-rw-r--r--oslo_db/sqlalchemy/migration_cli/ext_alembic.py9
-rw-r--r--oslo_db/tests/sqlalchemy/test_migrate_cli.py4
2 files changed, 13 insertions, 0 deletions
diff --git a/oslo_db/sqlalchemy/migration_cli/ext_alembic.py b/oslo_db/sqlalchemy/migration_cli/ext_alembic.py
index 0348a37..a855321 100644
--- a/oslo_db/sqlalchemy/migration_cli/ext_alembic.py
+++ b/oslo_db/sqlalchemy/migration_cli/ext_alembic.py
@@ -94,6 +94,15 @@ class AlembicExtension(ext_base.MigrationExtensionBase):
def has_revision(self, rev_id):
if rev_id in ['base', 'head']:
return True
+
+ # Although alembic supports relative upgrades and downgrades,
+ # get_revision always returns False for relative revisions.
+ # Since only alembic supports relative revisions, assume the
+ # revision belongs to this plugin.
+ if rev_id: # rev_id can be None, so the check is required
+ if '-' in rev_id or '+' in rev_id:
+ return True
+
script = alembic_script.ScriptDirectory(
self.config.get_main_option('script_location'))
try:
diff --git a/oslo_db/tests/sqlalchemy/test_migrate_cli.py b/oslo_db/tests/sqlalchemy/test_migrate_cli.py
index 72d8b4e..8d2ae8d 100644
--- a/oslo_db/tests/sqlalchemy/test_migrate_cli.py
+++ b/oslo_db/tests/sqlalchemy/test_migrate_cli.py
@@ -109,6 +109,8 @@ class TestAlembicExtension(test_base.BaseTestCase):
'test')
self.assertIs(True, self.alembic.has_revision(None))
self.assertIs(True, self.alembic.has_revision('head'))
+ # relative revision, should be True for alembic
+ self.assertIs(True, self.alembic.has_revision('+1'))
def test_has_revision_negative(self, command):
with mock.patch(('oslo_db.sqlalchemy.migration_cli.'
@@ -202,6 +204,8 @@ class TestMigrateExtension(test_base.BaseTestCase):
mocked.Collection().version.side_effect = ValueError
self.assertIs(False, self.migrate.has_revision('test'))
mocked.Collection().version.assert_called_once_with('test')
+ # relative revision, should be False for migrate
+ self.assertIs(False, self.migrate.has_revision('+1'))
class TestMigrationManager(test_base.BaseTestCase):