summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2011-12-09 06:15:48 +0000
committerGerrit Code Review <review@openstack.org>2011-12-09 06:15:48 +0000
commitaa7ca15fc1a7ca28de93ee194870fe6d5e77631b (patch)
treeb5cf57ac6d35f341c2dff8d80d6e20ddf8e32e77 /nova
parent435d6d8bb5d156eda65a502a610743e569f86173 (diff)
parentbca56ddb3dc931880fa32e23cff35debf7ab365c (diff)
Merge "Make QuantumManager no longer depend on the projects table"
Diffstat (limited to 'nova')
-rw-r--r--nova/network/quantum/manager.py15
-rw-r--r--nova/network/quantum/melange_ipam_lib.py9
-rw-r--r--nova/network/quantum/nova_ipam_lib.py11
-rw-r--r--nova/tests/test_quantum.py11
4 files changed, 16 insertions, 30 deletions
diff --git a/nova/network/quantum/manager.py b/nova/network/quantum/manager.py
index 62258d0c8..9b6741e92 100644
--- a/nova/network/quantum/manager.py
+++ b/nova/network/quantum/manager.py
@@ -97,10 +97,7 @@ class QuantumManager(manager.FlatManager):
networks = []
admin_context = context.get_admin_context()
networks.extend(self.ipam.get_global_networks(admin_context))
- projects = db.project_get_all(admin_context)
- for p in projects:
- networks.extend(self.ipam.get_project_networks(admin_context,
- p['id']))
+ networks.extend(self.ipam.get_project_networks(admin_context))
return networks
def create_networks(self, context, label, cidr, multi_host, num_networks,
@@ -149,16 +146,6 @@ class QuantumManager(manager.FlatManager):
"""
quantum_net_id = uuid
project_id = context.project_id
- # TODO(bgh): The project_id isn't getting populated here for some
- # reason.. I'm not sure if it's an invalid assumption or just a bug.
- # In order to get the right quantum_net_id we'll have to query all the
- # project_ids for now.
- if project_id is None:
- projects = db.project_get_all(context)
- for p in projects:
- if self.q_conn.network_exists(p['id'], uuid):
- project_id = p['id']
- break
if project_id is None:
# If nothing was found we default to this
project_id = FLAGS.quantum_default_tenant_id
diff --git a/nova/network/quantum/melange_ipam_lib.py b/nova/network/quantum/melange_ipam_lib.py
index 45d482a21..f699d1c46 100644
--- a/nova/network/quantum/melange_ipam_lib.py
+++ b/nova/network/quantum/melange_ipam_lib.py
@@ -127,8 +127,13 @@ class QuantumMelangeIPAMLib(object):
return self.get_networks_by_tenant(context,
FLAGS.quantum_default_tenant_id)
- def get_project_networks(self, context, project_id):
- return self.get_networks_by_tenant(context, project_id)
+ def get_project_networks(self, context):
+ try:
+ nets = db.network_get_all(context.elevated())
+ except exception.NoNetworksFound:
+ return []
+ # only return networks with a project_id set
+ return [net for net in nets if net['project_id']]
def get_project_and_global_net_ids(self, context, project_id):
"""Fetches all networks associated with this project, or
diff --git a/nova/network/quantum/nova_ipam_lib.py b/nova/network/quantum/nova_ipam_lib.py
index 9d25191da..72abe20c8 100644
--- a/nova/network/quantum/nova_ipam_lib.py
+++ b/nova/network/quantum/nova_ipam_lib.py
@@ -100,8 +100,13 @@ class QuantumNovaIPAMLib(object):
def get_global_networks(self, admin_context):
return db.project_get_networks(admin_context, None, False)
- def get_project_networks(self, admin_context, project_id):
- return db.project_get_networks(admin_context, project_id, False)
+ def get_project_networks(self, admin_context):
+ try:
+ nets = db.network_get_all(admin_context.elevated())
+ except exception.NoNetworksFound:
+ return []
+ # only return networks with a project_id set
+ return [net for net in nets if net['project_id']]
def get_project_and_global_net_ids(self, context, project_id):
"""Fetches all networks associated with this project, or
@@ -109,7 +114,7 @@ class QuantumNovaIPAMLib(object):
Returns list sorted by 'priority'.
"""
admin_context = context.elevated()
- networks = self.get_project_networks(admin_context, project_id)
+ networks = db.project_get_networks(admin_context, project_id, False)
networks.extend(self.get_global_networks(admin_context))
id_priority_map = {}
net_list = []
diff --git a/nova/tests/test_quantum.py b/nova/tests/test_quantum.py
index 19fa109b2..174c512db 100644
--- a/nova/tests/test_quantum.py
+++ b/nova/tests/test_quantum.py
@@ -193,12 +193,6 @@ class QuantumNovaTestCase(test.TestCase):
def setUp(self):
super(QuantumNovaTestCase, self).setUp()
- # Create an actual project -- with this we will touch more of
- # the code in QuantumManager (related to fetching networks, etc)
- for x in ['fake_project1', 'fake_project2']:
- values = {'id': x, 'name': x}
- project = db.project_create(context.get_admin_context(), values)
-
self.net_man = quantum_manager.QuantumManager(
ipam_lib="nova.network.quantum.nova_ipam_lib",
q_conn=FakeQuantumClientConnection())
@@ -220,11 +214,6 @@ class QuantumNovaTestCase(test.TestCase):
for fip_ref in result:
session.delete(fip_ref)
- def tearDown(self):
- # Clean up our projects
- db.project_delete(context.get_admin_context(), 'fake_project1')
- db.project_delete(context.get_admin_context(), 'fake_project2')
-
def _create_network(self, n):
ctx = context.RequestContext('user1', n['project_id'])
nwks = self.net_man.create_networks(