From c2a04c0444ae602f7cd72af75fdecf5bca2b05b9 Mon Sep 17 00:00:00 2001 From: Thomas Bachman Date: Mon, 18 Sep 2017 21:35:53 +0000 Subject: [PATCH] Added DB migrations fixup script The backporting of DB migrations requires additional work to ensure that DB schema is correct between the various upgrade paths. Change-Id: I07f403a6d145ae9d591f18c6bdf1ae4dbb27d594 --- ...60_ha_ip_address_to_port_id_association.py | 2 +- .../alembic_migrations/versions/HEAD | 2 +- .../versions/d978a7a73785_fix_migrations.py | 87 +++++++++++++++++++ 3 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 gbpservice/neutron/db/migration/alembic_migrations/versions/d978a7a73785_fix_migrations.py diff --git a/gbpservice/neutron/db/migration/alembic_migrations/versions/4c0c1e2c0160_ha_ip_address_to_port_id_association.py b/gbpservice/neutron/db/migration/alembic_migrations/versions/4c0c1e2c0160_ha_ip_address_to_port_id_association.py index a72c9c894..9545a58ee 100644 --- a/gbpservice/neutron/db/migration/alembic_migrations/versions/4c0c1e2c0160_ha_ip_address_to_port_id_association.py +++ b/gbpservice/neutron/db/migration/alembic_migrations/versions/4c0c1e2c0160_ha_ip_address_to_port_id_association.py @@ -20,7 +20,7 @@ Create Date: 2015-10-19 02:08:54.252877 # revision identifiers, used by Alembic. revision = '4c0c1e2c0160' -down_revision = None +down_revision = '27b724002081' from alembic import op import sqlalchemy as sa diff --git a/gbpservice/neutron/db/migration/alembic_migrations/versions/HEAD b/gbpservice/neutron/db/migration/alembic_migrations/versions/HEAD index fb1737bd1..cefabfaec 100644 --- a/gbpservice/neutron/db/migration/alembic_migrations/versions/HEAD +++ b/gbpservice/neutron/db/migration/alembic_migrations/versions/HEAD @@ -1 +1 @@ -4c0c1e2c0160 +d978a7a73785 diff --git a/gbpservice/neutron/db/migration/alembic_migrations/versions/d978a7a73785_fix_migrations.py b/gbpservice/neutron/db/migration/alembic_migrations/versions/d978a7a73785_fix_migrations.py new file mode 100644 index 000000000..dbd1a8ef4 --- /dev/null +++ b/gbpservice/neutron/db/migration/alembic_migrations/versions/d978a7a73785_fix_migrations.py @@ -0,0 +1,87 @@ +# Copyright 2017 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. +# + +"""fix migrations + +Revision ID: d978a7a73785 +Revises: 4c0c1e2c0160 +Create Date: 2017-09-18 17:34:18.856803 + +""" + +# revision identifiers, used by Alembic. +revision = 'd978a7a73785' +down_revision = '4c0c1e2c0160' + +import os +import sys + +from neutron.db import migration + +from oslo_utils import importutils + +from gbpservice.neutron.db.migration import alembic_migrations as am + +# This is a hack to get around the fact that the versions +# directory has no __init__.py +filepath = os.path.abspath(am.__file__) +basepath = filepath[:filepath.rfind("/")] + "/versions" +sys.path.append(basepath) + +DB_5239b0a50036 = '5239b0a50036_rename_tenant_to_project' +DB_bff1774e749e = 'bff1774e749e_ncp_sci_nf_status' +DB_c460c5682e74 = 'c460c5682e74_nfp_rename_tenant_to_project' +DB_da6a25bbcfa8 = 'da6a25bbcfa8_initial_qos_via_nsp' + + +def upgrade(): + ensure_5239b0a50036_migration() + ensure_c460c5682e74_migration() + ensure_da6a25bbcfa8_migration() + ensure_bff1774e749e_migration() + # remove the appended path + del sys.path[sys.path.index(basepath)] + + +def ensure_5239b0a50036_migration(): + if not migration.schema_has_column('gp_l2_policies', + 'project_id'): + db_5239b0a50036 = importutils.import_module(DB_5239b0a50036) + db_5239b0a50036.upgrade() + + +def ensure_bff1774e749e_migration(): + if not migration.schema_has_column( + 'ncp_node_instance_network_function_mappings', + 'status_details'): + db_bff1774e749e = importutils.import_module(DB_bff1774e749e) + db_bff1774e749e.upgrade() + + +def ensure_c460c5682e74_migration(): + if not migration.schema_has_column('nfp_port_infos', + 'project_id'): + db_c460c5682e74 = importutils.import_module(DB_c460c5682e74) + db_c460c5682e74.upgrade() + + +def ensure_da6a25bbcfa8_migration(): + if not migration.schema_has_table('gpm_qos_policy_mappings'): + db_da6a25bbcfa8 = importutils.import_module(DB_da6a25bbcfa8) + db_da6a25bbcfa8.upgrade() + + +def downgrade(): + pass