summaryrefslogtreecommitdiff
path: root/oslo_db/sqlalchemy/migration_cli/ext_alembic.py
diff options
context:
space:
mode:
Diffstat (limited to 'oslo_db/sqlalchemy/migration_cli/ext_alembic.py')
-rw-r--r--oslo_db/sqlalchemy/migration_cli/ext_alembic.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/oslo_db/sqlalchemy/migration_cli/ext_alembic.py b/oslo_db/sqlalchemy/migration_cli/ext_alembic.py
index 1dbf88f..825c638 100644
--- a/oslo_db/sqlalchemy/migration_cli/ext_alembic.py
+++ b/oslo_db/sqlalchemy/migration_cli/ext_alembic.py
@@ -15,6 +15,7 @@ import os
import alembic
from alembic import config as alembic_config
import alembic.migration as alembic_migration
+from alembic import script as alembic_script
from oslo_db.sqlalchemy.migration_cli import ext_base
@@ -89,3 +90,14 @@ class AlembicExtension(ext_base.MigrationExtensionBase):
with self.engine.begin() as connection:
self.config.attributes['connection'] = connection
return alembic.command.stamp(self.config, revision=revision)
+
+ def has_revision(self, rev_id):
+ if rev_id in ['base', 'head']:
+ return True
+ script = alembic_script.ScriptDirectory(
+ self.config.get_main_option('alembic_repo_path'))
+ try:
+ script.get_revision(rev_id)
+ return True
+ except alembic.util.CommandError:
+ return False