--- /dev/null
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from sqlalchemy import Column
+from sqlalchemy import MetaData, String, Table
+
+
+def upgrade(migrate_engine):
+ """Add provider_id column to volumes."""
+ meta = MetaData()
+ meta.bind = migrate_engine
+
+ volumes = Table('volumes', meta, autoload=True)
+ provider_id = Column('provider_id', String(255))
+ volumes.create_column(provider_id)
+ volumes.update().values(provider_id=None).execute()
+
+
+def downgrade(migrate_engine):
+ """Remove provider_id column from volumes."""
+ meta = MetaData()
+ meta.bind = migrate_engine
+
+ volumes = Table('volumes', meta, autoload=True)
+ provider_id = volumes.columns.provider_id
+ volumes.drop_column(provider_id)
--- /dev/null
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from sqlalchemy import Column
+from sqlalchemy import MetaData, String, Table
+
+
+def upgrade(migrate_engine):
+ """Add provider_id column to snapshots."""
+ meta = MetaData()
+ meta.bind = migrate_engine
+
+ snapshots = Table('snapshots', meta, autoload=True)
+ provider_id = Column('provider_id', String(255))
+ snapshots.create_column(provider_id)
+ snapshots.update().values(provider_id=None).execute()
+
+
+def downgrade(migrate_engine):
+ """Remove provider_id column from snapshots."""
+ meta = MetaData()
+ meta.bind = migrate_engine
+
+ snapshots = Table('snapshots', meta, autoload=True)
+ provider_id = snapshots.columns.provider_id
+ snapshots.drop_column(provider_id)
provider_location = Column(String(255))
provider_auth = Column(String(255))
provider_geometry = Column(String(255))
+ provider_id = Column(String(255))
volume_type_id = Column(String(36))
source_volid = Column(String(36))
volume_type_id = Column(String(36))
provider_location = Column(String(255))
+ provider_id = Column(String(255))
volume = relationship(Volume, backref="snapshots",
foreign_keys=volume_id,
volume_types = db_utils.get_table(engine, 'volume_types')
self.assertNotIn('description', volume_types.c)
+ def _check_035(self, engine, data):
+ volumes = db_utils.get_table(engine, 'volumes')
+ self.assertIsInstance(volumes.c.provider_id.type,
+ sqlalchemy.types.VARCHAR)
+
+ def _post_downgrade_035(self, engine):
+ volumes = db_utils.get_table(engine, 'volumes')
+ self.assertNotIn('provider_id', volumes.c)
+
+ def _check_036(self, engine, data):
+ snapshots = db_utils.get_table(engine, 'snapshots')
+ self.assertIsInstance(snapshots.c.provider_id.type,
+ sqlalchemy.types.VARCHAR)
+
+ def _post_downgrade_036(self, engine):
+ snapshots = db_utils.get_table(engine, 'snapshots')
+ self.assertNotIn('provider_id', snapshots.c)
+
def test_walk_versions(self):
self.walk_versions(True, False)