From 57689f26f37fe3de33a666a2d7d0731eae9c7ea9 Mon Sep 17 00:00:00 2001 From: Dan Smith Date: Wed, 27 Mar 2013 14:45:06 -0700 Subject: Fix quantum nic allocation when only portid is specified A simple omission at the end of allocate_for_instance() was preventing the function from returning information about the newly-allocated port if one was not actually allocated from a network (i.e. if it was provided as input). This fixes that and adds a test which would have caught it. Fixes bug 1160560 Change-Id: Ib0d7d91acfe5bd684cdfc072fe47c8115c2f91b3 --- nova/network/quantumv2/api.py | 3 ++- nova/tests/network/test_quantumv2.py | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'nova') diff --git a/nova/network/quantumv2/api.py b/nova/network/quantumv2/api.py index fe4f6586a..a23a119b8 100644 --- a/nova/network/quantumv2/api.py +++ b/nova/network/quantumv2/api.py @@ -289,7 +289,8 @@ class API(base.Base): # this only affects the attach case, not the original use for this # method. return network_model.NetworkInfo([port for port in nw_info - if port['id'] in created_port_ids]) + if port['id'] in created_port_ids + + touched_port_ids]) def _refresh_quantum_extensions_cache(self): if (not self.last_quantum_extension_sync or diff --git a/nova/tests/network/test_quantumv2.py b/nova/tests/network/test_quantumv2.py index be5d53455..991a0149a 100644 --- a/nova/tests/network/test_quantumv2.py +++ b/nova/tests/network/test_quantumv2.py @@ -514,6 +514,13 @@ class TestQuantumv2(test.TestCase): # port. self._allocate_for_instance(1, macs=set(['ab:cd:ef:01:23:45'])) + def test_allocate_for_instance_accepts_only_portid(self): + # Make sure allocate_for_instance works when only a portid is provided + self._returned_nw_info = self.port_data1 + result = self._allocate_for_instance( + requested_networks=[(None, None, 'my_portid1')]) + self.assertEqual(self.port_data1, result) + def test_allocate_for_instance_not_enough_macs_via_ports(self): # using a hypervisor MAC via a pre-created port will stop it being # used to dynamically create a port on a network. We put the network -- cgit