From d0ff5ff7857d9e4de6cce1e07e208e34b4464682 Mon Sep 17 00:00:00 2001 From: Gordon Chung Date: Thu, 27 Mar 2014 09:29:29 -0400 Subject: [PATCH] remove dump tables from previous migrations dump tables from 012 and 027 migrations should really be handled by DBAs. creating additional dump tables just consumes unnecessary space. Change-Id: I3a8716627c2f52a1a3c59f36009d8265ac96a0fa Closes-Bug: #1259724 --- .../versions/012_add_missing_foreign_keys.py | 17 --------- .../027_remove_alarm_fk_constraints.py | 9 ----- .../versions/034_drop_dump_tables.py | 38 +++++++++++++++++++ 3 files changed, 38 insertions(+), 26 deletions(-) create mode 100644 ceilometer/storage/sqlalchemy/migrate_repo/versions/034_drop_dump_tables.py diff --git a/ceilometer/storage/sqlalchemy/migrate_repo/versions/012_add_missing_foreign_keys.py b/ceilometer/storage/sqlalchemy/migrate_repo/versions/012_add_missing_foreign_keys.py index beb3074afe..cd5272cc04 100644 --- a/ceilometer/storage/sqlalchemy/migrate_repo/versions/012_add_missing_foreign_keys.py +++ b/ceilometer/storage/sqlalchemy/migrate_repo/versions/012_add_missing_foreign_keys.py @@ -17,8 +17,6 @@ from migrate import ForeignKeyConstraint from sqlalchemy import MetaData, Table from sqlalchemy.sql.expression import select -from ceilometer.openstack.common.db.sqlalchemy import utils - TABLES = ['resource', 'sourceassoc', 'user', 'project', 'meter', 'source', 'alarm'] @@ -46,19 +44,11 @@ def upgrade(migrate_engine): for table_name in TABLES) for table_name, indexes in INDEXES.items(): table = load_tables[table_name] - - # Save data that conflicted with FK. - columns = [column.copy() for column in table.columns] - table_dump = Table('dump_' + table_name, meta, *columns) - table_dump.create() for column, ref_table_name, ref_column_name in indexes: ref_table = load_tables[ref_table_name] subq = select([getattr(ref_table.c, ref_column_name)]) - sql = utils.InsertFromSelect(table_dump, table.select().where( - ~ getattr(table.c, column).in_(subq))) sql_del = table.delete().where( ~ getattr(table.c, column).in_(subq)) - migrate_engine.execute(sql) migrate_engine.execute(sql_del) params = {'columns': [table.c[column]], @@ -86,10 +76,3 @@ def downgrade(migrate_engine): with migrate_engine.begin(): fkey = ForeignKeyConstraint(**params) fkey.drop() - with migrate_engine.begin(): - # Restore data that had been dropped. - table_dump_name = 'dump_' + table_name - table_dump = Table(table_dump_name, meta, autoload=True) - sql = utils.InsertFromSelect(table, table_dump.select()) - migrate_engine.execute(sql) - table_dump.drop() diff --git a/ceilometer/storage/sqlalchemy/migrate_repo/versions/027_remove_alarm_fk_constraints.py b/ceilometer/storage/sqlalchemy/migrate_repo/versions/027_remove_alarm_fk_constraints.py index d216680872..fc936653a3 100644 --- a/ceilometer/storage/sqlalchemy/migrate_repo/versions/027_remove_alarm_fk_constraints.py +++ b/ceilometer/storage/sqlalchemy/migrate_repo/versions/027_remove_alarm_fk_constraints.py @@ -20,8 +20,6 @@ from migrate import ForeignKeyConstraint from sqlalchemy import MetaData, Table from sqlalchemy.sql.expression import select -from ceilometer.openstack.common.db.sqlalchemy import utils - TABLES = ['user', 'project', 'alarm'] INDEXES = { @@ -56,18 +54,11 @@ def downgrade(migrate_engine): for table_name in TABLES) for table_name, indexes in INDEXES.items(): table = load_tables[table_name] - # Save data that conflicted with FK. - columns = [column.copy() for column in table.columns] - table_dump = Table('dump027_' + table_name, meta, *columns) - table_dump.create() for column, ref_table_name, ref_column_name in indexes: ref_table = load_tables[ref_table_name] subq = select([getattr(ref_table.c, ref_column_name)]) - sql = utils.InsertFromSelect(table_dump, table.select().where( - ~ getattr(table.c, column).in_(subq))) sql_del = table.delete().where( ~ getattr(table.c, column).in_(subq)) - migrate_engine.execute(sql) migrate_engine.execute(sql_del) params = {'columns': [table.c[column]], diff --git a/ceilometer/storage/sqlalchemy/migrate_repo/versions/034_drop_dump_tables.py b/ceilometer/storage/sqlalchemy/migrate_repo/versions/034_drop_dump_tables.py new file mode 100644 index 0000000000..9a2a83af1e --- /dev/null +++ b/ceilometer/storage/sqlalchemy/migrate_repo/versions/034_drop_dump_tables.py @@ -0,0 +1,38 @@ +# -*- encoding: utf-8 -*- +# +# 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. +import sqlalchemy as sa + +TABLES_012 = ['resource', 'sourceassoc', 'user', + 'project', 'meter', 'source', 'alarm'] +TABLES_027 = ['user', 'project', 'alarm'] + + +def upgrade(migrate_engine): + meta = sa.MetaData(bind=migrate_engine) + for table_name in TABLES_027: + try: + sa.Table('dump027_' + table_name, meta, autoload=True)\ + .drop(checkfirst=True) + except sa.exc.NoSuchTableError: + pass + for table_name in TABLES_012: + try: + sa.Table('dump_' + table_name, meta, autoload=True)\ + .drop(checkfirst=True) + except sa.exc.NoSuchTableError: + pass + + +def downgrade(migrate_engine): + pass