Adds instance_uuid index for instance_system_metadata
DB migrating script don't create index on instance_system_metadata.instance_uuid for SQLite, PostgreSQL and IBM DB, it cause the listing instances have low performance. Adds instance_uuid index for these DB. Change-Id: I8a6425b00fe5f491b1bd98b7b335e7d8b13eaf33 Closes-Bug: #1480029
This commit is contained in:
parent
473d4b9e94
commit
e047d354f8
@ -0,0 +1,36 @@
|
||||
# Copyright 2015 Huawei.
|
||||
# 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_db.sqlalchemy import utils
|
||||
|
||||
|
||||
INDEX_COLUMNS = ['instance_uuid']
|
||||
# using the index name same with mysql
|
||||
INDEX_NAME = 'instance_uuid'
|
||||
SYS_META_TABLE_NAME = 'instance_system_metadata'
|
||||
|
||||
|
||||
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
|
||||
if migrate_engine.name != 'mysql':
|
||||
# Adds index for PostgreSQL and other DB
|
||||
if not utils.index_exists(migrate_engine, SYS_META_TABLE_NAME,
|
||||
INDEX_NAME):
|
||||
utils.add_index(migrate_engine, SYS_META_TABLE_NAME, INDEX_NAME,
|
||||
INDEX_COLUMNS)
|
@ -987,7 +987,9 @@ class InstanceMetadata(BASE, NovaBase):
|
||||
class InstanceSystemMetadata(BASE, NovaBase):
|
||||
"""Represents a system-owned metadata key/value pair for an instance."""
|
||||
__tablename__ = 'instance_system_metadata'
|
||||
__table_args__ = ()
|
||||
__table_args__ = (
|
||||
Index('instance_uuid', 'instance_uuid'),
|
||||
)
|
||||
id = Column(Integer, primary_key=True)
|
||||
key = Column(String(255), nullable=False)
|
||||
value = Column(String(255))
|
||||
|
@ -800,6 +800,10 @@ class NovaMigrationsCheckers(test_migrations.ModelsMigrationsSync,
|
||||
self.assertColumnExists(engine, 'compute_nodes',
|
||||
'ram_allocation_ratio')
|
||||
|
||||
def _check_302(self, engine, data):
|
||||
self.assertIndexMembers(engine, 'instance_system_metadata',
|
||||
'instance_uuid', ['instance_uuid'])
|
||||
|
||||
|
||||
class TestNovaMigrationsSQLite(NovaMigrationsCheckers,
|
||||
test_base.DbTestCase,
|
||||
|
Loading…
Reference in New Issue
Block a user