summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--neutron/db/migration/alembic_migrations/versions/newton/expand/6b461a21bcfc_uniq_floatingips0floating_network_.py2
-rw-r--r--neutron/tests/functional/db/test_migrations.py24
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):