Merge "Fix project_user_quotas_user_id_deleted_idx index"
This commit is contained in:
commit
d0d0c521c5
@ -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)
|
@ -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."""
|
||||
|
Loading…
x
Reference in New Issue
Block a user