Modified migrations
This commit is contained in:
parent
b8483b2644
commit
ee02160854
manila/db/sqlalchemy/migrate_repo/versions
001_manila_init.py003_add_share_tables.py003_glance_metadata.py004_add_share_snapshot_table.py004_volume_type_to_uuid.py005_add_source_volume_column.py005_sqlite_downgrade.sql006_snapshots_add_provider_location.py007_add_volume_snapshot_fk.py007_sqlite_downgrade.sql008_add_backup.py009_add_snapshot_metadata_table.py
@ -105,94 +105,6 @@ def upgrade(migrate_engine):
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
|
||||
snapshots = Table(
|
||||
'snapshots', meta,
|
||||
Column('created_at', DateTime),
|
||||
Column('updated_at', DateTime),
|
||||
Column('deleted_at', DateTime),
|
||||
Column('deleted', Boolean),
|
||||
Column('id', String(length=36), primary_key=True, nullable=False),
|
||||
Column('volume_id', String(length=36), nullable=False),
|
||||
Column('user_id', String(length=255)),
|
||||
Column('project_id', String(length=255)),
|
||||
Column('status', String(length=255)),
|
||||
Column('progress', String(length=255)),
|
||||
Column('volume_size', Integer),
|
||||
Column('scheduled_at', DateTime),
|
||||
Column('display_name', String(length=255)),
|
||||
Column('display_description', String(length=255)),
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
|
||||
volume_types = Table(
|
||||
'volume_types', 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('name', String(length=255)),
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
|
||||
volume_metadata = Table(
|
||||
'volume_metadata', 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('volume_id', String(length=36), ForeignKey('volumes.id'),
|
||||
nullable=False),
|
||||
Column('key', String(length=255)),
|
||||
Column('value', String(length=255)),
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
|
||||
volume_type_extra_specs = Table(
|
||||
'volume_type_extra_specs', 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('volume_type_id', Integer, ForeignKey('volume_types.id'),
|
||||
nullable=False),
|
||||
Column('key', String(length=255)),
|
||||
Column('value', String(length=255)),
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
|
||||
volumes = Table(
|
||||
'volumes', meta,
|
||||
Column('created_at', DateTime),
|
||||
Column('updated_at', DateTime),
|
||||
Column('deleted_at', DateTime),
|
||||
Column('deleted', Boolean),
|
||||
Column('id', String(length=36), primary_key=True, nullable=False),
|
||||
Column('ec2_id', String(length=255)),
|
||||
Column('user_id', String(length=255)),
|
||||
Column('project_id', String(length=255)),
|
||||
Column('host', String(length=255)),
|
||||
Column('size', Integer),
|
||||
Column('availability_zone', String(length=255)),
|
||||
Column('instance_uuid', String(length=36)),
|
||||
Column('mountpoint', String(length=255)),
|
||||
Column('attach_time', String(length=255)),
|
||||
Column('status', String(length=255)),
|
||||
Column('attach_status', String(length=255)),
|
||||
Column('scheduled_at', DateTime),
|
||||
Column('launched_at', DateTime),
|
||||
Column('terminated_at', DateTime),
|
||||
Column('display_name', String(length=255)),
|
||||
Column('display_description', String(length=255)),
|
||||
Column('provider_location', String(length=256)),
|
||||
Column('provider_auth', String(length=256)),
|
||||
Column('snapshot_id', String(length=36)),
|
||||
Column('volume_type_id', Integer),
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
|
||||
quotas = Table(
|
||||
'quotas', meta,
|
||||
Column('id', Integer, primary_key=True, nullable=False),
|
||||
@ -206,34 +118,14 @@ def upgrade(migrate_engine):
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
|
||||
iscsi_targets = 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'
|
||||
)
|
||||
|
||||
# create all tables
|
||||
# Take care on create order for those with FK dependencies
|
||||
tables = [sm_flavors,
|
||||
sm_backend_config,
|
||||
snapshots,
|
||||
volume_types,
|
||||
volumes,
|
||||
iscsi_targets,
|
||||
migrations,
|
||||
quotas,
|
||||
services,
|
||||
sm_volume,
|
||||
volume_metadata,
|
||||
volume_type_extra_specs]
|
||||
sm_volume]
|
||||
|
||||
for table in tables:
|
||||
try:
|
||||
@ -246,17 +138,11 @@ def upgrade(migrate_engine):
|
||||
if migrate_engine.name == "mysql":
|
||||
tables = ["sm_flavors",
|
||||
"sm_backend_config",
|
||||
"snapshots",
|
||||
"volume_types",
|
||||
"volumes",
|
||||
"iscsi_targets",
|
||||
"migrate_version",
|
||||
"migrations",
|
||||
"quotas",
|
||||
"services",
|
||||
"sm_volume",
|
||||
"volume_metadata",
|
||||
"volume_type_extra_specs"]
|
||||
"sm_volume"]
|
||||
|
||||
sql = "SET foreign_key_checks = 0;"
|
||||
for table in tables:
|
@ -1,78 +0,0 @@
|
||||
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
||||
|
||||
# Copyright 2012 OpenStack LLC.
|
||||
#
|
||||
# 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, DateTime, Text, Boolean
|
||||
from sqlalchemy import MetaData, Integer, String, Table, ForeignKey
|
||||
|
||||
from manila.openstack.common import log as logging
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
meta = MetaData()
|
||||
meta.bind = migrate_engine
|
||||
|
||||
# Just for the ForeignKey and column creation to succeed, these are not the
|
||||
# actual definitions of tables .
|
||||
#
|
||||
volumes = Table('volumes',
|
||||
meta,
|
||||
Column('id', Integer(),
|
||||
primary_key=True, nullable=False),
|
||||
mysql_engine='InnoDB')
|
||||
snapshots = Table('snapshots',
|
||||
meta,
|
||||
Column('id', Integer(),
|
||||
primary_key=True, nullable=False),
|
||||
mysql_engine='InnoDB')
|
||||
# Create new table
|
||||
volume_glance_metadata = Table(
|
||||
'volume_glance_metadata',
|
||||
meta,
|
||||
Column('created_at', DateTime(timezone=False)),
|
||||
Column('updated_at', DateTime(timezone=False)),
|
||||
Column('deleted_at', DateTime(timezone=False)),
|
||||
Column('deleted', Boolean(create_constraint=True, name=None)),
|
||||
Column('id', Integer(), primary_key=True, nullable=False),
|
||||
Column('volume_id', String(length=36), ForeignKey('volumes.id')),
|
||||
Column('snapshot_id', String(length=36),
|
||||
ForeignKey('snapshots.id')),
|
||||
Column('key', String(255)),
|
||||
Column('value', Text),
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
|
||||
try:
|
||||
volume_glance_metadata.create()
|
||||
except Exception:
|
||||
LOG.exception(_("Exception while creating table "
|
||||
"'volume_glance_metedata'"))
|
||||
meta.drop_all(tables=[volume_glance_metadata])
|
||||
raise
|
||||
|
||||
|
||||
def downgrade(migrate_engine):
|
||||
meta = MetaData()
|
||||
meta.bind = migrate_engine
|
||||
|
||||
volume_glance_metadata = Table('volume_glance_metadata',
|
||||
meta, autoload=True)
|
||||
try:
|
||||
volume_glance_metadata.drop()
|
||||
except Exception:
|
||||
LOG.error(_("volume_glance_metadata table not dropped"))
|
||||
raise
|
@ -1,155 +0,0 @@
|
||||
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
||||
|
||||
# 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.
|
||||
|
||||
import uuid
|
||||
|
||||
from manila.openstack.common import log as logging
|
||||
from migrate import ForeignKeyConstraint
|
||||
from sqlalchemy import Integer, MetaData, String, Table
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
"""Convert volume_type_id to UUID."""
|
||||
meta = MetaData()
|
||||
meta.bind = migrate_engine
|
||||
|
||||
volumes = Table('volumes', meta, autoload=True)
|
||||
volume_types = Table('volume_types', meta, autoload=True)
|
||||
extra_specs = Table('volume_type_extra_specs', meta, autoload=True)
|
||||
|
||||
fkey_remove_list = [volumes.c.volume_type_id,
|
||||
volume_types.c.id,
|
||||
extra_specs.c.volume_type_id]
|
||||
|
||||
for column in fkey_remove_list:
|
||||
fkeys = list(column.foreign_keys)
|
||||
if fkeys:
|
||||
fkey_name = fkeys[0].constraint.name
|
||||
fkey = ForeignKeyConstraint(columns=[column],
|
||||
refcolumns=[volume_types.c.id],
|
||||
name=fkey_name)
|
||||
|
||||
try:
|
||||
fkey.drop()
|
||||
except Exception:
|
||||
if migrate_engine.url.get_dialect().name.startswith('sqlite'):
|
||||
pass
|
||||
else:
|
||||
raise
|
||||
|
||||
volumes.c.volume_type_id.alter(String(36))
|
||||
volume_types.c.id.alter(String(36))
|
||||
extra_specs.c.volume_type_id.alter(String(36))
|
||||
|
||||
vtype_list = list(volume_types.select().execute())
|
||||
for t in vtype_list:
|
||||
new_id = str(uuid.uuid4())
|
||||
|
||||
volumes.update().\
|
||||
where(volumes.c.volume_type_id == t['id']).\
|
||||
values(volume_type_id=new_id).execute()
|
||||
|
||||
extra_specs.update().\
|
||||
where(extra_specs.c.volume_type_id == t['id']).\
|
||||
values(volume_type_id=new_id).execute()
|
||||
|
||||
volume_types.update().\
|
||||
where(volume_types.c.id == t['id']).\
|
||||
values(id=new_id).execute()
|
||||
|
||||
for column in fkey_remove_list:
|
||||
fkeys = list(column.foreign_keys)
|
||||
if fkeys:
|
||||
fkey_name = fkeys[0].constraint.name
|
||||
fkey = ForeignKeyConstraint(columns=[column],
|
||||
refcolumns=[volume_types.c.id],
|
||||
name=fkey_name)
|
||||
try:
|
||||
fkey.create()
|
||||
LOG.info('Created foreign key %s' % fkey_name)
|
||||
except Exception:
|
||||
if migrate_engine.url.get_dialect().name.startswith('sqlite'):
|
||||
pass
|
||||
else:
|
||||
raise
|
||||
|
||||
|
||||
def downgrade(migrate_engine):
|
||||
"""Convert volume_type from UUID back to int."""
|
||||
meta = MetaData()
|
||||
meta.bind = migrate_engine
|
||||
|
||||
volumes = Table('volumes', meta, autoload=True)
|
||||
volume_types = Table('volume_types', meta, autoload=True)
|
||||
extra_specs = Table('volume_type_extra_specs', meta, autoload=True)
|
||||
|
||||
fkey_remove_list = [volumes.c.volume_type_id,
|
||||
volume_types.c.id,
|
||||
extra_specs.c.volume_type_id]
|
||||
|
||||
for column in fkey_remove_list:
|
||||
fkeys = list(column.foreign_keys)
|
||||
if fkeys:
|
||||
fkey_name = fkeys[0].constraint.name
|
||||
fkey = ForeignKeyConstraint(columns=[column],
|
||||
refcolumns=[volume_types.c.id],
|
||||
name=fkey_name)
|
||||
|
||||
try:
|
||||
fkey.drop()
|
||||
except Exception:
|
||||
if migrate_engine.url.get_dialect().name.startswith('sqlite'):
|
||||
pass
|
||||
else:
|
||||
raise
|
||||
|
||||
vtype_list = list(volume_types.select().execute())
|
||||
new_id = 1
|
||||
|
||||
for t in vtype_list:
|
||||
volumes.update().\
|
||||
where(volumes.c.volume_type_id == t['id']).\
|
||||
values(volume_type_id=new_id).execute()
|
||||
|
||||
extra_specs.update().\
|
||||
where(extra_specs.c.volume_type_id == t['id']).\
|
||||
values(volume_type_id=new_id).execute()
|
||||
|
||||
volume_types.update().\
|
||||
where(volume_types.c.id == t['id']).\
|
||||
values(id=new_id).execute()
|
||||
|
||||
new_id += 1
|
||||
|
||||
volumes.c.volume_type_id.alter(Integer)
|
||||
volume_types.c.id.alter(Integer)
|
||||
extra_specs.c.volume_type_id.alter(Integer)
|
||||
|
||||
for column in fkey_remove_list:
|
||||
fkeys = list(column.foreign_keys)
|
||||
if fkeys:
|
||||
fkey_name = fkeys[0].constraint.name
|
||||
fkey = ForeignKeyConstraint(columns=[column],
|
||||
refcolumns=[volume_types.c.id],
|
||||
name=fkey_name)
|
||||
try:
|
||||
fkey.create()
|
||||
LOG.info('Created foreign key %s' % fkey_name)
|
||||
except Exception:
|
||||
if migrate_engine.url.get_dialect().name.startswith('sqlite'):
|
||||
pass
|
||||
else:
|
||||
raise
|
@ -1,41 +0,0 @@
|
||||
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
||||
|
||||
# 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 manila.openstack.common import log as logging
|
||||
from sqlalchemy import Column
|
||||
from sqlalchemy import MetaData, String, Table
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
"""Add source volume id column to volumes."""
|
||||
meta = MetaData()
|
||||
meta.bind = migrate_engine
|
||||
|
||||
volumes = Table('volumes', meta, autoload=True)
|
||||
source_volid = Column('source_volid', String(36))
|
||||
volumes.create_column(source_volid)
|
||||
volumes.update().values(source_volid=None).execute()
|
||||
|
||||
|
||||
def downgrade(migrate_engine):
|
||||
"""Remove source volume id column to volumes."""
|
||||
meta = MetaData()
|
||||
meta.bind = migrate_engine
|
||||
|
||||
volumes = Table('volumes', meta, autoload=True)
|
||||
source_volid = Column('source_volid', String(36))
|
||||
volumes.drop_column(source_volid)
|
@ -1,124 +0,0 @@
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
CREATE TEMPORARY TABLE volumes_backup (
|
||||
created_at DATETIME,
|
||||
updated_at DATETIME,
|
||||
deleted_at DATETIME,
|
||||
deleted BOOLEAN,
|
||||
id VARCHAR(36) NOT NULL,
|
||||
ec2_id VARCHAR(255),
|
||||
user_id VARCHAR(255),
|
||||
project_id VARCHAR(255),
|
||||
host VARCHAR(255),
|
||||
size INTEGER,
|
||||
availability_zone VARCHAR(255),
|
||||
instance_uuid VARCHAR(36),
|
||||
mountpoint VARCHAR(255),
|
||||
attach_time VARCHAR(255),
|
||||
status VARCHAR(255),
|
||||
attach_status VARCHAR(255),
|
||||
scheduled_at DATETIME,
|
||||
launched_at DATETIME,
|
||||
terminated_at DATETIME,
|
||||
display_name VARCHAR(255),
|
||||
display_description VARCHAR(255),
|
||||
provider_location VARCHAR(256),
|
||||
provider_auth VARCHAR(256),
|
||||
snapshot_id VARCHAR(36),
|
||||
volume_type_id VARCHAR(36),
|
||||
source_volid VARCHAR(36),
|
||||
PRIMARY KEY (id),
|
||||
CHECK (deleted IN (0, 1))
|
||||
);
|
||||
|
||||
INSERT INTO volumes_backup
|
||||
SELECT created_at,
|
||||
updated_at,
|
||||
deleted_at,
|
||||
deleted,
|
||||
id,
|
||||
ec2_id,
|
||||
user_id,
|
||||
project_id,
|
||||
host,
|
||||
size,
|
||||
availability_zone,
|
||||
instance_uuid,
|
||||
mountpoint,
|
||||
attach_time,
|
||||
status,
|
||||
attach_status,
|
||||
scheduled_at,
|
||||
launched_at,
|
||||
terminated_at,
|
||||
display_name,
|
||||
display_description,
|
||||
provider_location,
|
||||
provider_auth,
|
||||
snapshot_id,
|
||||
volume_type_id,
|
||||
source_volid
|
||||
FROM volumes;
|
||||
|
||||
DROP TABLE volumes;
|
||||
|
||||
CREATE TABLE volumes (
|
||||
created_at DATETIME,
|
||||
updated_at DATETIME,
|
||||
deleted_at DATETIME,
|
||||
deleted BOOLEAN,
|
||||
id VARCHAR(36) NOT NULL,
|
||||
ec2_id VARCHAR(255),
|
||||
user_id VARCHAR(255),
|
||||
project_id VARCHAR(255),
|
||||
host VARCHAR(255),
|
||||
size INTEGER,
|
||||
availability_zone VARCHAR(255),
|
||||
instance_uuid VARCHAR(36),
|
||||
mountpoint VARCHAR(255),
|
||||
attach_time VARCHAR(255),
|
||||
status VARCHAR(255),
|
||||
attach_status VARCHAR(255),
|
||||
scheduled_at DATETIME,
|
||||
launched_at DATETIME,
|
||||
terminated_at DATETIME,
|
||||
display_name VARCHAR(255),
|
||||
display_description VARCHAR(255),
|
||||
provider_location VARCHAR(256),
|
||||
provider_auth VARCHAR(256),
|
||||
snapshot_id VARCHAR(36),
|
||||
volume_type_id VARCHAR(36),
|
||||
PRIMARY KEY (id),
|
||||
CHECK (deleted IN (0, 1))
|
||||
);
|
||||
|
||||
INSERT INTO volumes
|
||||
SELECT created_at,
|
||||
updated_at,
|
||||
deleted_at,
|
||||
deleted,
|
||||
id,
|
||||
ec2_id,
|
||||
user_id,
|
||||
project_id,
|
||||
host,
|
||||
size,
|
||||
availability_zone,
|
||||
instance_uuid,
|
||||
mountpoint,
|
||||
attach_time,
|
||||
status,
|
||||
attach_status,
|
||||
scheduled_at,
|
||||
launched_at,
|
||||
terminated_at,
|
||||
display_name,
|
||||
display_description,
|
||||
provider_location,
|
||||
provider_auth,
|
||||
snapshot_id,
|
||||
volume_type_id
|
||||
FROM volumes_backup;
|
||||
|
||||
DROP TABLE volumes_backup;
|
||||
COMMIT;
|
@ -1,36 +0,0 @@
|
||||
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
||||
|
||||
# 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):
|
||||
meta = MetaData()
|
||||
meta.bind = migrate_engine
|
||||
|
||||
snapshots = Table('snapshots', meta, autoload=True)
|
||||
provider_location = Column('provider_location', String(255))
|
||||
snapshots.create_column(provider_location)
|
||||
snapshots.update().values(provider_location=None).execute()
|
||||
|
||||
|
||||
def downgrade(migrate_engine):
|
||||
meta = MetaData()
|
||||
meta.bind = migrate_engine
|
||||
|
||||
snapshots = Table('snapshots', meta, autoload=True)
|
||||
provider_location = snapshots.columns.provider_location
|
||||
snapshots.drop_column(provider_location)
|
@ -1,41 +0,0 @@
|
||||
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
||||
|
||||
# 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 MetaData, Table
|
||||
from migrate.changeset.constraint import ForeignKeyConstraint
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
meta = MetaData()
|
||||
meta.bind = migrate_engine
|
||||
|
||||
snapshots = Table('snapshots', meta, autoload=True)
|
||||
volumes = Table('volumes', meta, autoload=True)
|
||||
|
||||
ForeignKeyConstraint(
|
||||
columns=[snapshots.c.volume_id],
|
||||
refcolumns=[volumes.c.id]).create()
|
||||
|
||||
|
||||
def downgrade(migrate_engine):
|
||||
meta = MetaData()
|
||||
meta.bind = migrate_engine
|
||||
|
||||
snapshots = Table('snapshots', meta, autoload=True)
|
||||
volumes = Table('volumes', meta, autoload=True)
|
||||
|
||||
ForeignKeyConstraint(
|
||||
columns=[snapshots.c.volume_id],
|
||||
refcolumns=[volumes.c.id]).drop()
|
@ -1,32 +0,0 @@
|
||||
-- As sqlite does not support the DROP FOREIGN KEY, we need to create
|
||||
-- the table, and move all the data to it.
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
CREATE TABLE snapshots_v6 (
|
||||
created_at DATETIME,
|
||||
updated_at DATETIME,
|
||||
deleted_at DATETIME,
|
||||
deleted BOOLEAN,
|
||||
id VARCHAR(36) NOT NULL,
|
||||
volume_id VARCHAR(36) NOT NULL,
|
||||
user_id VARCHAR(255),
|
||||
project_id VARCHAR(255),
|
||||
status VARCHAR(255),
|
||||
progress VARCHAR(255),
|
||||
volume_size INTEGER,
|
||||
scheduled_at DATETIME,
|
||||
display_name VARCHAR(255),
|
||||
display_description VARCHAR(255),
|
||||
provider_location VARCHAR(255),
|
||||
PRIMARY KEY (id),
|
||||
CHECK (deleted IN (0, 1))
|
||||
);
|
||||
|
||||
INSERT INTO snapshots_v6 SELECT * FROM snapshots;
|
||||
|
||||
DROP TABLE snapshots;
|
||||
|
||||
ALTER TABLE snapshots_v6 RENAME TO snapshots;
|
||||
|
||||
COMMIT;
|
@ -1,95 +0,0 @@
|
||||
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
||||
|
||||
# Copyright (C) 2012 Hewlett-Packard Development Company, L.P.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# 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
|
||||
from sqlalchemy import MetaData, Integer, String, Table
|
||||
|
||||
from manila.openstack.common import log as logging
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
meta = MetaData()
|
||||
meta.bind = migrate_engine
|
||||
|
||||
# New table
|
||||
backups = Table(
|
||||
'backups', meta,
|
||||
Column('created_at', DateTime(timezone=False)),
|
||||
Column('updated_at', DateTime(timezone=False)),
|
||||
Column('deleted_at', DateTime(timezone=False)),
|
||||
Column('deleted', Boolean(create_constraint=True, name=None)),
|
||||
Column('id', String(36), primary_key=True, nullable=False),
|
||||
Column('volume_id', String(36), nullable=False),
|
||||
Column('user_id', String(length=255, convert_unicode=False,
|
||||
unicode_error=None,
|
||||
_warn_on_bytestring=False)),
|
||||
Column('project_id', String(length=255, convert_unicode=False,
|
||||
unicode_error=None,
|
||||
_warn_on_bytestring=False)),
|
||||
Column('host', String(length=255, convert_unicode=False,
|
||||
unicode_error=None,
|
||||
_warn_on_bytestring=False)),
|
||||
Column('availability_zone', String(length=255,
|
||||
convert_unicode=False,
|
||||
unicode_error=None,
|
||||
_warn_on_bytestring=False)),
|
||||
Column('display_name', String(length=255, convert_unicode=False,
|
||||
unicode_error=None,
|
||||
_warn_on_bytestring=False)),
|
||||
Column('display_description', String(length=255,
|
||||
convert_unicode=False,
|
||||
unicode_error=None,
|
||||
_warn_on_bytestring=False)),
|
||||
Column('container', String(length=255, convert_unicode=False,
|
||||
unicode_error=None,
|
||||
_warn_on_bytestring=False)),
|
||||
Column('status', String(length=255, convert_unicode=False,
|
||||
unicode_error=None,
|
||||
_warn_on_bytestring=False)),
|
||||
Column('fail_reason', String(length=255, convert_unicode=False,
|
||||
unicode_error=None,
|
||||
_warn_on_bytestring=False)),
|
||||
Column('service_metadata', String(length=255, convert_unicode=False,
|
||||
unicode_error=None,
|
||||
_warn_on_bytestring=False)),
|
||||
Column('service', String(length=255, convert_unicode=False,
|
||||
unicode_error=None,
|
||||
_warn_on_bytestring=False)),
|
||||
Column('size', Integer()),
|
||||
Column('object_count', Integer()),
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
|
||||
try:
|
||||
backups.create()
|
||||
except Exception:
|
||||
LOG.error(_("Table |%s| not created!"), repr(backups))
|
||||
raise
|
||||
|
||||
|
||||
def downgrade(migrate_engine):
|
||||
meta = MetaData()
|
||||
meta.bind = migrate_engine
|
||||
|
||||
backups = Table('backups', meta, autoload=True)
|
||||
try:
|
||||
backups.drop()
|
||||
except Exception:
|
||||
LOG.error(_("backups table not dropped"))
|
||||
raise
|
@ -1,60 +0,0 @@
|
||||
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
||||
|
||||
# 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
|
||||
from sqlalchemy import Integer, MetaData, String, Table, ForeignKey
|
||||
|
||||
from manila.openstack.common import log as logging
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
meta = MetaData()
|
||||
meta.bind = migrate_engine
|
||||
|
||||
snapshots = Table('snapshots', meta, autoload=True)
|
||||
|
||||
# New table
|
||||
snapshot_metadata = Table(
|
||||
'snapshot_metadata', 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('snapshot_id', String(length=36), ForeignKey('snapshots.id'),
|
||||
nullable=False),
|
||||
Column('key', String(length=255)),
|
||||
Column('value', String(length=255)),
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
|
||||
try:
|
||||
snapshot_metadata.create()
|
||||
except Exception:
|
||||
LOG.error(_("Table |%s| not created!"), repr(snapshot_metadata))
|
||||
raise
|
||||
|
||||
|
||||
def downgrade(migrate_engine):
|
||||
meta = MetaData()
|
||||
meta.bind = migrate_engine
|
||||
snapshot_metadata = Table('snapshot_metadata',
|
||||
meta,
|
||||
autoload=True)
|
||||
try:
|
||||
snapshot_metadata.drop()
|
||||
except Exception:
|
||||
LOG.error(_("snapshot_metadata table not dropped"))
|
Loading…
x
Reference in New Issue
Block a user