diff options
-rw-r--r-- | neutron/db/migration/alembic_migrations/versions/newton/expand/6b461a21bcfc_uniq_floatingips0floating_network_.py | 2 | ||||
-rw-r--r-- | neutron/tests/functional/db/test_migrations.py | 24 |
2 files changed, 24 insertions, 2 deletions
diff --git a/neutron/db/migration/alembic_migrations/versions/newton/expand/6b461a21bcfc_uniq_floatingips0floating_network_.py b/neutron/db/migration/alembic_migrations/versions/newton/expand/6b461a21bcfc_uniq_floatingips0floating_network_.py index 51009adbc2..8d674cd2c3 100644 --- a/neutron/db/migration/alembic_migrations/versions/newton/expand/6b461a21bcfc_uniq_floatingips0floating_network_.py +++ b/neutron/db/migration/alembic_migrations/versions/newton/expand/6b461a21bcfc_uniq_floatingips0floating_network_.py @@ -69,4 +69,4 @@ def get_duplicate_floating_ip_for_one_fixed_ip(connection): floatingips.c.fixed_port_id, floatingips.c.fixed_ip_address) .having(sa.func.count() > 1)).all() - return [q[0] for q in query] + return [q[0] for q in query if q[0] is not None] diff --git a/neutron/tests/functional/db/test_migrations.py b/neutron/tests/functional/db/test_migrations.py index e86ce6eed3..07b3c8a8da 100644 --- a/neutron/tests/functional/db/test_migrations.py +++ b/neutron/tests/functional/db/test_migrations.py @@ -398,7 +398,7 @@ class TestSanityCheck(testlib_api.SqlTestCaseLight): self.assertRaises(script.DuplicatePortRecordinRouterPortdatabase, script.check_sanity, conn) - def test_check_sanity_6b461a21bcfc(self): + def test_check_sanity_6b461a21bcfc_dup_on_fixed_ip(self): floatingips = sqlalchemy.Table( 'floatingips', sqlalchemy.MetaData(), sqlalchemy.Column('floating_network_id', sqlalchemy.String(36)), @@ -421,6 +421,28 @@ class TestSanityCheck(testlib_api.SqlTestCaseLight): self.assertRaises(script.DuplicateFloatingIPforOneFixedIP, script.check_sanity, conn) + def test_check_sanity_6b461a21bcfc_dup_on_no_fixed_ip(self): + floatingips = sqlalchemy.Table( + 'floatingips', sqlalchemy.MetaData(), + sqlalchemy.Column('floating_network_id', sqlalchemy.String(36)), + sqlalchemy.Column('fixed_port_id', sqlalchemy.String(36)), + sqlalchemy.Column('fixed_ip_address', sqlalchemy.String(64))) + + with self.engine.connect() as conn: + floatingips.create(conn) + conn.execute(floatingips.insert(), [ + {'floating_network_id': '12345', + 'fixed_port_id': '1234567', + 'fixed_ip_address': None}, + {'floating_network_id': '12345', + 'fixed_port_id': '1234567', + 'fixed_ip_address': None} + ]) + script_dir = alembic_script.ScriptDirectory.from_config( + self.alembic_config) + script = script_dir.get_revision("6b461a21bcfc").module + self.assertIsNone(script.check_sanity(conn)) + class TestWalkDowngrade(oslotest_base.BaseTestCase): |