summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorBrad Hall <brad@nicira.com>2011-12-08 04:30:45 +0000
committerBrad Hall <brad@nicira.com>2011-12-08 17:16:03 +0000
commitbca56ddb3dc931880fa32e23cff35debf7ab365c (patch)
treeb7149bb6e099f9af15dbe5a01a7000821877da26 /nova
parent5a84fd66db675d6ce99254f7c242d02a059a9024 (diff)
Make QuantumManager no longer depend on the projects table
Vish said that creating projects in a test is a no-no and that the QuantumManager shouldn't be relying on the projects table anyways (since they're now in keystone).. Change-Id: I4d5c28746d0d2b4a9aaf7feb0a38792473d16847
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(