fixes bug 911255 show on deallocated ip fails

Change-Id: I92d6ebc44414bc15989a4a9dd90acf24250d38fb
This commit is contained in:
Rajaram Mallya and Gavri Fernandez 2012-01-05 16:13:17 +05:30
parent f1091479c1
commit 14966a13f3
6 changed files with 28 additions and 4 deletions

View File

@ -644,6 +644,10 @@ class IpAddress(ModelBase):
def interface(self):
return Interface.get(self.interface_id)
@property
def virtual_interface_id(self):
return self.interface.virtual_interface_id if self.interface else None
@utils.cached_property
def mac_address(self):
return MacAddress.get_by(interface_id=self.interface_id)

View File

@ -38,7 +38,7 @@ class IpConfigurationView(object):
def _ip_address_data(self, ip):
return {
'id': ip.id,
'interface_id': ip.interface.virtual_interface_id,
'interface_id': ip.virtual_interface_id,
'address': ip.address,
'version': ip.version,
}

View File

@ -25,7 +25,9 @@ from melange.db import db_api
class BaseTest(unittest.TestCase):
def setUp(self):
#maxDiff=None ensures diff output of assert methods are not truncated
self.maxDiff = None
self.mock = mox.Mox()
db_api.clean_db()
super(BaseTest, self).setUp()

View File

@ -1313,13 +1313,19 @@ class TestIpAddress(tests.BaseTest):
self.assertEqual(ipv4.version, 4)
self.assertEqual(ipv6.version, 6)
def test_retrives_interface(self):
def test_retrieves_interface(self):
interface = factory_models.InterfaceFactory(virtual_interface_id="112")
ip = factory_models.IpAddressFactory(interface_id=interface.id)
self.assertEqual(ip.interface, interface)
self.assertEqual(ip.interface.virtual_interface_id, "112")
def test_virtual_interface_id(self):
interface = factory_models.InterfaceFactory(virtual_interface_id="112")
ip = factory_models.IpAddressFactory(interface_id=interface.id)
self.assertEqual(ip.virtual_interface_id, "112")
def test_mac_address(self):
mac_range = factory_models.MacAddressRangeFactory()
interface = factory_models.InterfaceFactory()

View File

@ -47,7 +47,7 @@ class ControllerTestBase(tests.BaseTest):
class DummyApp(wsgi.Router):
def __init__(self, controller ):
def __init__(self, controller):
mapper = routes.Mapper()
mapper.resource("resource", "/resources",
controller=controller.create_resource())

View File

@ -39,6 +39,18 @@ class TestIpConfigurationView(tests.BaseTest):
self.assertEqual(expected_ip1_config, ip_configuration_view.data()[0])
self.assertEqual(expected_ip2_config, ip_configuration_view.data()[1])
def test_data_returns_deallocated_ip_info(self):
block = factory_models.IpBlockFactory()
interface = factory_models.InterfaceFactory(virtual_interface_id="123")
ip = factory_models.IpAddressFactory(ip_block_id=block.id,
interface_id=interface.id)
ip.deallocate()
deallocated_ip = models.IpAddress.find(ip.id)
expected_ip_config = _ip_data(deallocated_ip, block)
ip_configuration_view = views.IpConfigurationView(deallocated_ip)
self.assertEqual(expected_ip_config, ip_configuration_view.data()[0])
def test_data_returns_route_info(self):
block = factory_models.IpBlockFactory()
interface = factory_models.InterfaceFactory(virtual_interface_id="123")
@ -57,7 +69,7 @@ class TestIpConfigurationView(tests.BaseTest):
def _ip_data(ip, block):
return {
'id': ip.id,
'interface_id': ip.interface.virtual_interface_id,
'interface_id': ip.virtual_interface_id,
'address': ip.address,
'version': ip.version,
'ip_block': {