From 9ea42f50d3136885ffb1f7b23a7d831165f25247 Mon Sep 17 00:00:00 2001 From: Jakub Libosvar Date: Tue, 22 Jul 2014 10:45:52 +0200 Subject: [PATCH] Change autogenerate to be unconditional Template for generating db migration scripts are now not run according to used plugins. Target environment is set to use all available models but also used plugins are kept for backward compatibility. Part of this patch is script that will drop unused tables to avoid generating the drop in future migration scripts. Change-Id: I90a7d3416de24f2317ccdeb828bb8bd973ee5e61 Closes-bug: #1346638 --- .../db/migration/alembic_migrations/env.py | 5 +-- .../alembic_migrations/script.py.mako | 14 ------ .../3b85b693a95f_remove_service_tables.py | 45 +++++++++++++++++++ .../alembic_migrations/versions/HEAD | 2 +- 4 files changed, 47 insertions(+), 19 deletions(-) create mode 100644 neutron/db/migration/alembic_migrations/versions/3b85b693a95f_remove_service_tables.py diff --git a/neutron/db/migration/alembic_migrations/env.py b/neutron/db/migration/alembic_migrations/env.py index db20ce912f..46981e02e3 100644 --- a/neutron/db/migration/alembic_migrations/env.py +++ b/neutron/db/migration/alembic_migrations/env.py @@ -21,8 +21,8 @@ from oslo.config import cfg import sqlalchemy as sa from sqlalchemy import create_engine, event, pool +from neutron.db.migration.models import head # noqa from neutron.db import model_base -from neutron.openstack.common import importutils MYSQL_ENGINE = None @@ -40,9 +40,6 @@ plugin_class_path = neutron_config.core_plugin active_plugins = [plugin_class_path] active_plugins += neutron_config.service_plugins -for class_path in active_plugins: - importutils.import_class(class_path) - # set the target for 'autogenerate' support target_metadata = model_base.BASEV2.metadata diff --git a/neutron/db/migration/alembic_migrations/script.py.mako b/neutron/db/migration/alembic_migrations/script.py.mako index eb3dc9e027..e31a2719e2 100644 --- a/neutron/db/migration/alembic_migrations/script.py.mako +++ b/neutron/db/migration/alembic_migrations/script.py.mako @@ -25,28 +25,14 @@ Create Date: ${create_date} revision = ${repr(up_revision)} down_revision = ${repr(down_revision)} -# Change to ['*'] if this migration applies to all plugins - -migration_for_plugins = [ - '${config.neutron_config.core_plugin}' -] - from alembic import op import sqlalchemy as sa ${imports if imports else ""} -from neutron.db import migration - def upgrade(active_plugins=None, options=None): - if not migration.should_run(active_plugins, migration_for_plugins): - return - ${upgrades if upgrades else "pass"} def downgrade(active_plugins=None, options=None): - if not migration.should_run(active_plugins, migration_for_plugins): - return - ${downgrades if downgrades else "pass"} diff --git a/neutron/db/migration/alembic_migrations/versions/3b85b693a95f_remove_service_tables.py b/neutron/db/migration/alembic_migrations/versions/3b85b693a95f_remove_service_tables.py new file mode 100644 index 0000000000..a0fc50d6cd --- /dev/null +++ b/neutron/db/migration/alembic_migrations/versions/3b85b693a95f_remove_service_tables.py @@ -0,0 +1,45 @@ +# Copyright 2014 OpenStack Foundation +# +# 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. +# + +"""Drop unused servicedefinitions and servicetypes tables. + +These tables are created independently on plugins but only dropped if +LoadBalancer plugin is used. Meaning that if LoadBalancer plugin is not set +then these tables were created and never used. + +Revision ID: 3b85b693a95f +Revises: 327ee5fde2c7 +Create Date: 2014-07-22 03:30:05.837152 + +""" + +# revision identifiers, used by Alembic. +revision = '3b85b693a95f' +down_revision = '327ee5fde2c7' + +from alembic import op + + +def upgrade(active_plugins=None, options=None): + for table in ('servicedefinitions', 'servicetypes'): + op.execute("DROP TABLE IF EXISTS %s" % table) + + +def downgrade(active_plugins=None, options=None): + """Don't create the tables + + These tables would be created during downgrade at correct place in + migration timeline at revision 557edfc53098. + """ diff --git a/neutron/db/migration/alembic_migrations/versions/HEAD b/neutron/db/migration/alembic_migrations/versions/HEAD index 86f1f1dcbe..7c2f9210a5 100644 --- a/neutron/db/migration/alembic_migrations/versions/HEAD +++ b/neutron/db/migration/alembic_migrations/versions/HEAD @@ -1 +1 @@ -327ee5fde2c7 +3b85b693a95f