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
|
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):
|
def upgrade(migrate_engine):
|
||||||
meta = MetaData()
|
meta = MetaData()
|
||||||
meta.bind = migrate_engine
|
meta.bind = migrate_engine
|
||||||
@ -258,19 +231,6 @@ def upgrade(migrate_engine):
|
|||||||
mysql_charset='utf8'
|
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,
|
compute_nodes = Table('compute_nodes', meta,
|
||||||
Column('created_at', DateTime),
|
Column('created_at', DateTime),
|
||||||
Column('updated_at', DateTime),
|
Column('updated_at', DateTime),
|
||||||
@ -296,6 +256,9 @@ def upgrade(migrate_engine):
|
|||||||
Column('host_ip', InetSmall()),
|
Column('host_ip', InetSmall()),
|
||||||
Column('supported_instances', Text),
|
Column('supported_instances', Text),
|
||||||
Column('pci_stats', Text, nullable=True),
|
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_engine='InnoDB',
|
||||||
mysql_charset='utf8'
|
mysql_charset='utf8'
|
||||||
)
|
)
|
||||||
@ -629,6 +592,7 @@ def upgrade(migrate_engine):
|
|||||||
Column(
|
Column(
|
||||||
'locked_by', Enum('owner', 'admin', name='instances0locked_by')),
|
'locked_by', Enum('owner', 'admin', name='instances0locked_by')),
|
||||||
Column('cleaned', Integer, default=0),
|
Column('cleaned', Integer, default=0),
|
||||||
|
Column('ephemeral_key_uuid', String(36)),
|
||||||
Index('project_id', 'project_id'),
|
Index('project_id', 'project_id'),
|
||||||
Index('uuid', 'uuid', unique=True),
|
Index('uuid', 'uuid', unique=True),
|
||||||
mysql_engine='InnoDB',
|
mysql_engine='InnoDB',
|
||||||
@ -665,6 +629,8 @@ def upgrade(migrate_engine):
|
|||||||
Column('result', String(length=255)),
|
Column('result', String(length=255)),
|
||||||
Column('traceback', Text),
|
Column('traceback', Text),
|
||||||
Column('deleted', Integer),
|
Column('deleted', Integer),
|
||||||
|
Column('host', String(255)),
|
||||||
|
Column('details', Text),
|
||||||
mysql_engine='InnoDB',
|
mysql_engine='InnoDB',
|
||||||
mysql_charset='utf8',
|
mysql_charset='utf8',
|
||||||
)
|
)
|
||||||
@ -1107,7 +1073,7 @@ def upgrade(migrate_engine):
|
|||||||
# those that are children and others later
|
# those that are children and others later
|
||||||
agent_builds, aggregate_hosts, aggregate_metadata,
|
agent_builds, aggregate_hosts, aggregate_metadata,
|
||||||
block_device_mapping, bw_usage_cache, cells,
|
block_device_mapping, bw_usage_cache, cells,
|
||||||
certificates, compute_node_stats, compute_nodes, consoles,
|
certificates, compute_nodes, consoles,
|
||||||
dns_domains, fixed_ips, floating_ips,
|
dns_domains, fixed_ips, floating_ips,
|
||||||
instance_faults, instance_id_mappings, instance_info_caches,
|
instance_faults, instance_id_mappings, instance_info_caches,
|
||||||
instance_metadata, instance_system_metadata,
|
instance_metadata, instance_system_metadata,
|
||||||
@ -1198,13 +1164,6 @@ def upgrade(migrate_engine):
|
|||||||
Index('certificates_user_id_deleted_idx', certificates.c.user_id,
|
Index('certificates_user_id_deleted_idx', certificates.c.user_id,
|
||||||
certificates.c.deleted),
|
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
|
# consoles
|
||||||
Index('consoles_instance_uuid_idx', consoles.c.instance_uuid),
|
Index('consoles_instance_uuid_idx', consoles.c.instance_uuid),
|
||||||
|
|
||||||
@ -1319,6 +1278,8 @@ def upgrade(migrate_engine):
|
|||||||
Index('ix_reservations_user_id_deleted',
|
Index('ix_reservations_user_id_deleted',
|
||||||
reservations.c.user_id, reservations.c.deleted),
|
reservations.c.user_id, reservations.c.deleted),
|
||||||
Index('reservations_uuid_idx', reservations.c.uuid),
|
Index('reservations_uuid_idx', reservations.c.uuid),
|
||||||
|
Index('reservations_deleted_expire_idx',
|
||||||
|
reservations.c.deleted, reservations.c.expire),
|
||||||
|
|
||||||
# security_group_instance_association
|
# security_group_instance_association
|
||||||
Index('security_group_instance_association_instance_uuid_idx',
|
Index('security_group_instance_association_instance_uuid_idx',
|
||||||
@ -1402,11 +1363,6 @@ def upgrade(migrate_engine):
|
|||||||
[security_groups.c.id],
|
[security_groups.c.id],
|
||||||
'security_group_instance_association_ibfk_1',
|
'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],
|
[compute_nodes.c.service_id],
|
||||||
[services.c.id],
|
[services.c.id],
|
||||||
@ -1488,5 +1444,3 @@ def upgrade(migrate_engine):
|
|||||||
migrate_engine.url.database)
|
migrate_engine.url.database)
|
||||||
|
|
||||||
_create_shadow_tables(migrate_engine)
|
_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()
|
UniqueConstraint('uuid', table=instances, name=UC_NAME).create()
|
||||||
|
|
||||||
# NOTE(mriedem): We now have a unique index on instances.uuid from the
|
# 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
|
# is redundant but should not be a big performance penalty. We should
|
||||||
# clean this up in a later (separate) migration since it involves dropping
|
# clean this up in a later (separate) migration since it involves dropping
|
||||||
# any ForeignKeys on the instances.uuid column due to some index rename
|
# 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
|
# 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
|
# 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.
|
# constraint on downgrade.
|
||||||
UniqueConstraint('user_id', 'name', 'deleted', table=key_pairs,
|
UniqueConstraint('user_id', 'name', 'deleted', table=key_pairs,
|
||||||
name='uniq_key_pairs0user_id0name0deleted').drop()
|
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.
|
"""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':
|
if migrate_engine.name != 'mysql':
|
||||||
# Adds index for PostgreSQL and other DB
|
# Adds index for PostgreSQL and other DB
|
||||||
if not utils.index_exists(migrate_engine, SYS_META_TABLE_NAME,
|
if not utils.index_exists(migrate_engine, SYS_META_TABLE_NAME,
|
||||||
|
@ -29,7 +29,7 @@ from nova import exception
|
|||||||
from nova.i18n import _
|
from nova.i18n import _
|
||||||
|
|
||||||
INIT_VERSION = {}
|
INIT_VERSION = {}
|
||||||
INIT_VERSION['main'] = 215
|
INIT_VERSION['main'] = 233
|
||||||
INIT_VERSION['api'] = 0
|
INIT_VERSION['api'] = 0
|
||||||
_REPOSITORY = {}
|
_REPOSITORY = {}
|
||||||
|
|
||||||
|
@ -53,7 +53,6 @@ from nova.db import migration
|
|||||||
from nova.db.sqlalchemy import migrate_repo
|
from nova.db.sqlalchemy import migrate_repo
|
||||||
from nova.db.sqlalchemy import migration as sa_migration
|
from nova.db.sqlalchemy import migration as sa_migration
|
||||||
from nova.db.sqlalchemy import models
|
from nova.db.sqlalchemy import models
|
||||||
from nova.db.sqlalchemy import utils as db_utils
|
|
||||||
from nova import exception
|
from nova import exception
|
||||||
from nova import test
|
from nova import test
|
||||||
from nova.tests import fixtures as nova_fixtures
|
from nova.tests import fixtures as nova_fixtures
|
||||||
@ -164,11 +163,10 @@ class NovaMigrationsCheckers(test_migrations.ModelsMigrationsSync,
|
|||||||
|
|
||||||
def _skippable_migrations(self):
|
def _skippable_migrations(self):
|
||||||
special = [
|
special = [
|
||||||
216, # Havana
|
234, # Icehouse
|
||||||
272, # NOOP migration due to revert
|
272, # NOOP migration due to revert
|
||||||
]
|
]
|
||||||
|
|
||||||
havana_placeholders = list(range(217, 227))
|
|
||||||
icehouse_placeholders = list(range(235, 244))
|
icehouse_placeholders = list(range(235, 244))
|
||||||
juno_placeholders = list(range(255, 265))
|
juno_placeholders = list(range(255, 265))
|
||||||
kilo_placeholders = list(range(281, 291))
|
kilo_placeholders = list(range(281, 291))
|
||||||
@ -187,7 +185,6 @@ class NovaMigrationsCheckers(test_migrations.ModelsMigrationsSync,
|
|||||||
victoria_placeholders = list(range(413, 418))
|
victoria_placeholders = list(range(413, 418))
|
||||||
|
|
||||||
return (special +
|
return (special +
|
||||||
havana_placeholders +
|
|
||||||
icehouse_placeholders +
|
icehouse_placeholders +
|
||||||
juno_placeholders +
|
juno_placeholders +
|
||||||
kilo_placeholders +
|
kilo_placeholders +
|
||||||
@ -253,78 +250,6 @@ class NovaMigrationsCheckers(test_migrations.ModelsMigrationsSync,
|
|||||||
def test_walk_versions(self):
|
def test_walk_versions(self):
|
||||||
self.walk_versions(snake_walk=False, downgrade=False)
|
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):
|
def _check_244(self, engine, data):
|
||||||
volume_usage_cache = oslodbutils.get_table(
|
volume_usage_cache = oslodbutils.get_table(
|
||||||
engine, 'volume_usage_cache')
|
engine, 'volume_usage_cache')
|
||||||
|
Loading…
Reference in New Issue
Block a user