Merge "db: Compact Icehouse database migrations"
This commit is contained in:
commit
7341355301
@ -1,22 +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.
|
||||
|
||||
# This is a placeholder for Havana backports.
|
||||
# Do not use this number for new Icehouse work. New Icehouse work starts after
|
||||
# all the placeholders.
|
||||
#
|
||||
# See blueprint backportable-db-migrations-icehouse
|
||||
# http://lists.openstack.org/pipermail/openstack-dev/2013-March/006827.html
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
pass
|
@ -1,22 +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.
|
||||
|
||||
# This is a placeholder for Havana backports.
|
||||
# Do not use this number for new Icehouse work. New Icehouse work starts after
|
||||
# all the placeholders.
|
||||
#
|
||||
# See blueprint backportable-db-migrations-icehouse
|
||||
# http://lists.openstack.org/pipermail/openstack-dev/2013-March/006827.html
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
pass
|
@ -1,22 +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.
|
||||
|
||||
# This is a placeholder for Havana backports.
|
||||
# Do not use this number for new Icehouse work. New Icehouse work starts after
|
||||
# all the placeholders.
|
||||
#
|
||||
# See blueprint backportable-db-migrations-icehouse
|
||||
# http://lists.openstack.org/pipermail/openstack-dev/2013-March/006827.html
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
pass
|
@ -1,22 +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.
|
||||
|
||||
# This is a placeholder for Havana backports.
|
||||
# Do not use this number for new Icehouse work. New Icehouse work starts after
|
||||
# all the placeholders.
|
||||
#
|
||||
# See blueprint backportable-db-migrations-icehouse
|
||||
# http://lists.openstack.org/pipermail/openstack-dev/2013-March/006827.html
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
pass
|
@ -1,22 +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.
|
||||
|
||||
# This is a placeholder for Havana backports.
|
||||
# Do not use this number for new Icehouse work. New Icehouse work starts after
|
||||
# all the placeholders.
|
||||
#
|
||||
# See blueprint backportable-db-migrations-icehouse
|
||||
# http://lists.openstack.org/pipermail/openstack-dev/2013-March/006827.html
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
pass
|
@ -1,22 +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.
|
||||
|
||||
# This is a placeholder for Havana backports.
|
||||
# Do not use this number for new Icehouse work. New Icehouse work starts after
|
||||
# all the placeholders.
|
||||
#
|
||||
# See blueprint backportable-db-migrations-icehouse
|
||||
# http://lists.openstack.org/pipermail/openstack-dev/2013-March/006827.html
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
pass
|
@ -1,22 +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.
|
||||
|
||||
# This is a placeholder for Havana backports.
|
||||
# Do not use this number for new Icehouse work. New Icehouse work starts after
|
||||
# all the placeholders.
|
||||
#
|
||||
# See blueprint backportable-db-migrations-icehouse
|
||||
# http://lists.openstack.org/pipermail/openstack-dev/2013-March/006827.html
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
pass
|
@ -1,22 +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.
|
||||
|
||||
# This is a placeholder for Havana backports.
|
||||
# Do not use this number for new Icehouse work. New Icehouse work starts after
|
||||
# all the placeholders.
|
||||
#
|
||||
# See blueprint backportable-db-migrations-icehouse
|
||||
# http://lists.openstack.org/pipermail/openstack-dev/2013-March/006827.html
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
pass
|
@ -1,22 +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.
|
||||
|
||||
# This is a placeholder for Havana backports.
|
||||
# Do not use this number for new Icehouse work. New Icehouse work starts after
|
||||
# all the placeholders.
|
||||
#
|
||||
# See blueprint backportable-db-migrations-icehouse
|
||||
# http://lists.openstack.org/pipermail/openstack-dev/2013-March/006827.html
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
pass
|
@ -1,22 +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.
|
||||
|
||||
# This is a placeholder for Havana backports.
|
||||
# Do not use this number for new Icehouse work. New Icehouse work starts after
|
||||
# all the placeholders.
|
||||
#
|
||||
# See blueprint backportable-db-migrations-icehouse
|
||||
# http://lists.openstack.org/pipermail/openstack-dev/2013-March/006827.html
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
pass
|
@ -1,30 +0,0 @@
|
||||
# Copyright 2013 NEC Corporation
|
||||
#
|
||||
# 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, String, Table
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
meta = MetaData(bind=migrate_engine)
|
||||
table = Table('project_user_quotas', meta, autoload=True)
|
||||
col_resource = getattr(table.c, 'resource')
|
||||
|
||||
if col_resource.type.length == 25:
|
||||
# The resource of project_user_quotas table had been changed to
|
||||
# invalid length(25) since I56ad98d3702f53fe8cfa94093fea89074f7a5e90.
|
||||
# The following code fixes the length for the environments which are
|
||||
# deployed after I56ad98d3702f53fe8cfa94093fea89074f7a5e90.
|
||||
col_resource.alter(type=String(255))
|
||||
table.update().where(table.c.resource == 'injected_file_content_byt')\
|
||||
.values(resource='injected_file_content_bytes').execute()
|
@ -1,32 +0,0 @@
|
||||
# Copyright 2013 Intel Corporation
|
||||
#
|
||||
# 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
|
||||
from sqlalchemy import Table
|
||||
from sqlalchemy import Text
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
meta = MetaData()
|
||||
meta.bind = migrate_engine
|
||||
|
||||
# Add a new column metrics to save metrics info for compute nodes
|
||||
compute_nodes = Table('compute_nodes', meta, autoload=True)
|
||||
shadow_compute_nodes = Table('shadow_compute_nodes', meta, autoload=True)
|
||||
|
||||
metrics = Column('metrics', Text, nullable=True)
|
||||
shadow_metrics = Column('metrics', Text, nullable=True)
|
||||
compute_nodes.create_column(metrics)
|
||||
shadow_compute_nodes.create_column(shadow_metrics)
|
@ -1,35 +0,0 @@
|
||||
# Copyright (c) 2013 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 Column
|
||||
from sqlalchemy import MetaData
|
||||
from sqlalchemy import Table
|
||||
from sqlalchemy import Text
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
meta = MetaData()
|
||||
meta.bind = migrate_engine
|
||||
|
||||
# Add a new column extra_resources to save extra_resources info for
|
||||
# compute nodes
|
||||
compute_nodes = Table('compute_nodes', meta, autoload=True)
|
||||
shadow_compute_nodes = Table('shadow_compute_nodes', meta, autoload=True)
|
||||
|
||||
extra_resources = Column('extra_resources', Text, nullable=True)
|
||||
shadow_extra_resources = Column('extra_resources', Text, nullable=True)
|
||||
compute_nodes.create_column(extra_resources)
|
||||
shadow_compute_nodes.create_column(shadow_extra_resources)
|
@ -1,30 +0,0 @@
|
||||
# Copyright 2013 OpenStack Foundation.
|
||||
#
|
||||
# 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_db.sqlalchemy import utils
|
||||
from sqlalchemy import Column, String, Text
|
||||
|
||||
from nova.db.sqlalchemy import api
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
actions_events = utils.get_table(migrate_engine, 'instance_actions_events')
|
||||
host = Column('host', String(255))
|
||||
details = Column('details', Text)
|
||||
actions_events.create_column(host)
|
||||
actions_events.create_column(details)
|
||||
shadow_actions_events = utils.get_table(migrate_engine,
|
||||
api._SHADOW_TABLE_PREFIX + 'instance_actions_events')
|
||||
shadow_actions_events.create_column(host.copy())
|
||||
shadow_actions_events.create_column(details.copy())
|
@ -1,34 +0,0 @@
|
||||
# Copyright (c) 2014 The Johns Hopkins University/Applied Physics Laboratory
|
||||
# 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 MetaData, Column, Table
|
||||
from sqlalchemy import String
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
"""Function adds ephemeral storage encryption key uuid field."""
|
||||
meta = MetaData(bind=migrate_engine)
|
||||
|
||||
instances = Table('instances', meta, autoload=True)
|
||||
shadow_instances = Table('shadow_instances', meta, autoload=True)
|
||||
|
||||
ephemeral_key_uuid = Column('ephemeral_key_uuid', String(36))
|
||||
instances.create_column(ephemeral_key_uuid)
|
||||
shadow_instances.create_column(ephemeral_key_uuid.copy())
|
||||
|
||||
migrate_engine.execute(instances.update().
|
||||
values(ephemeral_key_uuid=None))
|
||||
migrate_engine.execute(shadow_instances.update().
|
||||
values(ephemeral_key_uuid=None))
|
@ -1,28 +0,0 @@
|
||||
# Copyright 2014, Red Hat, 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 MetaData
|
||||
from sqlalchemy import Table
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
meta = MetaData(migrate_engine)
|
||||
meta.reflect(migrate_engine)
|
||||
|
||||
table_names = ['compute_node_stats', 'compute_nodes', 'instance_actions',
|
||||
'instance_actions_events', 'instance_faults', 'migrations']
|
||||
for table_name in table_names:
|
||||
table = Table('dump_' + table_name, meta)
|
||||
table.drop(checkfirst=True)
|
@ -1,39 +0,0 @@
|
||||
# Copyright (c) 2014 Rackspace Hosting
|
||||
# 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
|
||||
from sqlalchemy import Table
|
||||
from sqlalchemy import Text
|
||||
|
||||
|
||||
def upgrade(engine):
|
||||
meta = MetaData()
|
||||
meta.bind = engine
|
||||
|
||||
# Drop the compute_node_stats table and add a 'stats' column to
|
||||
# compute_nodes directly. The data itself is transient and doesn't
|
||||
# need to be copied over.
|
||||
table_names = ('compute_node_stats', 'shadow_compute_node_stats')
|
||||
for table_name in table_names:
|
||||
table = Table(table_name, meta, autoload=True)
|
||||
table.drop()
|
||||
|
||||
# Add a new stats column to compute nodes
|
||||
table_names = ('compute_nodes', 'shadow_compute_nodes')
|
||||
for table_name in table_names:
|
||||
table = Table(table_name, meta, autoload=True)
|
||||
stats = Column('stats', Text, default='{}')
|
||||
table.create_column(stats)
|
@ -1,43 +0,0 @@
|
||||
# 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 oslo_log import log as logging
|
||||
from sqlalchemy import Index, MetaData, Table
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def _get_deleted_expire_index(table):
|
||||
members = sorted(['deleted', 'expire'])
|
||||
for idx in table.indexes:
|
||||
if sorted(idx.columns.keys()) == members:
|
||||
return idx
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
meta = MetaData()
|
||||
meta.bind = migrate_engine
|
||||
|
||||
reservations = Table('reservations', meta, autoload=True)
|
||||
if _get_deleted_expire_index(reservations):
|
||||
LOG.info('Skipped adding reservations_deleted_expire_idx '
|
||||
'because an equivalent index already exists.')
|
||||
return
|
||||
|
||||
# Based on expire_reservations query
|
||||
# from: nova/db/sqlalchemy/api.py
|
||||
index = Index('reservations_deleted_expire_idx',
|
||||
reservations.c.deleted, reservations.c.expire)
|
||||
|
||||
index.create(migrate_engine)
|
@ -87,33 +87,6 @@ def _create_shadow_tables(migrate_engine):
|
||||
raise
|
||||
|
||||
|
||||
# NOTE(dprince): we add these here so our schema contains dump tables
|
||||
# which were added in migration 209 (in Havana). We can drop these in
|
||||
# Icehouse: https://bugs.launchpad.net/nova/+bug/1266538
|
||||
def _create_dump_tables(migrate_engine):
|
||||
meta = MetaData(migrate_engine)
|
||||
meta.reflect(migrate_engine)
|
||||
|
||||
table_names = ['compute_node_stats', 'compute_nodes', 'instance_actions',
|
||||
'instance_actions_events', 'instance_faults', 'migrations']
|
||||
for table_name in table_names:
|
||||
table = Table(table_name, meta, autoload=True)
|
||||
|
||||
dump_table_name = 'dump_' + table.name
|
||||
columns = []
|
||||
for column in table.columns:
|
||||
# NOTE(dprince): The dump_ tables were originally created from an
|
||||
# earlier schema version so we don't want to add the pci_stats
|
||||
# column so that schema diffs are exactly the same.
|
||||
if column.name == 'pci_stats':
|
||||
continue
|
||||
else:
|
||||
columns.append(column.copy())
|
||||
table_dump = Table(dump_table_name, meta, *columns,
|
||||
mysql_engine='InnoDB')
|
||||
table_dump.create()
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
meta = MetaData()
|
||||
meta.bind = migrate_engine
|
||||
@ -258,19 +231,6 @@ def upgrade(migrate_engine):
|
||||
mysql_charset='utf8'
|
||||
)
|
||||
|
||||
compute_node_stats = Table('compute_node_stats', meta,
|
||||
Column('created_at', DateTime),
|
||||
Column('updated_at', DateTime),
|
||||
Column('deleted_at', DateTime),
|
||||
Column('id', Integer, primary_key=True, nullable=False),
|
||||
Column('compute_node_id', Integer, nullable=False),
|
||||
Column('key', String(length=255), nullable=False),
|
||||
Column('value', String(length=255)),
|
||||
Column('deleted', Integer),
|
||||
mysql_engine='InnoDB',
|
||||
mysql_charset='utf8'
|
||||
)
|
||||
|
||||
compute_nodes = Table('compute_nodes', meta,
|
||||
Column('created_at', DateTime),
|
||||
Column('updated_at', DateTime),
|
||||
@ -296,6 +256,9 @@ def upgrade(migrate_engine):
|
||||
Column('host_ip', InetSmall()),
|
||||
Column('supported_instances', Text),
|
||||
Column('pci_stats', Text, nullable=True),
|
||||
Column('metrics', Text, nullable=True),
|
||||
Column('extra_resources', Text, nullable=True),
|
||||
Column('stats', Text, default='{}'),
|
||||
mysql_engine='InnoDB',
|
||||
mysql_charset='utf8'
|
||||
)
|
||||
@ -629,6 +592,7 @@ def upgrade(migrate_engine):
|
||||
Column(
|
||||
'locked_by', Enum('owner', 'admin', name='instances0locked_by')),
|
||||
Column('cleaned', Integer, default=0),
|
||||
Column('ephemeral_key_uuid', String(36)),
|
||||
Index('project_id', 'project_id'),
|
||||
Index('uuid', 'uuid', unique=True),
|
||||
mysql_engine='InnoDB',
|
||||
@ -665,6 +629,8 @@ def upgrade(migrate_engine):
|
||||
Column('result', String(length=255)),
|
||||
Column('traceback', Text),
|
||||
Column('deleted', Integer),
|
||||
Column('host', String(255)),
|
||||
Column('details', Text),
|
||||
mysql_engine='InnoDB',
|
||||
mysql_charset='utf8',
|
||||
)
|
||||
@ -1107,7 +1073,7 @@ def upgrade(migrate_engine):
|
||||
# those that are children and others later
|
||||
agent_builds, aggregate_hosts, aggregate_metadata,
|
||||
block_device_mapping, bw_usage_cache, cells,
|
||||
certificates, compute_node_stats, compute_nodes, consoles,
|
||||
certificates, compute_nodes, consoles,
|
||||
dns_domains, fixed_ips, floating_ips,
|
||||
instance_faults, instance_id_mappings, instance_info_caches,
|
||||
instance_metadata, instance_system_metadata,
|
||||
@ -1198,13 +1164,6 @@ def upgrade(migrate_engine):
|
||||
Index('certificates_user_id_deleted_idx', certificates.c.user_id,
|
||||
certificates.c.deleted),
|
||||
|
||||
# compute_node_stats
|
||||
Index('ix_compute_node_stats_compute_node_id',
|
||||
compute_node_stats.c.compute_node_id),
|
||||
Index('compute_node_stats_node_id_and_deleted_idx',
|
||||
compute_node_stats.c.compute_node_id,
|
||||
compute_node_stats.c.deleted),
|
||||
|
||||
# consoles
|
||||
Index('consoles_instance_uuid_idx', consoles.c.instance_uuid),
|
||||
|
||||
@ -1319,6 +1278,8 @@ def upgrade(migrate_engine):
|
||||
Index('ix_reservations_user_id_deleted',
|
||||
reservations.c.user_id, reservations.c.deleted),
|
||||
Index('reservations_uuid_idx', reservations.c.uuid),
|
||||
Index('reservations_deleted_expire_idx',
|
||||
reservations.c.deleted, reservations.c.expire),
|
||||
|
||||
# security_group_instance_association
|
||||
Index('security_group_instance_association_instance_uuid_idx',
|
||||
@ -1402,11 +1363,6 @@ def upgrade(migrate_engine):
|
||||
[security_groups.c.id],
|
||||
'security_group_instance_association_ibfk_1',
|
||||
],
|
||||
[
|
||||
[compute_node_stats.c.compute_node_id],
|
||||
[compute_nodes.c.id],
|
||||
'fk_compute_node_stats_compute_node_id',
|
||||
],
|
||||
[
|
||||
[compute_nodes.c.service_id],
|
||||
[services.c.id],
|
||||
@ -1488,5 +1444,3 @@ def upgrade(migrate_engine):
|
||||
migrate_engine.url.database)
|
||||
|
||||
_create_shadow_tables(migrate_engine)
|
||||
|
||||
_create_dump_tables(migrate_engine)
|
@ -102,7 +102,7 @@ def upgrade(migrate_engine):
|
||||
UniqueConstraint('uuid', table=instances, name=UC_NAME).create()
|
||||
|
||||
# NOTE(mriedem): We now have a unique index on instances.uuid from the
|
||||
# 216_havana migration and a unique constraint on the same column, which
|
||||
# 234_icehouse migration and a unique constraint on the same column, which
|
||||
# is redundant but should not be a big performance penalty. We should
|
||||
# clean this up in a later (separate) migration since it involves dropping
|
||||
# any ForeignKeys on the instances.uuid column due to some index rename
|
||||
|
@ -24,7 +24,7 @@ def upgrade(migrate_engine):
|
||||
|
||||
# Note: Since we are altering name field, this constraint on name needs to
|
||||
# first be dropped before we can alter name. We then re-create the same
|
||||
# constraint. It was first added in 216_havana.py so no need to remove
|
||||
# constraint. It was first added in 234_icehouse so no need to remove
|
||||
# constraint on downgrade.
|
||||
UniqueConstraint('user_id', 'name', 'deleted', table=key_pairs,
|
||||
name='uniq_key_pairs0user_id0name0deleted').drop()
|
||||
|
@ -27,7 +27,7 @@ def upgrade(migrate_engine):
|
||||
"""Add instance_system_metadata indexes missing on PostgreSQL and other DB.
|
||||
"""
|
||||
|
||||
# This index was already added by migration 216 for MySQL
|
||||
# This index was already added by migration 234_icehouse for MySQL
|
||||
if migrate_engine.name != 'mysql':
|
||||
# Adds index for PostgreSQL and other DB
|
||||
if not utils.index_exists(migrate_engine, SYS_META_TABLE_NAME,
|
||||
|
@ -29,7 +29,7 @@ from nova import exception
|
||||
from nova.i18n import _
|
||||
|
||||
INIT_VERSION = {}
|
||||
INIT_VERSION['main'] = 215
|
||||
INIT_VERSION['main'] = 233
|
||||
INIT_VERSION['api'] = 0
|
||||
_REPOSITORY = {}
|
||||
|
||||
|
@ -53,7 +53,6 @@ from nova.db import migration
|
||||
from nova.db.sqlalchemy import migrate_repo
|
||||
from nova.db.sqlalchemy import migration as sa_migration
|
||||
from nova.db.sqlalchemy import models
|
||||
from nova.db.sqlalchemy import utils as db_utils
|
||||
from nova import exception
|
||||
from nova import test
|
||||
from nova.tests import fixtures as nova_fixtures
|
||||
@ -164,11 +163,10 @@ class NovaMigrationsCheckers(test_migrations.ModelsMigrationsSync,
|
||||
|
||||
def _skippable_migrations(self):
|
||||
special = [
|
||||
216, # Havana
|
||||
234, # Icehouse
|
||||
272, # NOOP migration due to revert
|
||||
]
|
||||
|
||||
havana_placeholders = list(range(217, 227))
|
||||
icehouse_placeholders = list(range(235, 244))
|
||||
juno_placeholders = list(range(255, 265))
|
||||
kilo_placeholders = list(range(281, 291))
|
||||
@ -187,7 +185,6 @@ class NovaMigrationsCheckers(test_migrations.ModelsMigrationsSync,
|
||||
victoria_placeholders = list(range(413, 418))
|
||||
|
||||
return (special +
|
||||
havana_placeholders +
|
||||
icehouse_placeholders +
|
||||
juno_placeholders +
|
||||
kilo_placeholders +
|
||||
@ -253,78 +250,6 @@ class NovaMigrationsCheckers(test_migrations.ModelsMigrationsSync,
|
||||
def test_walk_versions(self):
|
||||
self.walk_versions(snake_walk=False, downgrade=False)
|
||||
|
||||
def _check_227(self, engine, data):
|
||||
table = oslodbutils.get_table(engine, 'project_user_quotas')
|
||||
|
||||
# Insert fake_quotas with the longest resource name.
|
||||
fake_quotas = {'id': 5,
|
||||
'project_id': 'fake_project',
|
||||
'user_id': 'fake_user',
|
||||
'resource': 'injected_file_content_bytes',
|
||||
'hard_limit': 10}
|
||||
table.insert().execute(fake_quotas)
|
||||
|
||||
# Check we can get the longest resource name.
|
||||
quota = table.select(table.c.id == 5).execute().first()
|
||||
self.assertEqual(quota['resource'], 'injected_file_content_bytes')
|
||||
|
||||
def _check_228(self, engine, data):
|
||||
self.assertColumnExists(engine, 'compute_nodes', 'metrics')
|
||||
|
||||
compute_nodes = oslodbutils.get_table(engine, 'compute_nodes')
|
||||
self.assertIsInstance(compute_nodes.c.metrics.type,
|
||||
sqlalchemy.types.Text)
|
||||
|
||||
def _check_229(self, engine, data):
|
||||
self.assertColumnExists(engine, 'compute_nodes', 'extra_resources')
|
||||
|
||||
compute_nodes = oslodbutils.get_table(engine, 'compute_nodes')
|
||||
self.assertIsInstance(compute_nodes.c.extra_resources.type,
|
||||
sqlalchemy.types.Text)
|
||||
|
||||
def _check_230(self, engine, data):
|
||||
for table_name in ['instance_actions_events',
|
||||
'shadow_instance_actions_events']:
|
||||
self.assertColumnExists(engine, table_name, 'host')
|
||||
self.assertColumnExists(engine, table_name, 'details')
|
||||
|
||||
action_events = oslodbutils.get_table(engine,
|
||||
'instance_actions_events')
|
||||
self.assertIsInstance(action_events.c.host.type,
|
||||
sqlalchemy.types.String)
|
||||
self.assertIsInstance(action_events.c.details.type,
|
||||
sqlalchemy.types.Text)
|
||||
|
||||
def _check_231(self, engine, data):
|
||||
self.assertColumnExists(engine, 'instances', 'ephemeral_key_uuid')
|
||||
|
||||
instances = oslodbutils.get_table(engine, 'instances')
|
||||
self.assertIsInstance(instances.c.ephemeral_key_uuid.type,
|
||||
sqlalchemy.types.String)
|
||||
self.assertTrue(db_utils.check_shadow_table(engine, 'instances'))
|
||||
|
||||
def _check_232(self, engine, data):
|
||||
table_names = ['compute_node_stats', 'compute_nodes',
|
||||
'instance_actions', 'instance_actions_events',
|
||||
'instance_faults', 'migrations']
|
||||
for table_name in table_names:
|
||||
self.assertTableNotExists(engine, 'dump_' + table_name)
|
||||
|
||||
def _check_233(self, engine, data):
|
||||
self.assertColumnExists(engine, 'compute_nodes', 'stats')
|
||||
|
||||
compute_nodes = oslodbutils.get_table(engine, 'compute_nodes')
|
||||
self.assertIsInstance(compute_nodes.c.stats.type,
|
||||
sqlalchemy.types.Text)
|
||||
|
||||
self.assertRaises(sqlalchemy.exc.NoSuchTableError,
|
||||
oslodbutils.get_table, engine, 'compute_node_stats')
|
||||
|
||||
def _check_234(self, engine, data):
|
||||
self.assertIndexMembers(engine, 'reservations',
|
||||
'reservations_deleted_expire_idx',
|
||||
['deleted', 'expire'])
|
||||
|
||||
def _check_244(self, engine, data):
|
||||
volume_usage_cache = oslodbutils.get_table(
|
||||
engine, 'volume_usage_cache')
|
||||
|
Loading…
Reference in New Issue
Block a user