diff options
| author | Vishvananda Ishaya <vishvananda@gmail.com> | 2012-02-02 13:04:29 -0800 |
|---|---|---|
| committer | Vishvananda Ishaya <vishvananda@gmail.com> | 2012-02-02 13:04:29 -0800 |
| commit | 723cbc762a5e1d8d53e7e30223ee701dd65bd61c (patch) | |
| tree | 500502b439130584a26b26cbfd07cd857622dfb7 | |
| parent | ed516883faca1976acd6e5a9476d447d39e11ab9 (diff) | |
| download | nova-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.py | 5 | ||||
| -rw-r--r-- | nova/network/api.py | 6 | ||||
| -rw-r--r-- | nova/tests/api/openstack/compute/contrib/test_virtual_interfaces.py | 12 |
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) |
