summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordanwent@gmail.com <>2011-08-28 20:00:38 -0700
committerdanwent@gmail.com <>2011-08-28 20:00:38 -0700
commit605fe4f19af3af830a2a8c82809e9ce5909c602d (patch)
tree2b4606262cd0af64ced427e7e830404e4f8cc0ed
parent716303049eaee59841ca4679d73ecb4e5be52cfd (diff)
restore fixed_ip_associate_pool in nova/db/sqlalchemy.py to its original form before this branch. Figured out how to make unit tests pass without requiring that this function changes
-rw-r--r--nova/db/sqlalchemy/api.py4
-rw-r--r--nova/tests/test_quantum.py11
2 files changed, 14 insertions, 1 deletions
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index 80ce76e8f..00af62682 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -688,8 +688,10 @@ def fixed_ip_associate(context, address, instance_id, network_id=None):
def fixed_ip_associate_pool(context, network_id, instance_id=None, host=None):
session = get_session()
with session.begin():
+ network_or_none = or_(models.FixedIp.network_id == network_id,
+ models.FixedIp.network_id == None)
fixed_ip_ref = session.query(models.FixedIp).\
- filter_by(network_id=network_id).\
+ filter(network_or_none).\
filter_by(reserved=False).\
filter_by(deleted=False).\
filter_by(instance=None).\
diff --git a/nova/tests/test_quantum.py b/nova/tests/test_quantum.py
index e7a8a01fa..3efdba910 100644
--- a/nova/tests/test_quantum.py
+++ b/nova/tests/test_quantum.py
@@ -17,6 +17,8 @@
from nova import context
from nova import db
+from nova.db.sqlalchemy import models
+from nova.db.sqlalchemy.session import get_session
from nova import exception
from nova import log as logging
from nova.network.quantum import manager as quantum_manager
@@ -238,6 +240,15 @@ class QuantumNovaIPAMTestCase(QuantumTestCaseBase, test.TestCase):
for n in db.network_get_all(ctx):
db.network_delete_safe(ctx, n['id'])
+ # I've found that other unit tests have a nasty habit of
+ # of creating fixed IPs and not cleaning up, which can
+ # confuse these tests, so we clean them all.
+ session = get_session()
+ result = session.query(models.FixedIp).all()
+ with session.begin():
+ for fip_ref in result:
+ session.delete(fip_ref)
+
# Cannot run this unit tests auotmatically for now, as it requires
# melange to be running locally.
#