summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorDan Smith <danms@us.ibm.com>2013-03-27 14:45:06 -0700
committerDan Smith <danms@us.ibm.com>2013-03-27 14:45:06 -0700
commit57689f26f37fe3de33a666a2d7d0731eae9c7ea9 (patch)
treefc5ef5fc6a079ae18a9963f7cfec201ed9ea88e4 /nova
parent0bf532237382360666499e4c568f0a161ff31afe (diff)
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
Diffstat (limited to 'nova')
-rw-r--r--nova/network/quantumv2/api.py3
-rw-r--r--nova/tests/network/test_quantumv2.py7
2 files changed, 9 insertions, 1 deletions
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