# License for the specific language governing permissions and limitations
# under the License.
-from sqlalchemy import MetaData, Table
-
def upgrade(migrate_engine):
- meta = MetaData()
- meta.bind = migrate_engine
- table = Table('iscsi_targets', meta, autoload=True)
- table.drop()
+ # This used to drop iscsi_targets, but since dropping it before L release
+ # stops using it breaks rolling upgrades we postpone the dropping until N.
+ pass
--- /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 Boolean, Column, DateTime, ForeignKey
+from sqlalchemy import Integer, MetaData, String, Table
+
+
+def upgrade(migrate_engine):
+ meta = MetaData()
+ meta.bind = migrate_engine
+
+ table = Table(
+ 'iscsi_targets', meta,
+ Column('created_at', DateTime),
+ Column('updated_at', DateTime),
+ Column('deleted_at', DateTime),
+ Column('deleted', Boolean),
+ Column('id', Integer, primary_key=True, nullable=False),
+ Column('target_num', Integer),
+ Column('host', String(length=255)),
+ Column('volume_id', String(length=36), ForeignKey('volumes.id'),
+ nullable=True),
+ mysql_engine='InnoDB',
+ mysql_charset='utf8'
+ )
+
+ # We use checkfirst argument because this table may already exist if the
+ # migration is performed on a system that was on a migration earlier than
+ # 063 when performing the upgrade.
+ table.create(checkfirst=True)