From 531e1e8733b8928d262bf3b0b72540dde3ef1dad Mon Sep 17 00:00:00 2001 From: Christian Rohmann Date: Fri, 9 Sep 2022 13:56:20 +0200 Subject: [PATCH] db: Drop redundant indexes on instances and console_auth_tokens tables * There were two unique constrains on the same column uuid of instances. This change drops one of them. The second constraint was introduced with https://review.opendev.org/c/openstack/nova/+/97946, but was pending cleanup since. * In console_auth_tokens there was a unique constraint and another index on column token_hash. Closes-Bug: #1641185 Change-Id: I0ffa47d2afbfbfa63651991b3791dfad3e1832e1 --- ...9ea_de_duplicate_indexes_in_instances__.py | 35 +++++++++++++++++++ nova/db/main/models.py | 2 -- nova/tests/unit/db/main/test_migrations.py | 9 +++++ 3 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 nova/db/main/migrations/versions/960aac0e09ea_de_duplicate_indexes_in_instances__.py diff --git a/nova/db/main/migrations/versions/960aac0e09ea_de_duplicate_indexes_in_instances__.py b/nova/db/main/migrations/versions/960aac0e09ea_de_duplicate_indexes_in_instances__.py new file mode 100644 index 0000000000..f4666a2b00 --- /dev/null +++ b/nova/db/main/migrations/versions/960aac0e09ea_de_duplicate_indexes_in_instances__.py @@ -0,0 +1,35 @@ +# 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. + +"""de-duplicate_indexes_in_instances__console_auth_tokens + +Revision ID: 960aac0e09ea +Revises: ccb0fa1a2252 +Create Date: 2022-09-15 17:00:23.175991 +""" + +from alembic import op + + +# revision identifiers, used by Alembic. +revision = '960aac0e09ea' +down_revision = 'ccb0fa1a2252' +branch_labels = None +depends_on = None + + +def upgrade(): + with op.batch_alter_table('console_auth_tokens', schema=None) as batch_op: + batch_op.drop_index('console_auth_tokens_token_hash_idx') + + with op.batch_alter_table('instances', schema=None) as batch_op: + batch_op.drop_index('uuid') diff --git a/nova/db/main/models.py b/nova/db/main/models.py index 7551584c1c..f8363a89c0 100644 --- a/nova/db/main/models.py +++ b/nova/db/main/models.py @@ -266,7 +266,6 @@ class Instance(BASE, NovaBase, models.SoftDeleteMixin): """Represents a guest VM.""" __tablename__ = 'instances' __table_args__ = ( - sa.Index('uuid', 'uuid', unique=True), sa.Index('instances_project_id_idx', 'project_id'), sa.Index('instances_project_id_deleted_idx', 'project_id', 'deleted'), @@ -1046,7 +1045,6 @@ class ConsoleAuthToken(BASE, NovaBase): __table_args__ = ( sa.Index('console_auth_tokens_instance_uuid_idx', 'instance_uuid'), sa.Index('console_auth_tokens_host_expires_idx', 'host', 'expires'), - sa.Index('console_auth_tokens_token_hash_idx', 'token_hash'), sa.Index( 'console_auth_tokens_token_hash_instance_uuid_idx', 'token_hash', 'instance_uuid', diff --git a/nova/tests/unit/db/main/test_migrations.py b/nova/tests/unit/db/main/test_migrations.py index d2c4ef9762..e52deb262a 100644 --- a/nova/tests/unit/db/main/test_migrations.py +++ b/nova/tests/unit/db/main/test_migrations.py @@ -314,6 +314,15 @@ class NovaMigrationsWalk( self.assertIsInstance( table.c.encryption_options.type, sa.types.String) + def _check_960aac0e09ea(self, connection): + self.assertIndexNotExists( + connection, 'console_auth_tokens', + 'console_auth_tokens_token_hash_idx', + ) + self.assertIndexNotExists( + connection, 'instances', 'uuid', + ) + def test_single_base_revision(self): """Ensure we only have a single base revision.