summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVishvananda Ishaya <vishvananda@gmail.com>2012-02-02 13:04:29 -0800
committerVishvananda Ishaya <vishvananda@gmail.com>2012-02-02 13:04:29 -0800
commit723cbc762a5e1d8d53e7e30223ee701dd65bd61c (patch)
tree500502b439130584a26b26cbfd07cd857622dfb7
parented516883faca1976acd6e5a9476d447d39e11ab9 (diff)
downloadnova-723cbc762a5e1d8d53e7e30223ee701dd65bd61c.tar.gz
nova-723cbc762a5e1d8d53e7e30223ee701dd65bd61c.tar.xz
nova-723cbc762a5e1d8d53e7e30223ee701dd65bd61c.zip
Fixes uuid lookup in virtual interfaces extension
* Makes virtual interfaces get the instance and pass it to network.api * Sends the id from the instance when looking up vifs * Repairs the tests * Fixes bug 925682 Change-Id: If25514246f30bfc983f26f7a8f1c35f33f8b9cc4
-rw-r--r--nova/api/openstack/compute/contrib/virtual_interfaces.py5
-rw-r--r--nova/network/api.py6
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_virtual_interfaces.py12
3 files changed, 19 insertions, 4 deletions
diff --git a/nova/api/openstack/compute/contrib/virtual_interfaces.py b/nova/api/openstack/compute/contrib/virtual_interfaces.py
index e8da23c00..9cf31e669 100644
--- a/nova/api/openstack/compute/contrib/virtual_interfaces.py
+++ b/nova/api/openstack/compute/contrib/virtual_interfaces.py
@@ -19,6 +19,7 @@ from nova.api.openstack import common
from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
+from nova import compute
from nova import log as logging
from nova import network
@@ -54,6 +55,7 @@ class ServerVirtualInterfaceController(object):
"""
def __init__(self):
+ self.compute_api = compute.API()
self.network_api = network.API()
super(ServerVirtualInterfaceController, self).__init__()
@@ -61,7 +63,8 @@ class ServerVirtualInterfaceController(object):
"""Returns a list of VIFs, transformed through entity_maker."""
context = req.environ['nova.context']
- vifs = self.network_api.get_vifs_by_instance(context, server_id)
+ instance = self.compute_api.get(context, server_id)
+ vifs = self.network_api.get_vifs_by_instance(context, instance)
limited_list = common.limited(vifs, req)
res = [entity_maker(context, vif) for vif in limited_list]
return {'virtual_interfaces': res}
diff --git a/nova/network/api.py b/nova/network/api.py
index 365a1d37b..257c642a9 100644
--- a/nova/network/api.py
+++ b/nova/network/api.py
@@ -91,11 +91,13 @@ class API(base.Base):
{'method': 'get_floating_ips_by_fixed_address',
'args': {'fixed_address': fixed_address}})
- def get_vifs_by_instance(self, context, instance_id):
+ def get_vifs_by_instance(self, context, instance):
+ # NOTE(vish): When the db calls are converted to store network
+ # data by instance_uuid, this should pass uuid instead.
return rpc.call(context,
FLAGS.network_topic,
{'method': 'get_vifs_by_instance',
- 'args': {'instance_id': instance_id}})
+ 'args': {'instance_id': instance['id']}})
def allocate_floating_ip(self, context, pool=None):
"""Adds a floating ip to a project from a pool. (allocates)"""
diff --git a/nova/tests/api/openstack/compute/contrib/test_virtual_interfaces.py b/nova/tests/api/openstack/compute/contrib/test_virtual_interfaces.py
index d9f41f07b..6885e929f 100644
--- a/nova/tests/api/openstack/compute/contrib/test_virtual_interfaces.py
+++ b/nova/tests/api/openstack/compute/contrib/test_virtual_interfaces.py
@@ -20,12 +20,20 @@ import webob
from nova.api.openstack.compute.contrib import virtual_interfaces
from nova.api.openstack import wsgi
+from nova import compute
from nova import network
from nova import test
from nova.tests.api.openstack import fakes
-def get_vifs_by_instance(self, context, server_id):
+FAKE_UUID = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'
+
+
+def compute_api_get(self, context, instance_id):
+ return dict(uuid=FAKE_UUID, id=instance_id, instance_type_id=1, host='bob')
+
+
+def get_vifs_by_instance(self, context, instance_id):
return [{'uuid': '00000000-0000-0000-0000-00000000000000000',
'address': '00-00-00-00-00-00'},
{'uuid': '11111111-1111-1111-1111-11111111111111111',
@@ -37,6 +45,8 @@ class ServerVirtualInterfaceTest(test.TestCase):
def setUp(self):
super(ServerVirtualInterfaceTest, self).setUp()
self.controller = virtual_interfaces.ServerVirtualInterfaceController()
+ self.stubs.Set(compute.api.API, "get",
+ compute_api_get)
self.stubs.Set(network.api.API, "get_vifs_by_instance",
get_vifs_by_instance)