]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commitdiff
Add volumes table definition when migrating to 67
authorwanghao <wanghao749@huawei.com>
Tue, 8 Mar 2016 05:57:15 +0000 (13:57 +0800)
committerwanghao <wanghao749@huawei.com>
Tue, 8 Mar 2016 05:57:15 +0000 (13:57 +0800)
When migrating DB to 67 readd_iscsi_targets_table,
we will add foreign key "volumes.id", but we miss
to define the volumes table, that will cause the
migrating process fail: 'NoReferencedTableError'.

Fix this issue by adding volume table definition
before creating iscsi_targets table. test is
added as well.

Change-Id: Id0e0970517a5d3414e0ed124b2b7b3a5b1973761
Closes-Bug: #1554329

cinder/db/sqlalchemy/migrate_repo/versions/067_readd_iscsi_targets_table.py
cinder/tests/unit/test_migrations.py

index 4efe0ed48c2c3f7dd380a68082a17364b86c60c5..c0ba4f3a3ea4f4b216c19934afbb697b16e77d09 100644 (file)
@@ -17,6 +17,7 @@ from sqlalchemy import Integer, MetaData, String, Table
 def upgrade(migrate_engine):
     meta = MetaData()
     meta.bind = migrate_engine
+    Table('volumes', meta, autoload=True)
 
     table = Table(
         'iscsi_targets', meta,
index 50f3eca2824c37b69809c4480b9d9644c7326308..b6d977369ab7e8e43c31398c282f4deb34f6bef0 100644 (file)
@@ -744,6 +744,11 @@ class MigrationsMixin(test_migrations.WalkVersionsMixin):
         self.assertIsInstance(reservations.c.allocated_id.type,
                               self.INTEGER_TYPE)
 
+    def _check_067(self, engine, data):
+        iscsi_targets = db_utils.get_table(engine, 'iscsi_targets')
+        fkey, = iscsi_targets.c.volume_id.foreign_keys
+        self.assertIsNotNone(fkey)
+
     def test_walk_versions(self):
         self.walk_versions(False, False)