diff options
| author | Jenkins <jenkins@review.openstack.org> | 2011-12-09 06:15:48 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2011-12-09 06:15:48 +0000 |
| commit | aa7ca15fc1a7ca28de93ee194870fe6d5e77631b (patch) | |
| tree | b5cf57ac6d35f341c2dff8d80d6e20ddf8e32e77 | |
| parent | 435d6d8bb5d156eda65a502a610743e569f86173 (diff) | |
| parent | bca56ddb3dc931880fa32e23cff35debf7ab365c (diff) | |
Merge "Make QuantumManager no longer depend on the projects table"
| -rw-r--r-- | nova/network/quantum/manager.py | 15 | ||||
| -rw-r--r-- | nova/network/quantum/melange_ipam_lib.py | 9 | ||||
| -rw-r--r-- | nova/network/quantum/nova_ipam_lib.py | 11 | ||||
| -rw-r--r-- | nova/tests/test_quantum.py | 11 |
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( |
