Merge "Convert network/api.py uses of vif database functions to objects"
This commit is contained in:
@@ -59,7 +59,8 @@ class ServerVirtualInterfaceController(object):
|
|||||||
def _items(self, req, server_id, entity_maker):
|
def _items(self, req, server_id, entity_maker):
|
||||||
"""Returns a list of VIFs, transformed through entity_maker."""
|
"""Returns a list of VIFs, transformed through entity_maker."""
|
||||||
context = req.environ['nova.context']
|
context = req.environ['nova.context']
|
||||||
instance = common.get_instance(self.compute_api, context, server_id)
|
instance = common.get_instance(self.compute_api, context, server_id,
|
||||||
|
want_objects=True)
|
||||||
|
|
||||||
vifs = self.network_api.get_vifs_by_instance(context, instance)
|
vifs = self.network_api.get_vifs_by_instance(context, instance)
|
||||||
limited_list = common.limited(vifs, req)
|
limited_list = common.limited(vifs, req)
|
||||||
|
|||||||
@@ -143,23 +143,23 @@ class API(base_api.NetworkAPI):
|
|||||||
|
|
||||||
@wrap_check_policy
|
@wrap_check_policy
|
||||||
def get_vifs_by_instance(self, context, instance):
|
def get_vifs_by_instance(self, context, instance):
|
||||||
vifs = self.db.virtual_interface_get_by_instance(context,
|
vifs = objects.VirtualInterfaceList.get_by_instance_uuid(context,
|
||||||
instance['uuid'])
|
instance.uuid)
|
||||||
for vif in vifs:
|
for vif in vifs:
|
||||||
if vif.get('network_id') is not None:
|
if vif.network_id is not None:
|
||||||
network = objects.Network.get_by_id(context, vif['network_id'],
|
network = objects.Network.get_by_id(context, vif.network_id,
|
||||||
project_only='allow_none')
|
project_only='allow_none')
|
||||||
vif['net_uuid'] = network.uuid
|
vif.net_uuid = network.uuid
|
||||||
return vifs
|
return vifs
|
||||||
|
|
||||||
@wrap_check_policy
|
@wrap_check_policy
|
||||||
def get_vif_by_mac_address(self, context, mac_address):
|
def get_vif_by_mac_address(self, context, mac_address):
|
||||||
vif = self.db.virtual_interface_get_by_address(context,
|
vif = objects.VirtualInterface.get_by_address(context,
|
||||||
mac_address)
|
mac_address)
|
||||||
if vif.get('network_id') is not None:
|
if vif.network_id is not None:
|
||||||
network = objects.Network.get_by_id(context, vif['network_id'],
|
network = objects.Network.get_by_id(context, vif.network_id,
|
||||||
project_only='allow_none')
|
project_only='allow_none')
|
||||||
vif['net_uuid'] = network.uuid
|
vif.net_uuid = network.uuid
|
||||||
return vif
|
return vif
|
||||||
|
|
||||||
@wrap_check_policy
|
@wrap_check_policy
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ class ServerVirtualInterfaceTest(test.NoDBTestCase):
|
|||||||
|
|
||||||
compute_api.API.get(fake_context, 'fake_uuid',
|
compute_api.API.get(fake_context, 'fake_uuid',
|
||||||
expected_attrs=None,
|
expected_attrs=None,
|
||||||
want_objects=False).AndRaise(
|
want_objects=True).AndRaise(
|
||||||
exception.InstanceNotFound(instance_id='instance-0000'))
|
exception.InstanceNotFound(instance_id='instance-0000'))
|
||||||
|
|
||||||
self.mox.ReplayAll()
|
self.mox.ReplayAll()
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ from nova import test
|
|||||||
from nova.tests import fake_instance
|
from nova.tests import fake_instance
|
||||||
from nova.tests.objects import test_fixed_ip
|
from nova.tests.objects import test_fixed_ip
|
||||||
from nova.tests.objects import test_flavor
|
from nova.tests.objects import test_flavor
|
||||||
|
from nova.tests.objects import test_virtual_interface
|
||||||
from nova import utils
|
from nova import utils
|
||||||
|
|
||||||
FAKE_UUID = 'a47ae74e-ab08-547f-9eee-ffd23fc46c16'
|
FAKE_UUID = 'a47ae74e-ab08-547f-9eee-ffd23fc46c16'
|
||||||
@@ -103,39 +104,36 @@ class ApiTestCase(test.TestCase):
|
|||||||
def test_get_vifs_by_instance(self, mock_get_by_instance,
|
def test_get_vifs_by_instance(self, mock_get_by_instance,
|
||||||
mock_get_by_id):
|
mock_get_by_id):
|
||||||
mock_get_by_instance.return_value = [
|
mock_get_by_instance.return_value = [
|
||||||
{'network_id': mock.sentinel.network_id}]
|
dict(test_virtual_interface.fake_vif,
|
||||||
|
network_id=123)]
|
||||||
mock_get_by_id.return_value = objects.Network()
|
mock_get_by_id.return_value = objects.Network()
|
||||||
mock_get_by_id.return_value.uuid = mock.sentinel.network_uuid
|
mock_get_by_id.return_value.uuid = mock.sentinel.network_uuid
|
||||||
instance = objects.Instance(uuid=mock.sentinel.inst_uuid)
|
instance = objects.Instance(uuid=mock.sentinel.inst_uuid)
|
||||||
vifs = self.network_api.get_vifs_by_instance(self.context,
|
vifs = self.network_api.get_vifs_by_instance(self.context,
|
||||||
instance)
|
instance)
|
||||||
self.assertEqual(1, len(vifs))
|
self.assertEqual(1, len(vifs))
|
||||||
self.assertEqual({'network_id': mock.sentinel.network_id,
|
self.assertEqual(123, vifs[0].network_id)
|
||||||
'net_uuid': str(mock.sentinel.network_uuid)},
|
self.assertEqual(str(mock.sentinel.network_uuid), vifs[0].net_uuid)
|
||||||
vifs[0])
|
|
||||||
mock_get_by_instance.assert_called_once_with(
|
mock_get_by_instance.assert_called_once_with(
|
||||||
self.context, str(mock.sentinel.inst_uuid))
|
self.context, str(mock.sentinel.inst_uuid), use_slave=False)
|
||||||
mock_get_by_id.assert_called_once_with(self.context,
|
mock_get_by_id.assert_called_once_with(self.context, 123,
|
||||||
mock.sentinel.network_id,
|
|
||||||
project_only='allow_none')
|
project_only='allow_none')
|
||||||
|
|
||||||
@mock.patch('nova.objects.Network.get_by_id')
|
@mock.patch('nova.objects.Network.get_by_id')
|
||||||
@mock.patch('nova.db.virtual_interface_get_by_address')
|
@mock.patch('nova.db.virtual_interface_get_by_address')
|
||||||
def test_get_vif_by_mac_address(self, mock_get_by_address,
|
def test_get_vif_by_mac_address(self, mock_get_by_address,
|
||||||
mock_get_by_id):
|
mock_get_by_id):
|
||||||
mock_get_by_address.return_value = {
|
mock_get_by_address.return_value = dict(
|
||||||
'network_id': mock.sentinel.network_id}
|
test_virtual_interface.fake_vif, network_id=123)
|
||||||
mock_get_by_id.return_value = objects.Network(
|
mock_get_by_id.return_value = objects.Network(
|
||||||
uuid=mock.sentinel.network_uuid)
|
uuid=mock.sentinel.network_uuid)
|
||||||
vif = self.network_api.get_vif_by_mac_address(self.context,
|
vif = self.network_api.get_vif_by_mac_address(self.context,
|
||||||
mock.sentinel.mac)
|
mock.sentinel.mac)
|
||||||
self.assertEqual({'network_id': mock.sentinel.network_id,
|
self.assertEqual(123, vif.network_id)
|
||||||
'net_uuid': str(mock.sentinel.network_uuid)},
|
self.assertEqual(str(mock.sentinel.network_uuid), vif.net_uuid)
|
||||||
vif)
|
|
||||||
mock_get_by_address.assert_called_once_with(self.context,
|
mock_get_by_address.assert_called_once_with(self.context,
|
||||||
mock.sentinel.mac)
|
mock.sentinel.mac)
|
||||||
mock_get_by_id.assert_called_once_with(self.context,
|
mock_get_by_id.assert_called_once_with(self.context, 123,
|
||||||
mock.sentinel.network_id,
|
|
||||||
project_only='allow_none')
|
project_only='allow_none')
|
||||||
|
|
||||||
def test_allocate_for_instance_handles_macs_passed(self):
|
def test_allocate_for_instance_handles_macs_passed(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user