]> xenbits.xensource.com Git - osstest/openstack-nova.git/commitdiff
Fixes uuid lookup in virtual interfaces extension
authorVishvananda Ishaya <vishvananda@gmail.com>
Thu, 2 Feb 2012 21:04:29 +0000 (13:04 -0800)
committerVishvananda Ishaya <vishvananda@gmail.com>
Thu, 2 Feb 2012 21:04:29 +0000 (13:04 -0800)
 * 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

nova/api/openstack/compute/contrib/virtual_interfaces.py
nova/network/api.py
nova/tests/api/openstack/compute/contrib/test_virtual_interfaces.py

index e8da23c00e31344c80885fc11b798a1322a0c181..9cf31e66905c903c06d72f7d7b1161f8a618a897 100644 (file)
@@ -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}
index 365a1d37b0c6ff1d86c95bdf418a2c4094447cb1..257c642a9e70d16023432ef80116ebc0822a82a8 100644 (file)
@@ -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)"""
index d9f41f07ba48e760b8d506692adbb277a508e5ef..6885e929f4a790fb5dab5b9e1dd5613c3dc86470 100644 (file)
@@ -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)