Merge "Fix project_user_quotas_user_id_deleted_idx index"

This commit is contained in:
Jenkins 2013-08-19 06:53:01 +00:00 committed by Gerrit Code Review
commit d0d0c521c5
2 changed files with 63 additions and 0 deletions

View File

@ -0,0 +1,45 @@
# 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 Index, MetaData, Table
def _change_index_columns(migrate_engine, new_columns, old_columns):
meta = MetaData()
meta.bind = migrate_engine
table = Table('project_user_quotas', meta, autoload=True)
index_name = 'project_user_quotas_user_id_deleted_idx'
Index(
index_name,
*[getattr(table.c, col) for col in old_columns]
).drop(migrate_engine)
Index(
index_name,
*[getattr(table.c, col) for col in new_columns]
).create()
def upgrade(migrate_engine):
new_columns = ('user_id', 'deleted')
old_columns = ('project_id', 'deleted')
_change_index_columns(migrate_engine, new_columns, old_columns)
def downgrade(migrate_engine):
new_columns = ('project_id', 'deleted')
old_columns = ('user_id', 'deleted')
_change_index_columns(migrate_engine, new_columns, old_columns)

View File

@ -2667,6 +2667,24 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
for f in table.foreign_keys]
self.assertNotIn(self._constraints_209().get(i), fks)
def _check_210(self, engine, data):
project_user_quotas = db_utils.get_table(engine, 'project_user_quotas')
index_data = [(idx.name, idx.columns.keys())
for idx in project_user_quotas.indexes]
self.assertIn(('project_user_quotas_user_id_deleted_idx',
['user_id', 'deleted']), index_data)
def _post_downgrade_210(self, engine):
project_user_quotas = db_utils.get_table(engine, 'project_user_quotas')
index_data = [(idx.name, idx.columns.keys())
for idx in project_user_quotas.indexes]
self.assertNotIn(('project_user_quotas_user_id_deleted_idx',
['user_id', 'deleted']), index_data)
class TestBaremetalMigrations(BaseMigrationTestCase, CommonTestsMixIn):
"""Test sqlalchemy-migrate migrations."""