Compact Liberty database migrations
This compacts all database migrations up to Liberty into one initial schema to remove the need to apply every database change along the way. Change-Id: Id3b43e0df3162e368007c705d249539047d5da08
This commit is contained in:
parent
205a850276
commit
38f2ad54b3
@ -28,7 +28,7 @@ from cinder import exception
|
|||||||
from cinder.i18n import _
|
from cinder.i18n import _
|
||||||
|
|
||||||
|
|
||||||
INIT_VERSION = 45
|
INIT_VERSION = 60
|
||||||
|
|
||||||
_IMPL = None
|
_IMPL = None
|
||||||
_LOCK = threading.Lock()
|
_LOCK = threading.Lock()
|
||||||
|
@ -1,44 +0,0 @@
|
|||||||
# 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 oslo_utils import timeutils
|
|
||||||
from sqlalchemy import MetaData, Table
|
|
||||||
|
|
||||||
|
|
||||||
# Get default value via config. The default will either
|
|
||||||
# come from the default value set in the quota configuration option
|
|
||||||
# or via cinder.conf if the user has configured
|
|
||||||
# default value for per volume size limit there.
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade(migrate_engine):
|
|
||||||
"""Add default "per_volume_gigabytes" row into DB."""
|
|
||||||
meta = MetaData()
|
|
||||||
meta.bind = migrate_engine
|
|
||||||
quota_classes = Table('quota_classes', meta, autoload=True)
|
|
||||||
row = quota_classes.count().\
|
|
||||||
where(quota_classes.c.resource == 'per_volume_gigabytes').\
|
|
||||||
execute().scalar()
|
|
||||||
|
|
||||||
# Do not add entry if there is already 'default' entry exists
|
|
||||||
# in the database.
|
|
||||||
# We don't want to write over something the user added.
|
|
||||||
if row:
|
|
||||||
return
|
|
||||||
|
|
||||||
# Set default per_volume_gigabytes for per volume size
|
|
||||||
qci = quota_classes.insert()
|
|
||||||
qci.execute({'created_at': timeutils.utcnow(),
|
|
||||||
'class_name': 'default',
|
|
||||||
'resource': 'per_volume_gigabytes',
|
|
||||||
'hard_limit': -1,
|
|
||||||
'deleted': False, })
|
|
@ -1,25 +0,0 @@
|
|||||||
# Copyright 2015 Yahoo Inc.
|
|
||||||
#
|
|
||||||
# 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, Integer, MetaData, Table
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade(migrate_engine):
|
|
||||||
meta = MetaData()
|
|
||||||
meta.bind = migrate_engine
|
|
||||||
quotas = Table('quotas', meta, autoload=True)
|
|
||||||
|
|
||||||
# Add a new column allocated to save allocated quota
|
|
||||||
allocated = Column('allocated', Integer, default=0)
|
|
||||||
quotas.create_column(allocated)
|
|
@ -1,31 +0,0 @@
|
|||||||
# Copyright (c) 2015 EMC Corporation
|
|
||||||
# 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 Column, MetaData, String, Table
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade(migrate_engine):
|
|
||||||
meta = MetaData()
|
|
||||||
meta.bind = migrate_engine
|
|
||||||
|
|
||||||
backups = Table('backups', meta, autoload=True)
|
|
||||||
temp_volume_id = Column('temp_volume_id', String(length=36))
|
|
||||||
temp_snapshot_id = Column('temp_snapshot_id', String(length=36))
|
|
||||||
|
|
||||||
backups.create_column(temp_volume_id)
|
|
||||||
backups.update().values(temp_volume_id=None).execute()
|
|
||||||
|
|
||||||
backups.create_column(temp_snapshot_id)
|
|
||||||
backups.update().values(temp_snapshot_id=None).execute()
|
|
@ -1,27 +0,0 @@
|
|||||||
# Copyright (c) 2015 EMC Corporation
|
|
||||||
# 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 Column, MetaData, String, Table
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade(migrate_engine):
|
|
||||||
meta = MetaData()
|
|
||||||
meta.bind = migrate_engine
|
|
||||||
|
|
||||||
volumes = Table('volumes', meta, autoload=True)
|
|
||||||
previous_status = Column('previous_status', String(length=255))
|
|
||||||
|
|
||||||
volumes.create_column(previous_status)
|
|
||||||
volumes.update().values(previous_status=None).execute()
|
|
@ -1,26 +0,0 @@
|
|||||||
# 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 source_cgid column to consistencygroups."""
|
|
||||||
meta = MetaData()
|
|
||||||
meta.bind = migrate_engine
|
|
||||||
|
|
||||||
consistencygroups = Table('consistencygroups', meta, autoload=True)
|
|
||||||
source_cgid = Column('source_cgid', String(36))
|
|
||||||
|
|
||||||
consistencygroups.create_column(source_cgid)
|
|
||||||
consistencygroups.update().values(source_cgid=None).execute()
|
|
@ -1,25 +0,0 @@
|
|||||||
# 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_auth column to snapshots."""
|
|
||||||
meta = MetaData()
|
|
||||||
meta.bind = migrate_engine
|
|
||||||
|
|
||||||
snapshots = Table('snapshots', meta, autoload=True)
|
|
||||||
provider_auth = Column('provider_auth', String(255))
|
|
||||||
snapshots.create_column(provider_auth)
|
|
||||||
snapshots.update().values(provider_auth=None).execute()
|
|
@ -1,36 +0,0 @@
|
|||||||
# Copyright (C) 2015 SimpliVity Corp.
|
|
||||||
# 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 Column
|
|
||||||
from sqlalchemy import MetaData, String, Table
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade(migrate_engine):
|
|
||||||
meta = MetaData()
|
|
||||||
meta.bind = migrate_engine
|
|
||||||
|
|
||||||
services = Table('services', meta, autoload=True)
|
|
||||||
rpc_current_version = Column('rpc_current_version', String(36))
|
|
||||||
rpc_available_version = Column('rpc_available_version', String(36))
|
|
||||||
object_current_version = Column('object_current_version', String(36))
|
|
||||||
object_available_version = Column('object_available_version', String(36))
|
|
||||||
services.create_column(rpc_current_version)
|
|
||||||
services.create_column(rpc_available_version)
|
|
||||||
services.create_column(object_current_version)
|
|
||||||
services.create_column(object_available_version)
|
|
||||||
services.update().values(rpc_current_version=None).execute()
|
|
||||||
services.update().values(rpc_available_version=None).execute()
|
|
||||||
services.update().values(object_current_version=None).execute()
|
|
||||||
services.update().values(object_available_version=None).execute()
|
|
@ -1,33 +0,0 @@
|
|||||||
# Copyright (c) 2015 Huawei Technologies Co., Ltd.
|
|
||||||
# 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 Column, Integer, MetaData, Table
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade(migrate_engine):
|
|
||||||
"""Add num_dependent_backups column to backups."""
|
|
||||||
meta = MetaData()
|
|
||||||
meta.bind = migrate_engine
|
|
||||||
|
|
||||||
backups = Table('backups', meta, autoload=True)
|
|
||||||
num_dependent_backups = Column('num_dependent_backups', Integer, default=0)
|
|
||||||
backups.create_column(num_dependent_backups)
|
|
||||||
backups_list = list(backups.select().execute())
|
|
||||||
for backup in backups_list:
|
|
||||||
dep_bks_list = list(backups.select().where(backups.columns.parent_id ==
|
|
||||||
backup.id).execute())
|
|
||||||
if dep_bks_list:
|
|
||||||
backups.update().where(backups.columns.id == backup.id).values(
|
|
||||||
num_dependent_backups=len(dep_bks_list)).execute()
|
|
@ -1,37 +0,0 @@
|
|||||||
# Copyright (C) 2015 Pure Storage, Inc.
|
|
||||||
#
|
|
||||||
# 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, Integer
|
|
||||||
from sqlalchemy import MetaData, String, Table
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade(migrate_engine):
|
|
||||||
meta = MetaData()
|
|
||||||
meta.bind = migrate_engine
|
|
||||||
|
|
||||||
# New table
|
|
||||||
image_volume_cache = Table(
|
|
||||||
'image_volume_cache_entries', meta,
|
|
||||||
Column('image_updated_at', DateTime(timezone=False)),
|
|
||||||
Column('id', Integer, primary_key=True, nullable=False),
|
|
||||||
Column('host', String(length=255), index=True, nullable=False),
|
|
||||||
Column('image_id', String(length=36), index=True, nullable=False),
|
|
||||||
Column('volume_id', String(length=36), nullable=False),
|
|
||||||
Column('size', Integer, nullable=False),
|
|
||||||
Column('last_used', DateTime, nullable=False),
|
|
||||||
mysql_engine='InnoDB',
|
|
||||||
mysql_charset='utf8'
|
|
||||||
)
|
|
||||||
|
|
||||||
image_volume_cache.create()
|
|
@ -1,19 +0,0 @@
|
|||||||
# 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.
|
|
||||||
|
|
||||||
# Do not use this number for new Mitaka work. New Mitaka work starts after
|
|
||||||
# all the placeholders.
|
|
||||||
# http://lists.openstack.org/pipermail/openstack-dev/2013-March/006827.html
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade(migrate_engine):
|
|
||||||
pass
|
|
@ -1,19 +0,0 @@
|
|||||||
# 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.
|
|
||||||
|
|
||||||
# Do not use this number for new Kilo work. New Kilo work starts after
|
|
||||||
# all the placeholders.
|
|
||||||
# http://lists.openstack.org/pipermail/openstack-dev/2013-March/006827.html
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade(migrate_engine):
|
|
||||||
pass
|
|
@ -1,19 +0,0 @@
|
|||||||
# 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.
|
|
||||||
|
|
||||||
# Do not use this number for new Kilo work. New Kilo work starts after
|
|
||||||
# all the placeholders.
|
|
||||||
# http://lists.openstack.org/pipermail/openstack-dev/2013-March/006827.html
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade(migrate_engine):
|
|
||||||
pass
|
|
@ -1,19 +0,0 @@
|
|||||||
# 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.
|
|
||||||
|
|
||||||
# Do not use this number for new Kilo work. New Kilo work starts after
|
|
||||||
# all the placeholders.
|
|
||||||
# http://lists.openstack.org/pipermail/openstack-dev/2013-March/006827.html
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade(migrate_engine):
|
|
||||||
pass
|
|
@ -1,19 +0,0 @@
|
|||||||
# 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.
|
|
||||||
|
|
||||||
# Do not use this number for new Kilo work. New Kilo work starts after
|
|
||||||
# all the placeholders.
|
|
||||||
# http://lists.openstack.org/pipermail/openstack-dev/2013-March/006827.html
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade(migrate_engine):
|
|
||||||
pass
|
|
@ -1,30 +0,0 @@
|
|||||||
# Copyright (c) 2015 EMC Corporation
|
|
||||||
# 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 Column, DateTime, MetaData, String, Table
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade(migrate_engine):
|
|
||||||
meta = MetaData()
|
|
||||||
meta.bind = migrate_engine
|
|
||||||
|
|
||||||
backups = Table('backups', meta, autoload=True)
|
|
||||||
snapshot_id = Column('snapshot_id', String(length=36))
|
|
||||||
data_timestamp = Column('data_timestamp', DateTime)
|
|
||||||
|
|
||||||
backups.create_column(snapshot_id)
|
|
||||||
|
|
||||||
backups.create_column(data_timestamp)
|
|
||||||
backups.update().values(data_timestamp=backups.c.created_at).execute()
|
|
@ -48,6 +48,10 @@ def define_tables(meta):
|
|||||||
Column('availability_zone', String(255)),
|
Column('availability_zone', String(255)),
|
||||||
Column('disabled_reason', String(255)),
|
Column('disabled_reason', String(255)),
|
||||||
Column('modified_at', DateTime(timezone=False)),
|
Column('modified_at', DateTime(timezone=False)),
|
||||||
|
Column('rpc_current_version', String(36)),
|
||||||
|
Column('rpc_available_version', String(36)),
|
||||||
|
Column('object_current_version', String(36)),
|
||||||
|
Column('object_available_version', String(36)),
|
||||||
mysql_engine='InnoDB',
|
mysql_engine='InnoDB',
|
||||||
mysql_charset='utf8'
|
mysql_charset='utf8'
|
||||||
)
|
)
|
||||||
@ -68,6 +72,7 @@ def define_tables(meta):
|
|||||||
Column('volume_type_id', String(255)),
|
Column('volume_type_id', String(255)),
|
||||||
Column('status', String(255)),
|
Column('status', String(255)),
|
||||||
Column('cgsnapshot_id', String(36)),
|
Column('cgsnapshot_id', String(36)),
|
||||||
|
Column('source_cgid', String(36)),
|
||||||
mysql_engine='InnoDB',
|
mysql_engine='InnoDB',
|
||||||
mysql_charset='utf8'
|
mysql_charset='utf8'
|
||||||
)
|
)
|
||||||
@ -128,6 +133,7 @@ def define_tables(meta):
|
|||||||
ForeignKey('consistencygroups.id')),
|
ForeignKey('consistencygroups.id')),
|
||||||
Column('provider_id', String(255)),
|
Column('provider_id', String(255)),
|
||||||
Column('multiattach', Boolean),
|
Column('multiattach', Boolean),
|
||||||
|
Column('previous_status', String(255)),
|
||||||
mysql_engine='InnoDB',
|
mysql_engine='InnoDB',
|
||||||
mysql_charset='utf8'
|
mysql_charset='utf8'
|
||||||
)
|
)
|
||||||
@ -176,6 +182,7 @@ def define_tables(meta):
|
|||||||
Column('cgsnapshot_id', String(36),
|
Column('cgsnapshot_id', String(36),
|
||||||
ForeignKey('cgsnapshots.id')),
|
ForeignKey('cgsnapshots.id')),
|
||||||
Column('provider_id', String(255)),
|
Column('provider_id', String(255)),
|
||||||
|
Column('provider_auth', String(255)),
|
||||||
mysql_engine='InnoDB',
|
mysql_engine='InnoDB',
|
||||||
mysql_charset='utf8'
|
mysql_charset='utf8'
|
||||||
)
|
)
|
||||||
@ -283,6 +290,7 @@ def define_tables(meta):
|
|||||||
Column('project_id', String(255)),
|
Column('project_id', String(255)),
|
||||||
Column('resource', String(255), nullable=False),
|
Column('resource', String(255), nullable=False),
|
||||||
Column('hard_limit', Integer),
|
Column('hard_limit', Integer),
|
||||||
|
Column('allocated', Integer, default=0),
|
||||||
mysql_engine='InnoDB',
|
mysql_engine='InnoDB',
|
||||||
mysql_charset='utf8'
|
mysql_charset='utf8'
|
||||||
)
|
)
|
||||||
@ -396,6 +404,11 @@ def define_tables(meta):
|
|||||||
Column('size', Integer()),
|
Column('size', Integer()),
|
||||||
Column('object_count', Integer()),
|
Column('object_count', Integer()),
|
||||||
Column('parent_id', String(36)),
|
Column('parent_id', String(36)),
|
||||||
|
Column('temp_volume_id', String(36)),
|
||||||
|
Column('temp_snapshot_id', String(36)),
|
||||||
|
Column('num_dependent_backups', Integer, default=0),
|
||||||
|
Column('snapshot_id', String(36)),
|
||||||
|
Column('data_timestamp', DateTime),
|
||||||
mysql_engine='InnoDB',
|
mysql_engine='InnoDB',
|
||||||
mysql_charset='utf8'
|
mysql_charset='utf8'
|
||||||
)
|
)
|
||||||
@ -475,6 +488,19 @@ def define_tables(meta):
|
|||||||
mysql_charset='utf8'
|
mysql_charset='utf8'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
image_volume_cache = Table(
|
||||||
|
'image_volume_cache_entries', meta,
|
||||||
|
Column('image_updated_at', DateTime(timezone=False)),
|
||||||
|
Column('id', Integer, primary_key=True, nullable=False),
|
||||||
|
Column('host', String(255), index=True, nullable=False),
|
||||||
|
Column('image_id', String(36), index=True, nullable=False),
|
||||||
|
Column('volume_id', String(36), nullable=False),
|
||||||
|
Column('size', Integer, nullable=False),
|
||||||
|
Column('last_used', DateTime, nullable=False),
|
||||||
|
mysql_engine='InnoDB',
|
||||||
|
mysql_charset='utf8'
|
||||||
|
)
|
||||||
|
|
||||||
return [consistencygroups,
|
return [consistencygroups,
|
||||||
cgsnapshots,
|
cgsnapshots,
|
||||||
volumes,
|
volumes,
|
||||||
@ -497,7 +523,8 @@ def define_tables(meta):
|
|||||||
transfers,
|
transfers,
|
||||||
encryption,
|
encryption,
|
||||||
volume_admin_metadata,
|
volume_admin_metadata,
|
||||||
initiator_data]
|
initiator_data,
|
||||||
|
image_volume_cache]
|
||||||
|
|
||||||
|
|
||||||
def upgrade(migrate_engine):
|
def upgrade(migrate_engine):
|
||||||
@ -535,7 +562,8 @@ def upgrade(migrate_engine):
|
|||||||
"transfers",
|
"transfers",
|
||||||
"encryption",
|
"encryption",
|
||||||
"volume_admin_metadata",
|
"volume_admin_metadata",
|
||||||
"driver_initiator_data"]
|
"driver_initiator_data",
|
||||||
|
"image_volume_cache_entries"]
|
||||||
|
|
||||||
migrate_engine.execute("SET foreign_key_checks = 0")
|
migrate_engine.execute("SET foreign_key_checks = 0")
|
||||||
for table in tables:
|
for table in tables:
|
||||||
@ -572,3 +600,8 @@ def upgrade(migrate_engine):
|
|||||||
'resource': 'consistencygroups',
|
'resource': 'consistencygroups',
|
||||||
'hard_limit': CONF.quota_consistencygroups,
|
'hard_limit': CONF.quota_consistencygroups,
|
||||||
'deleted': False, })
|
'deleted': False, })
|
||||||
|
qci.execute({'created_at': CREATED_AT,
|
||||||
|
'class_name': CLASS_NAME,
|
||||||
|
'resource': 'per_volume_gigabytes',
|
||||||
|
'hard_limit': -1,
|
||||||
|
'deleted': False, })
|
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
upgrade:
|
||||||
|
- The Cinder database can now only be upgraded from changes since the
|
||||||
|
Liberty release. In order to upgrade from a version prior to that,
|
||||||
|
you must now upgrade to at least Liberty first, then to Ocata or
|
||||||
|
later.
|
Loading…
Reference in New Issue
Block a user