summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-01-20 18:47:09 +0000
committerGerrit Code Review <review@openstack.org>2012-01-20 18:47:09 +0000
commit91e019f76746206e109b15957b2bdf59fbf15bcf (patch)
tree4fc4a23ba967f1840d7778d74f3049341524ed90
parent889a5215842839342fdbe5b2cb2c7d9053ac36b5 (diff)
parent35df99cf1dca5d9b0ca1cb09039845aa8bd3a49b (diff)
downloadnova-91e019f76746206e109b15957b2bdf59fbf15bcf.tar.gz
nova-91e019f76746206e109b15957b2bdf59fbf15bcf.tar.xz
nova-91e019f76746206e109b15957b2bdf59fbf15bcf.zip
Merge "Drop FK constraint if it exists in migration 064"
-rw-r--r--nova/db/sqlalchemy/migrate_repo/versions/064_change_instance_id_to_uuid_in_instance_actions.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/nova/db/sqlalchemy/migrate_repo/versions/064_change_instance_id_to_uuid_in_instance_actions.py b/nova/db/sqlalchemy/migrate_repo/versions/064_change_instance_id_to_uuid_in_instance_actions.py
index df9d73028..1bff3b5af 100644
--- a/nova/db/sqlalchemy/migrate_repo/versions/064_change_instance_id_to_uuid_in_instance_actions.py
+++ b/nova/db/sqlalchemy/migrate_repo/versions/064_change_instance_id_to_uuid_in_instance_actions.py
@@ -17,6 +17,7 @@
import sqlalchemy
from sqlalchemy import select, Column, ForeignKey, Integer, String
+from migrate import ForeignKeyConstraint
from nova import log as logging
@@ -31,6 +32,7 @@ def _get_table(name):
def upgrade(migrate_engine):
meta.bind = migrate_engine
+ dialect = migrate_engine.url.get_dialect().name
instance_actions = _get_table('instance_actions')
instances = _get_table('instances')
uuid_column = Column('instance_uuid', String(36),
@@ -48,6 +50,18 @@ def upgrade(migrate_engine):
uuid_column.drop()
raise
+ if not dialect.startswith('sqlite'):
+ fkeys = list(instance_actions.c.instance_id.foreign_keys)
+ if fkeys:
+ try:
+ fkey_name = fkeys[0].constraint.name
+ ForeignKeyConstraint(columns=[instance_actions.c.instance_id],
+ refcolumns=[instances.c.id],
+ name=fkey_name).drop()
+ except:
+ logging.error(_("foreign key constraint couldn't be removed"))
+ raise
+
instance_actions.c.instance_id.drop()